I’m looking into hosting one of these for the first time. From my limited research, XMPP seems to win in every way, which makes me think I must be missing something. Matrix is almost always mentioned as the de-facto standard, but I rarely saw arguments why it is better than XMPP?
Xmpp seems way easier to host, requiring less resources, has many more options for clients, and is simpler and thus easier to manage and reason about when something goes wrong.
So what’s the deal?
Xmpp is old and has no traction. Matrix is new and there are many people believing in it. There is a lot of money put on matrix. A lot of people want matrix to succeed. Especially companies, agencies and governments love matrix. Jumping on a train that already moves forward is easier than trying to push a standing train.
With xmpp, or signal I’ve got all my messages on my device. Distributing the info to other devices is difficult. With matrix everything sits on the server and distributes the info to the clients. That’s like my file cloud, or my photo cloud or my music server, or my document server. Everything is saved centrally on a server and all is independent of the consumer device. I can use multiple devices and everything sits on the server. That’s great for me as a user, it’s easy.
Xmpp is scattered which is great on one hand but matrix development is moving very fast. Xmpp can’t compete with that.
What’s the advantage of xmpp over signal for the end user?
I can use my published PGP keys with XMPP, for starters. And I can use OMEMO. Matrix supports neither afaik.
Wut
I don’t think you can pick out any one reason. XMPP is very old and has extensions for a huge variety of features. Many people have experience with older versions which had many major missing features (such as strong multi-device with offline support and server-side history) and a lot of the “hype” has died out long ago.
Matrix is new and made a lot of decisions that really helped its popularity.
- Having a HTTP-based client-to-server protocol makes web clients very easy to make.
- It is based on sync and merging rather than messages which moves some difficult problems (like multidevice and server-side history) into the core protocol meaning that it works well out of the box.
- Having HTTP based protocols make hosting it familiar for many people.
- The “default” Element clients have lots of features out of the box, features that for a long time were not always present on XMPP servers or clients. This gives a more consistent experience.
We will see what the history holds. Matrix is still very new and maybe the hype will die out and we end up moving back to XMPP. Or maybe something new. Overall I don’t think there are major fundamental differences. I think Matrix making graph sync the core primitive to build off of was a good idea, but in practice I don’t think it matters much.
You say that XMPP is much lighter. But I think that is mostly due to Synapse not being very efficient. Other implementations are fairly light. Even then my Synapse is using fairly small amounts of resources. You should also check that you are making an apples-to-apples comparison with large rooms, media and message history like you would typically see in a common Matrix server.
Google killed XMPP momentum. And while Matrix has many issues it needs to figure out, especially the development being almost exclusively supported by a for-profit company, they seem to slowly (very slowly) work towards more independence.
Matrix did some things right. Going with JSON spec instead of XML, having Element as uniform cross-platform client, offering bridges as a way to stay connected with your family and friends without needing to convince them to move (XMPP offers transports, but they function entirely differently) and offering end-to-end encryption by default.
XMPP in true open source fashion doesn’t have any uniformity from user perspective. Different ways to do the same thing on different clients, different clients on different platforms. That is a benefit for a savvy tech nerd, but it’s a huge inconvenience for a non-techie family member or friend.
Why is JSON better than XML? It’s more modern, sure, but from technical perspective it is not objectively better right? Not something worth switching protocols for.
You mention XMPP has transports as opposed to Matrix bridges. I thought they give you roughly the same outcome. What’s the difference?
The only things JSON has over xml is that it’s easier to write a parser for it and the format is less verbose and less complicated. There are extensions to JSON that can add features that xml has and the JSON spec doesn’t have. Overall the xml spec is bigger and has more features but that also makes it overkill for many of the cases that it would be used in.
Why is JSON better than XML? It’s more modern, sure, but from technical perspective it is not objectively better right? Not something worth switching protocols for.
XML is unnecessarily complicated. By trying to cram everything into the spec, it’s cumbersome and hard to parse.
You mention XMPP has transports as opposed to Matrix bridges. I thought they give you roughly the same outcome. What’s the difference?
The goal is the same, but the way they archive that is different. For transport to work, you need an account on each platform you are using the transport on. It relays the messages through that account by mimicking the client. While bridges work by relaying the messages between rooms and not specific users.
My understanding is limited, so if you are interested, please do your own research.
cumbersome to parse
Parsers have already existed for so long in every major language. Why need to worry about parsing?
And why need to worry about transports working differently if they achieve the same thing? They seem similarly convenient if I understood what you said correctly
Additionally, libraries for XMPP exist in most languages, there is a varying degree of completeness, but they all do a good job of hiding XML from the programmer
Show me a docker compose file which I can simply start and don’t have to mess around more than deploy it, and I will discuss xmpp more often.
Here is a docker compose: https://snikket.org/service/resources/docker-compose.yml
You only two configuration options in the config file: domain and email.
OK, I’ll give it a try. Thanks.
I’ve tried Snikket a few years ago. Nice project. 👍
I never tried hosting matrix because it was rumoured to be a bitch to host.
If the goal is to make a similar experience to discord, we should make a desktop/android client which changes the way the info is shown. I boil down discords main features this: 1-to-1 call/text, modern messenger features (emojis, text, audio, video, link embeds), servers with the option for channels and always on voice chats, group chats (weird overlap with servers). Always on voice chats should be as simple as disabling notifying or dialing members. Is it not just that simple to get a heavily reduced version of discord? Maybe noisetorch for noise cancelation.
deleted by creator
Matrix clients are simple, easy, and nice to look at. The matrix server might need more resources, but it comes with everything out of the box. There’s no need to fiddle with extensions and their weird naming, and hope that the other server/client also supports the extension. Also, are there bridges to other protocols?
I remember trying to get encryption working on Pidgin and it was all around a bad experience.
XMPP might be as powerful or more powerful than matrix, but nothing about it screams modern. It’s like IRC for Gen X’ers.
The anti AI license is so lame.
I think it has more to do with Matrix is kinda becoming the standard for secure open source messaging server but I do agree with you I would just use what works for you personally.
Tinode and Snikket should be discussed too. They’re server and clients, built upon XMPP and including the many extensions, “XEPs” that an admin would want in order to give their users a modern experience.
I’m going to throw this out there not being sure how true it is, but I find it interesting to think about.
XMPP is much more widely used than Matrix if you count WhatsApp (Meta/Facebook). ActivityPub is much more widely used than AT Protocol and nostr combined if you count Threads (Meta/Facebook). So reasons why people aren’t talking about XMPP include not wanting to recognize that Meta is hugely influential in this space and that most people don’t talk about the underlying protocols of the services and tools they’re use at all leaving a self selected group of people looking for alternatives with traction that don’t depend on Meta. Outside of WhatsApp, there’s not a lot of traction with any particular XMPP implementation. And none of the XMPP implementations have a Discord-ish organization of chat rooms that’s popular and familiar right now. Matrix has both right now (although I don’t think it will ever be more than a small niche in the mobile messaging space).
I’m fine with using Matrix for what it is. There are programming language communities that have been very helpful for me and a number of Lemmy related communities that have been nice to be a part of.
I’m not sure if you noticed this, but Matrix is newer. And, as Barney Stinson will tell you, “Newer is always hotter”.
STD: Shiny Things Disease.
They’ll find something newer soon. And, if it uses some loose install method with performance or security concerns but installs with a negligent
curl|sh
, they’ll be all over it.I’m trying out another extremely lightweight nostr relay
May be lightweight, but why there has to be one?
In order to ensure that my account’s historical data is backed up, I am worried that other relay servers will disappear or fail