Rawtext.club's "gab" Script

2022-06-20

There's something interesting about smaller social communities of the tech-savvy using SSH and *nix to create social networks. They have none of the commercial aspects associated with large social networks (ads, tracking, algorithm-based feeds, etc.), but they also seem to tend to stay off the web, instead using SSH, Gemini, Gopher, and RSS.

I think the web is largely OK as is (though I admire Gemini quite a bit), but needs to be made easier for folks to run, like a vacuum cleaner or a car.

Take a look at the gab script for rawtext.club as an example. It's an entire chat service, with rooms, users, blocking/unblocking, in a single 356-line Python script. There are a lot of attributes of the problem that make such a simple approach possible:

  • Storage: available for each user, it's nothing more than creating a directory in the user's home directory to store the necessary files.
  • Permissions: the *nix filesystem has user permissions, so setting the right bits is all that's needed.
  • Identity: provided automatically via $USER and enforced by SSH keys.
  • UI: the commmand-line provides an existing UI that is already familiar.

This is neat! A chat service to serve up to several hundred users can be tiny and easily written by one person if it reuses existing components. What's interesting to me is that we don't have this for the web. Where is the reusable storage, permissions, identity, and UI to make web apps as trivial as CLI apps? I think web frameworks come close, and Parse/Firebase were exploring related ideas (making the backend highly reusable), but there might be room for a "cartridge" style of webapp that reuses storage (maybe sqlite), identity (maybe providing OAuth and password-based options), and UI (default layouts for standard views).

The value of this is not to power world-class services like YouTube or Facebook, but to power the neighborhood message board. It would be a beautiful thing if every town and neighborhood and family had their own system that did this. Fragmentation can be ok in an ecosystem with aggregators. Then one could use RSS to aggregate posts from all the interesting networks. I suspect this would be a much healthier outcome than the centralized services for a variety of reasons, but perhaps that's best discussed another time.

The gab script at rawtext.club