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:
- Whatsapp
- LINE
- Viber
- KakaoTalk
- Facebook Messenger
- Discord
- (...basically the majority of "Chat Apps" available on Google
Play today...)
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.