master
vilmibm 2020-05-20 04:19:49 +00:00
parent 458a1ba8cf
commit cef3ba0df1
1 changed files with 97 additions and 0 deletions

97
README.md 100644
View File

@ -0,0 +1,97 @@
# bustle
being an ambient activity feed for tilde.town
## development plan
- [ ] skeletal server
- [ ] skeletal client
- [ ] manually created proof of concept spool files for a few users
- [ ] basic `bustle update <something>` (decide on protocol)
- [ ] receiving client update
- [ ] writing audit log
- [ ] writing to bustle.log
- [ ] basic `bustle` command
- [ ] proof of concept inotify implementation
- [ ] bbj integration
- [ ] user management task
- [ ] event aggregation, sampling, and throttling
- [ ] ...honestly if you can even get to hear you can worry about what is next then.
## motivation
it's quiet. you've shelled into tilde.town but until you take one of the following actions you will have no idea what else is happening on the server:
- run chat
- run bbj
- run feels
all of these have different problems.
chat:
- it requires energy and social grace
- it might be empty; worse, it might /seem/ empty when you join
- it can get addictive
- it can get heated
- you don't see people that don't like chat. some of those people might be your new best friends.
bbj:
- the pace is slow
- it's hard to tell what conversations are already going
- admin can't figure out how to unsticky stuff
feels:
- the pace is slow
- it's read-only in that you can't respond to people
instead, what about a new command `bustle`:
```
$ bustle
you hear faint noise in the chat room
~endorphant is moving around in their home directory
~vilmibm just added to their public\_html
some things are knocking around on bbj
~selfsame just created a new file
there is a rattling sound in ttbp
someone shouts, 'HI WORLD'
~archangelic shouts, 'HELLO BACK'
```
## architecture brainpuke
I am not sure how to do this without a daemon process. Something needs to be listening to inotify
events, listening for shouts, and ready to receive API hooks.
### How should the daemon work?
- for shouts and bot integration, every user gets a file in /town/bustle/spool/. bustled does a select over every file. a scheduled task adds and removes spool files based on who exists on the system.
- for file activity, some kind of inotify watcher.
### How should user clients work?
when you run `bustle`, it enters a loop. at some interval, messages print. should a connection be
maintained with bustled waiting with recv? I don't think so, since the log is not personalized. what
if `bustle` is just a fancy `tail -f` on a file, `/town/bustle/bustle.log`? i think that's fine. i
want running bustle to be exciting and cute, animating the messages in various ways. someone who
just wants the log is free to read `/town/bustle/bustle.log`.
### How should API clients work?
I'd like to be able to report on irc, bbj, and feels events. feels can be a special case of just
users editing in their home dir, but bbj and irc are more special. i think to start those services
will just get a spool file like a normal user and then write to it programmatically. this will
require modification of bbj and hooking into an irc bot run as some user.