Why is Matrix popular? Why isn't XMPP? - A man struggles with understanding alternative chat solutions.

  • 🐕 I am attempting to get the site runnning as fast as possible. If you are experiencing slow page load times, please report it.

Faggotdog Niggertail

Edgy Furnigger Overlord
kiwifarms.net
Joined
Jun 16, 2021
Without revealing too much, I'll say that I have experience running both of these protocols and using them, which will perhaps add some credit to my complaints. And yes, I'm fanboying and sperging out about chat protocols, bear with me please.

I hate Discord, and enough people hate Discord that they can already guess several potential reasons as to why. While some might be able to tolerate it, I cannot. I am a huge privacy and software nerd, and that comes with its downsides. So I don't have a Discord, nothing is tying me to use it, nothing is convincing me, but I still want to chat to people. There are open source instant messenging solutions, but in the end it really boils down to Matrix vs XMPP. Knowing how both of them work, I cannot fathom why people seem to be choosing Matrix over XMPP.

Matrix is like the C# of the C-family of languages, the special ed kid in the honor role class, the pineapple on desert pizza. Matrix and its users think they are the best thing around but its such a bloated protocol that is incredibly broken with implementations that are incredibly sad. Let me just dig into it.

1. Matrix isn't even open source. XMPP is.
Matrix is an open standard and will remain so. Element is changing the license for a few of their flagship software projects, not the Matrix protocol itself. Anyone can write a Matrix server or client, and have done so; several are listed on matrix.org:
Clients: https://matrix.org/ecosystem/clients/
Servers: https://matrix.org/ecosystem/servers/

The license switch is explained in this article:
https://techcrunch.com/2023/11/06/decentralized-communication-protocol-matrix-shifts-to-less-permissive-agpl-open-source-license/ The GNU Affero license is "less permissive" in that it requires anyone who releases an improved version of the software to make source code available. It is similar in spirit to the GPL. This prevents corps from developing proprietary improvements and extensions and keeping it to themselves. This is still considered an open source license.
I still think it's difficult to call it "open" when the protocol is so strict (see #3). I hardly consider it open then, it's more of just public. Original #1 below.

Matrix recently announced it went proprietary. Matrix, even before the announcement, wasn't even properly decentralized. Instances had to rely on "identity servers" for proper server communicaitons and identity validation. That Matrix Kiwifarms server? Yeah, the people behind Matrix know all about you. In a stark contrast, XMPP proudly claims that "no one" owns them, with incredible transparency and every single thing about their protocol being open source and decentralized.

2. The Matrix protocol is terrible. XMPP is great.
One of the things that really makes my eye twitch about Matrix is that every single communication happens through HTTP. Why? What purpose? Some of you less technically inclined might ask why this even matters. It matters because it's extremely inefficient and a terrible way to handle a chat of any kind unless it's only on a webpage. The thing is, the only connection Matrix makes is through an HTTP server (of its own or proxies) for both server-server talks or client-server. Matrix not only has to make a lot of requests through HTTP, but their polling (a way to keep the same connection alive) is done terribly. Every time your client or a server connects to the HTTP matrix server, it has to reauthenticate through cookies and headers. And all this so it sends a bunch of JSON through the body. In comparison, XMPP uses XML through TCP, with decent stream management. Just recording how much traffic Matrix takes to grab a simple chat versus XMPP is insane.

3. Matrix requires compliance. XMPP is flexible.
Matrix always talks to clients and servers with 100% support of any of its features. If a feature doesn't exist, the best-case scenario is nothing, the worst-case is your server crashes. Matrix fully expects every client and server to know and send everything it knows, with absolutely no way to request for feature support or disable anything. It's a flawed and closed protocol with nothing optional. XMPP has standards and only requires the basics to get it running, with negotiations happening for what the server and client support. Not only will XMPP not bombard your client with messages it doesn't understand, it's so flexible that you don't need an XEP (specification) for features. Psi has testing plugins with some games including Battleship that you can play with another user with this plugin, entirely within XMPP. It's made for all kinds of shit to be possible.

4. Matrix encryption is finicky. XMPP nailed it.
I couldn't use Matrix for long without my keys getting wonky, and having to keep a set of backup keys to decrypt any past message history was an absolute pain. It's evident this system that Matrix uses for "encryption" is incredibly flawed and unstable. XMPP did it the right way with its OMEMO. It works so seamlessly and is entirely optional. Each OMEMO key from you is generated per device, and you can choose to trust certain devices of your recipient. In all my time using XMPP, I've not had a single problem with OMEMO.

5. Matrix is incredibly resource hungry. XMPP could run on a toaster.
If there was one thing that told me "that is enough" for Matrix, it would be how much it uses in resources. No matter what server implementation you use, Matrix shits up a ton of files, loads junk into the database, and eats all your RAM and CPU. I don't actually have a clue on why this is but it is so frustrating. XMPP in comparison is damn efficient and runs well without any need to tweak settings. A Matrix server less active than an XMPP server takes up 2 full cores on an AMD EPYC, and about 2 gigabytes of RAM. XMPP takes up little to no CPU resources, has the smallest database I've ever seen, and my RAM has remained uneaten.

6. XMPP just works. Matrix cries.
This one is subjective, but I could never get Matrix to run stable for long. When it did run, it ran poorly, creating errors with other instances and refusing to communicate for no visible reason. I would have to restart the server frequently to fix any errors that cropped up for some reason. XMPP is a beast that seems like it could last an apocalypse. The only problem I've ever faced with stability on XMPP is when I fucked up certificates and all I had to do was replace them (without even restarting). The uptime on XMPP servers is insane, even with malicious actors trying to break it 24/7.


I could go on and on about the many cool XEPs XMPP has and how it's used in very serious industrial and enterprise systems compared to the shit handling of rooms in Matrix and how your public key is sent everytime you send a message but I think my primary points are made. Every FOSS nerd seems to love and use Matrix but it's so critically flawed and makes no damn sense as to why people are using it when it isn't even FOSS. XMPP on the other hand is so flexible, extremely open, incredibly well-matured and stable, and is truly FREE and OPEN SOURCE, but yet hardly anybody is using it. Just looking at the comparisons side-by-side on both protocols should tell you everything you need to know. My only theory is that people really don't know about XMPP or they think XMPP is dead thanks to Google Chat in like 2011(?).
 
Last edited:
There needs to be a desktop/mobile client that works like pisscord or people won't use it.
I disagree. Matrix works almost nothing like Pisscord and yet people use it. Voice and Video calls though do work, and there are desktop clients that support it, but they work better on mobile clients. Gajim is probably a good example of a decent (and Pisscord-looking) client.
 
Did Matrix really go proprietary? Damn.
 
I disagree. Matrix works almost nothing like Pisscord and yet people use it. Voice and Video calls though do work, and there are desktop clients that support it, but they work better on mobile clients. Gajim is probably a good example of a decent (and Pisscord-looking) client.
Interesting, I'll look into it as you say matrix is pig fucking fat and unstable. We need a FOSS discord.
 
Did Matrix really go proprietary? Damn.
I looked more into it to confirm and they went "less-permissive" because they were tired of other people making money and not them. Not proprietary, I misremembered. Still not a good look.
Interesting, I'll look into it as you say matrix is pig fucking fat and unstable. We need a FOSS discord.
The only thing missing is the idea of "channels", but I think it's fine for decentralized chats to keep with the rooms idea. Matrix just feels like a glorified IRC when it does it though, while XMPP and its flexible protocol gives it potential for more use.
 
1. Matrix isn't even open source. XMPP is.
Matrix recently announced it went proprietary.
Did Matrix really go proprietary? Damn.
I looked more into it to confirm and they went "less-permissive" because they were tired of other people making money and not them. Not proprietary, I misremembered. Still not a good look.
Matrix is an open standard and will remain so. Element is changing the license for a few of their flagship software projects, not the Matrix protocol itself. Anyone can write a Matrix server or client, and have done so; several are listed on matrix.org:
Clients: https://matrix.org/ecosystem/clients/
Servers: https://matrix.org/ecosystem/servers/

The license switch is explained in this article:
The GNU Affero license is "less permissive" in that it requires anyone who releases an improved version of the software to make source code available. It is similar in spirit to the GPL. This prevents corps from developing proprietary improvements and extensions and keeping it to themselves. This is still considered an open source license.

Matrix always talks to clients and servers with 100% support of any of its features. If a feature doesn't exist, the best-case scenario is nothing, the worst-case is your server crashes. Matrix fully expects every client and server to know and send everything it knows, with absolutely no way to request for feature support or disable anything. It's a flawed and closed protocol with nothing optional.
This has benefits, however. You don't have to worry that your client or server of choice will be unexpectedly missing key features.

5. Matrix is incredibly resource hungry. XMPP could run on a toaster.
This is not a feature of Matrix itself but the reference implementations. Synapse, written in Python, has a reputation as a hog, especially when federating. However, other projects such as Dendrite and Conduit do much better, although they're still in beta for now.
 
This has benefits, however. You don't have to worry that your client or server of choice will be unexpectedly missing key features.
This is terrible and for a protocol trying to become "the messaging protocol", unforgivable. It's not flexible, it doesn't give a shit about the server or the clients needs or wants, it just expects all of it to work. This is a horrible way to develop anything if you want it to be "open".
This is not a feature of Matrix itself but the reference implementations. Synapse, written in Python, has a reputation as a hog, especially when federating. However, other projects such as Dendrite and Conduit do much better, although they're still in beta for now.
Uh, did you read?
No matter what server implementation you use,
The alternate server implementations that exist for Matrix do not compare to the low-resource and stable XMPP servers. Prosody beats whatever server attempts Matrix nerds try to make.
 
I have a home server running on an old piece of shit Dell Latitude from 2008 and I cannot run Matrix on it since the only complete server implementation is so incredibly bloated. Perhaps Dendrite and Conduit could be comparable to ejabberd, but I doubt it. XMPP does everything that Matrix can do, but the only problem is that zoomies don't know about it, so there isn't any good desktop client that normies would be willing to use. Gajim is the only one that doesn't smell like total shit, but it is still mediocre. The Android and macOS/iOS clients are stunning, however.

Matrix isn't even open source.
This doesn't seem correct. Could you elaborate on this with some sources?
 
The madmen are writing an entire XMPP server in Lua, amazing. I wouldn't call any of them popular, maybe XML and the headache of working with it scares off potential hosters.
 
XMPP is great - in theory.

In practice, it took forever for OMEMO to work properly across multiple clients and the user experience is godawful if you're not an Android-only user using Daniel Gultsch's app.
Gayjim on Windows is awful (especially if you want support for calls - just forget it) and hosting Jitsi in parallel if you need voice or video is just silly. Something like Movim would seem like a reasonable alternative, if you didn't need to be a certified k8s wizard to even set up that thing properly.

Also, corporate users have been felted ever since Slack removed their XMPP support - ask anyone who works at a company with Cisco Jabber buy-in, their XMPP-based "enterprise solutions" are worse than what a ten year old could set up with ejabberd and a $10 VPS in Lithuania.

If someone sat down and actually created a usable port of something like Conversations for Windows, iOS, etc. - then you could make a genuine case for XMPP. No day sooner.

I leave you with this gem:
1707693631514.png


[1] https://theswissbay.ch/pdf/Gentoomen Library/Programming/JavaScript/Professional XMPP Programming with JavaScript and jQuery.pdf
 
In practice, it took forever for OMEMO to work properly across multiple clients and the user experience is godawful if you're not an Android-only user using Daniel Gultsch's app.
Gayjim on Windows is awful (especially if you want support for calls - just forget it) and hosting Jitsi in parallel if you need voice or video is just silly. Something like Movim would seem like a reasonable alternative, if you didn't need to be a certified k8s wizard to even set up that thing properly.
I am not too familiar with the history of OMEMO but coming from Matrix, it is perfect right now. Zero issues. The iOS app problem is known but anybody actually smart enough to use XMPP probably doesn't touch Apple so the iOS delima remains. I hate Gajim, but that is because I generally hate the single-window chat experiences. I want AOL, AIM, MSN, those classic interfaces. Psi+ isn't good with calls either. My alternative to that is just Mumble because I never want to turn on my camera anyhow. You could probably solve your call issues on Gajim if you properly setup a TURN/STUN server with your XMPP instance, which makes so much difference.
 
The iOS app problem is known but anybody actually smart enough to use XMPP probably doesn't touch Apple so the iOS delima remains.
The iOS problem was actually one of the things that stopped me from using XMPP at all. Matrix is shit, but at least I could host my own private server (tearing out any connections to matrix.org, riot, or vector that I found) and get my mother using it with her iPhone.
If there isn't a normalfag friendly way of using a good protocol you only get online spergs using it. I could host XMPP all I want, but without an iPhone app there isn't any way my mother would ever use it.
 
The iOS problem was actually one of the things that stopped me from using XMPP at all. Matrix is shit, but at least I could host my own private server (tearing out any connections to matrix.org, riot, or vector that I found) and get my mother using it with her iPhone.
If there isn't a normalfag friendly way of using a good protocol you only get online spergs using it. I could host XMPP all I want, but without an iPhone app there isn't any way my mother would ever use it.
Yeah, I'm still saying it's a problem but it's a problem because there aren't a lot of iOS XMPP users. People know it. The clients generally are lacking, but most aren't bad on the platforms actually used.

I actually found another plus over Matrix. XMPP is incredibly flexible, and its servers are modular. On my server, I have clearnet, tor, and i2p access all in one server, all interlinking and supporting everything. You cannot have this with Matrix (from what I know). You have to have multiple Matrix instances for each proxy and it can only connect through that proxy. That means clearnet can't connect to tor or i2p, i2p can't connect to tor and cleanet is proxies, and tor can't connect to i2p and clearnet is proxied. This is easy with a module for XMPP. With Prosody, it's so configurable, there is really nothing you can't do. All the Matrix servers I know of are pretty one-trick, do Matrix.

I need SneedChat (site chat) in XMPP. It's possible. Let me log into XMPP with my kiwifarms and join the stupid chats. Prosody even has native WebSockets.
 
Back