Matrix is good in theory, not in practice
799 words, 4 min read
Matrix is an open source and full-mesh federated chat protocol. It has one complete implementation, Synapse, that claims to be the "reference implementation". It has many problems, a lot of which will be explained further down in this post.
Spec
The spec is mostly fine. It has some strange things, such as all media needing to be proxied and the fact that encryption must stay on in a chat once it's enabled for the first time, but other than that it's mostly fine.
Software
This is where the real problem is. For software, we only have a few options:
- Synapse (reference implementation, only feature-complete one)
- Synapse Pro (Proprietary)
- Dendrite (""next-gen"", unmaintained)
- Conduit (Sucks in about every way when federating)
- Conduwuit (Creator is problematic, see previous, unmaintained)
- Grapevine (Good but not feature-complete yet)
- Various Conduwuit forks (none are notable yet)
Synapse
Synapse is by far the most used implementation, because for a while it was the only implementation and it is still the only complete implementation.
Speed
Synapse isn't very fast by default. After following a guide for "extreme tuning", this one went from ~4000ms s2s ping to ~400ms s2s ping. That's somewhere around a 10 times speed improvement.
Preformance
It's made in Python, so it's horrible on resource usage.
This screenshot is after the "extreme tuning" documented in the
previous section. Before, the RAM usage averaged 3-4GB.
Storage
Synapse also is not light on storage. Currently, the database is at 28GB, while Prosody is at 33MB.
Moderation
All moderation in Synapse is done through an API. There's no official
command line tool, no official UI, no official bot to moderate
within Matrix. Community tools do exist, like synadm
for a CLI,
Synapse-Admin for a web UI, and Draupnir for a Matrix bot. However,
all of these require trusting a third party to not have a backdoor.
Licensing
Synapse is dual-licensed with AGPL and propietary. No, this is not a joke. Because of this, it also has a CLA, so nobody under 18 can legally contribute without parental consent. (Does anyone over 18 even want to contribute?) This brings us to the next point.
Synapse Pro
Synapse Pro is a paid and propietary fork of Synapse. It has the code
of Synapse, although the workers for scalibility have been rewritten
into the Rust programming language. It also comes with an official
moderation UI, which looks far better than any of the other UI tools
that exist and a much better UX than Draupnir or synadm
. Not much
else is known about Synapse Pro, other than matrix.org uses it. (Yes,
the flagship server of an open protocol is running propietary
software.)
Dendrite
Dendrite was going to be the "next-gen" Matrix homeserver. At first, it was the most amazing thing in Matrix. It was fast, open-source, and actively developed. It would be the solution to p2p Matrix.
Now, it's anything but that.
It doesn't even support authenticated media, which was rushed out by Element after Matrix servers were being used to proxy CSAM.
Conduit
Many users set up a Matrix server running Conduit without knowing its problems. It's a buggy mess, and it only properly supports room versions 7 and newer, while claiming to support all versions execept version one. It doesn't even support basic things like verifying other users over federation with emoji, and it's famous for state resetting rooms. It's moderately fast though.
Conduwuit
Conduwuit, the second most popular Matrix implementation. It's dead, so it shouldn't be used in production anymore (or really, at all.) It has relatively usable moderation, through a Matrix bot built-in. It still had problems with state resets, and the creator was very immature. With at least one case, she disclosed a security vulnrability to the public instead of following basic respect and telling upstream. She bragged about fixing it, before even telling Conduit. She's also done things like banning users from her chats for disagreeing with her and banned entire servers from federating with the flagship server for running competing software like Grapevine.
Grapevine
Grapevine is another fork of Conduit. It has a slower development speed than Conduwuit did to avoid burnout, but it will hopefully turn out to be usable sometime soon. This one is running a Grapevine server, open by request.
Other stuff
There's a lot of other Matrix software not mentioned here, like Tuwunel, Construct (inactive), Telodendria (inacitve), continuwuity, and a whole lot more.
Alternatives
The only real alternative to Matrix is XMPP. Prosody is light, fast, and easy to set up. Things like Ejabberd are scalable. Whenever this one sets up the everypizza.im blog, it'll document how it installed and set up Prosody.