Karam Assany's Blog

Comparison of Instant Chat Technologies

This is a comparison of today's publicly available chat technology, in terms of how much control you can have over your data. There are way too many applications, protocols and services that provide instant chat, so I'm going to rule out entire classes of those applications/protocols/services.

Libre vs. proprietary

Obviously I'm going to exclude chat technologies that are (or largely depend on) proprietary software. And the reason is simple: We want evidence, not promises.

While some proprietary software is source-available, and may allow you to build it yourself from source, there is definintely some limitation and considerable control over the user; imposed by the licensor. Libre software exists, folks.

Examples of largely proprietary chat applications:

Centralized vs. distributed

A centralized service has a single point of failure, and a single point of authority as well. All users of that service are entitled to said authority. This kind of services usually has its backend proprietary; it doesn't allow you to setup a backend, so that all users of that service are jailed in a single backend. That is, zero control over your data.

Examples:

On the other hand, a distributed service is a service whose backend is libre, which allows anyone to setup their own backend that they fully control. A bad effect o those services is that users in a given backend won't be available to another backend's users. This evidently big disadvantage discourages people from setting up backends, and instead, they sign up in an existing (usually the most popular backend so that they can be in touch with everyone. And if everyone suddenly decided to be autonomous and set up their our backends, just image how many accounts you have to register to be able to reach out everyone you want to talk to.

Examples:

Federation

To solve the problem of isolation in distributed services, we have to let individual backends to be able to communicate to each other. This is called federation, and is used in many communcational protocols, like ActivityPub and SMTP (email).

As far as I know, there are two major instant chat protocols that support federation, so we're going to do a one-by-one comparison.

XMPP vs. Matrix

There is a longstanding holy war between the advocates of both sides, mainly as a result of the XML vs. JSON "controversy." From Matrix.org's FAQ:

The whole area of XMPP vs Matrix is quite subjective. Rather than fighting over which open interoperable communication standard works the best, we should just collaborate and bridge everything together. The more federation and interoperability the better.
Nice shit, but no actual comparision. For a slightly biased, yet evidence-based comparison between the two protocols:
https://wiki.404.city/en/XMPP_vs_Matrix
I personally use XMPP because it's more mature and has tons of different clients for different platforms. The only good Matrix client is Element which is based on Electron.js, which in turn is based on Chromium. Proprietary shit no thanks.