Skip Navigation

Why is Matrix mentioned more often than XMPP in self hosted forums?

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?

102 comments
  • has many more options for clients,

    The problem of XMPP is here. These options are not uniform among the possible different combinations of servers and clients.

    The situation has improved a lot, but there was a point in time where saying "this is my XMPP handle" was far from enough to know if you'd be able to communicate with others, and you'd have to figure out things like:

    • Does the server support MUC?
    • Does the server support E2E? If so, which?
    • Are emojis supported on the server, or do they get converted to ASCII?
    • Can you use audio calls? If so, which codec?
    • If my client supports "share live location", what do you see on your end?

    Not to mention that until recently there was no decent XMPP client for iOS. Even today, the best alternative is siskin, which may have its vocal fans but quite frankly is pretty barebones and has a UI that would be considered ugly even in 2010.

    Matrix as a protocol is technically worse than XMPP and Synapse is a resource hog compared to Prosody and Ejabberd? Yes, true. But at least I can tell non-technical people to download Element from the App stores and they will have a consistently-not-great-but-acceptable-and-improving experience.

  • 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.

    1. Having a HTTP-based client-to-server protocol makes web clients very easy to make.
    2. 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.
    3. Having HTTP based protocols make hosting it familiar for many people.
    4. 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.

    • 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.

      I have a Prosody server running with about 10 concurrent users (friends/family). I just checked and it's using 32M of RAM, local storage is in the megabytes. The database I'm using as a backend for message history and such is about 70MB. The only other data is temporary cache for uploaded media, which varies depending on what's uploaded. How does that compare with a typical Matrix server for friends and family?

      • My Synapse install is using 94MiB of RAM and 500MiB of database disk space. CPU usage is effectively zero. I only have a 3 active users but decades of conversation history for myself (imported from other services). An uncompressed pg_dump of the data is about 250MiB which is within an order of magnitude of the raw text that I have in it. Nearly all of the conversations are encrypted so it wouldn't compress much.

        Given that just running python takes 13MB of RAM it probably isn't using many resources past loading the code. At least at small scale running a Matrix server is not a notable resource burden for most people. A Matrix server written in a more efficient language (like Conduit) would likely be fairly similar to an XMPP server written in the same language. Either way unless you are hosting thousands of users it doesn't seem like this is a major problem for either protocol.

      • How did you manage to convince friends and (especially) family to actually use Matrix? Quite impressive!

  • I've been an XMPP user for decades. I use it daily to talk to all of my friends and most of my immediate family, so I'm certainly an advocate for it.

    I think in the simplest terms Matrix gets mentioned more often because it's newer and it's development has largely been driven by a corporation with significant funding. XMPP had similar corporate sponsors years ago, but a lot of them moved on. The XMPP community isn't gone, though, and XMPP development has continued.

    As others have said, it's true that XMPP had some difficult issues in the past with various clients only supporting certain extensions (XEPs), which meant what worked on one client may not work on another. This problem isn't nearly as much of an issue nowadays, but it was frustrating in the past. There are official compliance suites that clients and servers can use to ensure they meet the base features for a particular purpose, so that has helped in that regard.

    To me, XMPP is preferable because it's a messaging protocol, not a giant graph database of all social interactions. I don't need or want that. The main XMPP server software does handle message history that is synced across all devices, but this is often user configurable and none of that information is needed by or shared with other servers. MUCs are not replicated across the network, but only exist on the server that hosts them. While this does mean that server is a single point of failure, it's much simpler to operate and, at least in my opinion, is better from a privacy perspective.

    Traditionally XMPP, albeit with propriety extensions, has been used as the basis for a large number of messaging platforms. Google Talk was XMPP. Facebook Messenger was XMPP. WhatsApp still is XMPP, as far as I know. Kik is also XMPP. Google and Facebook's platforms may still use XMPP, but I don't know for sure. It certainly works as a messaging platform for lots of users, but without all the VC money, development is pretty much only done by volunteers or client developers that offer paid builds of their clients (like Conversations on Android).

    • I am hosting both XMPP and Matrix now, and my main concern with Matrix is storage. I am afraid it would eat up the very limited disk space I have on my VPS. Conduit offers no built-in way to clean files up, and media is stored in a weird way that makes it a PITA to see which ones can and cannot be deleted. I now know that neither the database files nor the media can be just deleted.

      I sorta like the idea of a chatroom existing on more than one server, but that MUST have been opt-in or at the very least opt-out.

    • pidgin still doesn't support omemo

      • Pidgin's XMPP support hasn't been updated in more than a decade*. Please don't use Pidgin for XMPP! It lacks so much more than just not supporting e2ee via OMEMO.

        *apparently they recently started working on a full re-write of it for an upcoming version, but it is slow going.

  • 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.

  • 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.

    • Tinode is not XMPP/Jabber. It is not compatible with XMPP. It's meant as a replacement for XMPP.

      From their repo. it has AFAIK nothing to do with XMPP, they just use it as an SEO term.

  • 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.

    • WhatsApp is using a complete fork of the XMPP specifications and never had influence on XMPP. In the early days when Facebook messenger was using XMPP as a C2S interface they had a bit of influence but what you said used to be much more true for Google some years ago and what happened there is a major reason why people don't want Facebook to become influential in ActivityPub (which it isn't yet).

102 comments