We all message people in some way, shape, or form every day. By messaging I mean any form of internet communication, direct or social. I have a personal preference for FOSS software and user control. The explicit goal of this post is to promote those ideas
First, we’ll look at completly Centralized messaging. This more or less has two forms: Closed Source and Open Standard. Closed Source is what we all think of when someone says centralized messaging (e.g: Discord, iMessage, Instagram, Twitter.) Open Standard is stuff like IRC — it’s a standard, but everything happens on a centralized server.
The issue with this is compatibility and control. I can’t message someone on Instagram from Twitter, or view tweets on Instagram and there is no potential of that happening. IRC is better, but you still need separate accounts on separate servers if you use it heavily.
The fix for this problem is what I like to call the self-hosted model. You have standards that allows different self-hosted (or public) servers to talk to each other, and any number of users have accounts on any number of those servers. Some examples of these standards include ActivityPub (aka the Fediverse), Matrix messaging, XMPP, and email.
These work using a method I like to call s2s (server to server). In s2s, the system is powered by a self-run node and you access a node via client. Most people don’t want to run nodes, so public nodes with multiple users are popular. This is great because it allows non-technical users to easily get set up with a freedom enhancing system. Until it isn’t, once you get a point where everyone uses the same node, the node operators essentially dictates the standard for everyone else. Most s2s systems never reach thit point. For example: E-mail has a good variety of public servers (though the popular ones are run by big tech). ActivityPub also has a massive variety of servers and server software that fill all kinds of niches.
For a node to be worth running, it has to be worth the set up cost and time. A self-hosted email or mastodon server is half a Saturday and it offers a lot of flexibility than you may or may not need (I run my mail server, but I use the SDF mastodon server for ActivityPub; I need the flexibility on my email server, but not on my social). If it doesn’t provide any real user befit to run a node, then companies will find a way to give it commercial use and nobody will bother fighting them.
s2s does have a bit of a spam problem. Anyone can set up a server people can use their servers to send spam or faked messages to you. Email combats this through a spam filter, it’s fine, it’s more of a band-aid and no one seems to have a better idea. Mastodon uses a list of federated servers that it pulls from, you can still follow anyone from any server, but stuff from malicious servers will stay out of your feed and DMs.
s2s is great, but p2p is better, it is more decentralized. It is harder to impossible censor and I belive it is best for user freedom.
An example of a pure p2p messaging app would be status.im (Not promoting it, it’s just the only one I’ve personally used) and the Waiku protocol (their also working on a protocol called VAC to replace Waiku). In theory, it’s fantastic. You send signed, encrypted messages through a network of nodes using a public key as an address. Even if their are malcioce nodes, they will not be able to read the messages and any modification will be detected by the receiving client. The technical aspect of this is interesting, but that’s not what this post is about, let’s look at the big issue with p2p
Like with s2s the big problem with a pure p2p system is spam, if a public room blocks a user (identified by a public key) they can simply generate a new public key and get right back to it. This is an email level of spam potential in public rooms, it has email-like problems, which is why I think it will take on a more email-like use.
This all leads to an idea of what messaging could look like, public groups run on services like XMPP, social media runs on ActivtyPub, and maybe private messaging can be completely decentralized. We’ll sacrifice a little centralztion for moderation of our personal, digital space. and where feasible go completely p2p.
In the end, the important thing is user control and avoiding centralization we have the technologies to do it, it just needs a push.
Thanks for reading, if you enjoyed the post please subscribe and follow me on Twitter and Mastodon