decentralisation - let's start with messaging

2017 Dec 05, by opal hart (PGP signature)

in lieu of the recent net neutrality talk, a mesh networking project started out of 4chan /g/ in hopes of building a better, open internet. I have always been interested in decentralisation, distribution, and peer-to-peer mesh, so I set up a wiki to aid in collaborationm, to showcase helpful documentation for new users, and to connect ourselves with other meshnet projects around the globe such as sudomesh and /r/darknetplan. best of luck to /g/ and to the other groups in achieving this goal for an improved internet.

I currently cannot contribute to the physical network itself, as I do not have the appropriate hardware, nor am I in any close proximity to anyone who would be interested in forming a local mesh with me. but I can still think about what could be the best software and protocols to use as replacements for current proprietary, trust-based systems. one of those things is messaging.

currently we have instant messaging such as Facebook Messenger, XMPP, and SMS; group messaging such as IRC, Slack, and Discord; voice chat such as telephony, Mumble, TeamSpeak, Skype; forums, Reddit, imageboards, NNTP; and E-mail. and of those, I personally want people to contact me over XMPP, E-mail, IRC, or SMS. that means I have four addresses I can offer someone and I have to rely on the assumption that the other person uses at least one of those protocols. already, this is a hassle, right? all these protocols and products offer certain solutions to issues in other protocols, so we're spread thin, and either we have to use them all or we have to cut ties with the people we want to contact. on top of that, we have several contact lists to keep up with, and overall it's just one big complication.


first off, why do we have so many protocols? what do they perform differently? why do people stick with them? I'll try to explain what sets each platform apart from the rest so we can gather an idea of what people want.

for messaging: SMS, XMPP, social networks (Facebook/Hangouts/AIM/Yahoo!), Discord,, IRC, and other services such as WhatsApp are prevalent. SMS has origins from the phone network as a result of the rise of mobile phones, and now that many people have a phone number, it's no surprise why SMS is also in common use: everyone has it and it's practically free. social network and proprietary IM services have been around for ages, and people might stick with them because they've had accounts since the initial craze and because with some of them they can maintain a relative level of anonymity, since they don't have to use their phone number unlike SMS. or, they might stick with them because almost everyone today has a Facebook or Google account for social networking or mail, so as with SMS, everyone has it and it's practically free.

with IRC we see the introduction of easy-to-join group chats, as well as the idea of ephemeral identities. IRC is a simple yet robust protocol that allowed anyone to join with very little barrier to entry, choose whatever nick they want, and either join channels or talk in private queries with friends. because of its simplicity, it has achieved widespread adoption by the FOSS community, by governments and businesses, and by hobby groups. it has also been used as the backbone for several popular services such as Twitch and Pesterchum.

XMPP, Discord, and all come about at different times, but they all have a common theme: they allow easier use on multiple devices. XMPP and Matrix also have protocols for end-to-end encryption, and Discord has the added benefit of voice (and now video) chat. they are essentially the next level up of IRC, although they all cause as many issues as they try to fix. XMPP is poorly implemented, and because it uses (nonconformant) XML for its stream protocol, we see few people willing to actually create their own clients (as opposed to something like IRC where I can make a rudimentary client in my sleep if I wanted). there are so many XMPP extensions (see the XEP) and because of this, each client is more than likely only going to support their own portion of the available XEPs, creating a gradual divide between clients and essentially devolving the entire protocol to its bare basics, removing any perceived benefit it has over other simpler protocols such as IRC. Discord is proprietary, there are no plans to allow for privately-hosted infrastructure, there are no plans to open the Discord protocol, and apparently there are no plans even to fix most of the bugs regarding usability as well (at least, they haven't replied to my E-mails with anything hopeful yet). and then there's the new player, Matrix, which aims to become a federated (like XMPP) protocol with group chat (like IRC), message history (like Slack), and encryption (with double-ratcheting). too bad Matrix's implementations are slow and buggy, the specification relies on HTTPS and JSON (arguably not the best choice if you're signing and encrypting messages, or if you're sending any binary data because it all gets base64-encoded), and the whole air of it has a hint of unprofessionalism to me. they seem to value UX features such as in their official client, Riot, over security and performance fixes.