2020-05-27 FriSBEe Server

A while back, I wrote[1] about standing up a micro-pubnix server that I called
rawtext.club (RTC) on an ultra-lightweight Linux VPS.  One of the themes of RTC
is learning through collaborative development of text-based programs.  The
gopher post you're reading now is an overview of one program I wrote recently:
friSBEe, a platform that you can interact with purely by sending in commands
over email.

friSBEe

The SBE in friSBEe stands for Service By Email, and that pretty much sums it
up.  friSBEe is a Python script that parses incoming emails and responds in
different ways depending on the to-address, the subject line, and the contents
of the email body.  It doesn't require any administrative privileges to run,
and only requires (for now) that you set it as executable in a normal user
account on a server running Postfix.  It leverages a nifty little trick in
which Postfix will deliver emails to a script for parsing rather than (or in
addition to) your inbox.

Why would anyone want this?  Well, I don't have a good answer for that.  I
started out just curious how easy it would be to write a script that was
triggered by incoming email; and then I added more and more features.  This was
one of those projects that sort of got out of hand.

And so I added features and features and features until friSBEe became a little
social platform riding on email.  You can send it an email with a command that
registers an account on the friSBEe system, and once registered, you can make
blog posts, read blog posts by others, read or post to a message board, send
and receive private messages with other users, follow a choose-your-own
adventure story, and use various other tools and commands.  All from the safety
and comfort of your own email account, wherever that may be hosted.

But all this happens via a centralized model, where friSBEe is installed on one
system (currently rawtext.club) and users interact with each other through that
central system.  The next step is to refactor friSBEe to support a more
decentralized use -- that is, to work in a model where each user hosts their
own friSBEe server, and structured interactions between users are supported by
modules enabled on their hosts.  

One of the original development goals of friSBEe (once the "can I do it?" phase
was over) was to make it as extendable as possible.  The main frisbee.py file
is easily extended by use of plug-in modules.  Current example modules include
the choose-your-own adventure story mentioned above and a order-by-email ascii
pizza parlour. 

I last touched the code around a month ago and merged in a commit from another
user a few weeks ago.  Otherwise, I haven't had the spare time I was hoping to
have for working on it.  If you are interested in playing with it, feel free to
read more and sign up for an account[2], or even submit a pull request if you
would like to help out adding more features[3].

rawtext.club status update

A more general update on rawtext.club, a sort of follow-up to post [1], is that
activity has gradually picked up and the system has been a lot of fun.  We
migrated from Debian to Arch a few months back, and are running a number of
services including email, web, gopher and xmpp.  But most fun is the programs
users have built.  Some were built directly on RTC, while others were built
elsewhere and installed or ported to RTC.  These include games, text editors,
an asynchronous chat application, a shell blogging (shlogging) convention, a
git-based message board, and many more (oh, and friSBEe, of course!).  We
haven't hit any system load ceilings yet, so feel free to request an account if
tinkering with code and learning about Linux interests you.

That's enough of an update for now.  I hope everyone out there in gopherland is
staying healthy and that cabin fever is the worst of your problems.  Don't
inject bleach and don't put lysol in your inhalers.  

--

[1] gopher://sdf.org/0/users/cmccabe/micro.pubnix.experiment
[2] https://rawtext.club/~frisbee
[3] https://git.rawtext.club/cmccabe/frisbee