The communal chat room
So, Discord’s jumping the shark, kind of.
With their recent age verification shenanigans, my friends group and I have been thinking of alternative means of communication to replace Discord in the long run.
An initial best bet is to look at existing software and pick an option that doesn’t suck. We have considered many options internally, but those are not the point of this post, so I won’t list them all. icefox has a much better writeup than I’d ever do.
There is another idea that’s been brewing in my mind as of late though, which is what this post is about.
Let me set the background first. Our friends group is about 15 people in size, and we know each other pretty well. There are a couple technically-inclined people in the group, including myself.
With hosting a service like Matrix, the smart option would be to relegate handling hosting to at least two people. That way, if one is not available for maintenance duties, the other can step in and help out.
For most communities this is all well and good, but the problem with this approach is that every self-hostable open source app sucks in some way, and the only option to get it fixed is to contribute to the public repository.
For those that have never contributed to an open source project: that’s kind of a pain in the ass.
At best, in smaller projects like Stoat, reviewing your contribution will take a few days, and you will have to wait for several weeks, months, years, for a point release to land at your doorstep, depending on the project’s release cadence. You may be able to get away with pinning your server to a git commit, but that risks running into half-finished features or bugs.
At worst, in big projects with stable protocols, you will have to submit an RFC, wait until it’s accepted, then wait for all the major implementations to implement it—a process which can take several years. Reminder that the first Matrix proposal for custom emoji was opened in 2018, and they’re still not implemented—so much so that several clients have grown impatient and created their own non-standard implementations.
That’s kind of a difficult pill to swallow when your community is missing an important feature. Or is frustrated with a long-standing bug.
This is where I propose a different approach: the communal chat room.
The idea is that the community itself is responsible for developing the chat room it uses.
You start from a seedling of an app—something barely resembling IRC—and build out from here, feature by feature.
Spin up a private Git repository, and give unlimited push access to a couple folks who can program.
Host the chat room on a VPS that those same folks can access, to restart the server when an update is available.
I want to stress that trust plays an important role here. I’d want everyone to have unlimited access to the systems, because we trust each other to do no evil.
I trust that with just these tools, sensible rules will quickly form on how to push things to the live server. Things like, test before pushing. Request review for complicated changes.
The exact rules will vary from community to community, which is why I don’t wanna write them down here. The way things are done will vary depending on what kind of friends you have, so you’ll have to figure it out yourself.
An important matter to touch on is accessibility. Since it’s meant to be a community project, for people with varying levels of programming experience, keeping the codebase accessible should be a big priority.
Perhaps that means giving up on some shiny new language or library for your backend, and going with plain old verbose Go. Same thing with the frontend—maybe go with vanilla JS, since that’s the easiest to set up.
And of course, help each other when someone’s stuck.
I intend to give this a shot sometime in the coming months. I know this post doesn’t say much of anything concrete, but that’s because I don’t really have anything concrete yet… Just this seedling of an idea that seems cool.