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