Serverless and decentralized flat file chatting convention for users on a shared system. Comes w/ base implementation.
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Go to file
cmccabe 3ab1351774 Merge branch 'channels-redux' of sloum/gab2 into channels 3 years ago
.gitignore Reworks the way items are listed and improves keeping file permissions on chat logs 4 years ago Updates the readme to reflect the two new commands: [un]block 4 years ago
gab Reworking of some of cmccabe's ideas to mesh with some of sloum's ideas 3 years ago


This is the second version of gab. The original existed as a bash script and opperated off of a single chat log. This updated version creates individual logs in each users home directory. The permissions for these logs should be set up to be world readable but writable only by the user. The way the script is set up, writing to another user's log should be impossible.


-h, --help, help
Print the help message

-m, --msg, msg
Follow this with quoted text to add a message to the chat log
gab -m "This is a message"

-l, --list, list
View the chat log. Pass an integer for the number of recent posts you would like to view (defaults to 5)
gab -l 20

-b, --block, block
Block a user (you will not see their messages) by passing the user's name
gab -b username

-u, --unblock, unblock
Unblock a previously blocked user by passing the user's name
gab -u username


In order to keep gab reasonably snappy and reduce unneccessary file bloat, individual user chatlogs are limited to ~12kb in size. This is generally enough to have a solid backlog of text while letting ancient conversation naturally get forgotten (at least as far as the computer is concerned).

You may think to yourself: "hey, can I just edit my chatlog directly?" The answer is: yes. But in most cases you shouldnt. The program knows that it should not display any lines that are not formatted the way it expects. It also knows that the future has not happened yet and so you could not have said anything in the future. However, you could in theory get a timestamp for a future time to essentially schedule a comment, sort of? Times that it could be appropriate to edit a chat log include: correcting spelling from a previous post, changing what you said to either provide more accuracy or annoy your friends and win an argument of some form, or to delete a message. I think the best part about gab is that it is decentralized: you own your log and it is independent of program execution. As such, you have the right to remove stuff from it. You can unsay things, sort of (not from people's ears/eyes, but from being seen in the log again). This ability to be forgotten or to decide you no longer want something representing you has largely been lost on the internet and I am happy to have created something with this ability. Just remember, with great ability comes great responsibility (dont be a jerk and try not to be weird about how you edit your log).

Blocking/unblocking has been added in version 2.1. The hope is that on larger systems or systems with varried users that do not all get along harmoniously a user can prevent spam or aggressive (or otherwise obnoxious) users from appearing in their chatlog. This blocking can be undone at any time by issuing the unblock command. When a user gets unblocked any messages that were missed while they were blocked (that have not been wiped out by the ~12k file limit) will be viewable.