- 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 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(?).
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.
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 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.
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: