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?

  • rglullis@communick.news
    link
    fedilink
    English
    arrow-up
    43
    ·
    edit-2
    5 months ago

    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.

    • Derin@lemmy.beru.co
      link
      fedilink
      English
      arrow-up
      16
      ·
      edit-2
      5 months ago

      This is the correct answer, IMO.

      I loved using XMPP back in the day, but I struggled talking with people who weren’t on the same server as me because of spec and client variations.

      While Synapse is a resource hog, it (and Element) - to a certain degree - does the job. Can’t wait until sync v3 lands in the main server.

      The only issue I have is with one friend who insists on deploying his own version of Synapse, but can’t figure out coturn and - as a result - we can’t voice chat properly.

      Goddammit. Two steps forward, one step backward. 😅

      • helenslunch@feddit.nl
        link
        fedilink
        English
        arrow-up
        8
        ·
        5 months ago

        Funny I just launched Conduit this morning. Seems to work better than Synapse and is supposedly lighter.

        • Derin@lemmy.beru.co
          link
          fedilink
          English
          arrow-up
          7
          ·
          5 months ago

          Conduit sounds very exciting - but my synapse installation (and its concomitant database) is too old and big for me to make a switch to anything else just yet.

          But I’m hoping Dendrite will one day allow me to migrate over - I don’t like how one of my most mission critical programs is a Python program running out of a packaged venv. 😅

      • antsu@lemmy.wtf
        link
        fedilink
        English
        arrow-up
        3
        arrow-down
        1
        ·
        edit-2
        5 months ago

        Suggest your friend to give Eturnal a try maybe. I have it running on an Oracle free tier instance, and I use it daily to have video calls with my family using Synapse/Element (and Jitsi inside Element for group calls), and it works great. The documentation is very good too.

        Edit: this is my Eturnal config, for reference:

        eturnal: listen: - ip: "::" port: 3478 transport: udp enable_turn: true - ip: "::" port: 3478 transport: auto enable_turn: true - ip: "::" port: 5349 transport: tls enable_turn: true realm: turn.<MY_DOMAIN> tls_crt_file: /etc/letsencrypt/live/turn.<MY_DOMAIN>/fullchain.pem tls_key_file: /etc/letsencrypt/live/turn.<MY_DOMAIN>/privkey.pem tls_options: - no_tlsv1 - no_tlsv1_1 - cipher_server_preference

        And the compose file: services: eturnal: container_name: eturnal image: ghcr.io/processone/eturnal:latest environment: ETURNAL_RELAY_MIN_PORT: 49160 ETURNAL_RELAY_MAX_PORT: 59160 ETURNAL_RELAY_IPV4_ADDR: <REDACTED> ETURNAL_RELAY_IPV6_ADDR: <REDACTED> ETURNAL_SECRET: <VERY LONG RANDOM STRING> volumes: - ./eturnal.yml:/etc/eturnal.yml:ro - /etc/letsencrypt:/etc/letsencrypt:ro restart: unless-stopped read_only: true cap_drop: - ALL security_opt: - no-new-privileges:true network_mode: host

  • kevincox@lemmy.ml
    link
    fedilink
    English
    arrow-up
    25
    ·
    5 months ago

    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.

    • allie@lemmy.mbl.social
      link
      fedilink
      English
      arrow-up
      0
      ·
      5 months ago

      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?

      • kevincox@lemmy.ml
        link
        fedilink
        English
        arrow-up
        0
        ·
        edit-2
        5 months ago

        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.

  • BrikoX@lemmy.zip
    link
    fedilink
    English
    arrow-up
    23
    ·
    edit-2
    5 months ago

    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.

    • Cyclohexane@lemmy.mlOP
      link
      fedilink
      English
      arrow-up
      2
      arrow-down
      1
      ·
      5 months ago

      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?

      • BrikoX@lemmy.zip
        link
        fedilink
        English
        arrow-up
        4
        ·
        5 months ago

        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.

        • Cyclohexane@lemmy.mlOP
          link
          fedilink
          English
          arrow-up
          2
          arrow-down
          1
          ·
          5 months ago

          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

          • oldfart@lemm.ee
            link
            fedilink
            English
            arrow-up
            1
            ·
            5 months ago

            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

  • poVoq@slrpnk.net
    link
    fedilink
    English
    arrow-up
    17
    ·
    edit-2
    5 months ago

    Many people have not used XMPP in years or never and go by hearsay of outdated information.

    Matrix on the other hand had several million Euros of venture-capital to fund a marketing campaign.

    • rglullis@communick.news
      link
      fedilink
      English
      arrow-up
      8
      arrow-down
      2
      ·
      5 months ago

      several million Euros of venture-capital to fund a marketing campaign.

      Citation needed. Matrix was funded by Amdocs initially, then got investment from Automattic and has gotten some contracts from European Governments, but AFAIK there is no “VC investment” and there certainly aren’t “millions to fund marketing”.

      They do have better marketing than any XMPP developer, though. You basically don’t hear anything from process.one or the Prosody devs.

    • oldfart@lemm.ee
      link
      fedilink
      English
      arrow-up
      6
      ·
      5 months ago

      Thos, exactly this. Whenever I ask the question OP asked, it’s always some people who used some ancient client in 2008 and never bothered to try again. And then Matrix came to existence with their marketing and they happily started using it, even though it didn’t have any better features

    • Cyclohexane@lemmy.mlOP
      link
      fedilink
      English
      arrow-up
      5
      arrow-down
      1
      ·
      5 months ago

      This makes matrix even less attractive to me lol. But you’re right, that’s a very good point.

  • Samsy@lemmy.ml
    link
    fedilink
    English
    arrow-up
    9
    ·
    5 months ago

    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.

  • iso@lemy.lol
    link
    fedilink
    English
    arrow-up
    9
    ·
    5 months ago

    I don’t think XMPP is simpler than Matrix. With my insufficient knowledge; XMPP servers and clients have different standards. Some supports audio/video calls, some requires encryption while other maybe not etc.

    Matrix has a standard set of features and all software around it built for those features. TBH I find Matrix pretty instable lately tho.

    • taladar@sh.itjust.works
      link
      fedilink
      English
      arrow-up
      3
      ·
      5 months ago

      I was under the impression that there is only one Matrix server implementation. Standards are not really required in that situation.

      • farcaller@fstab.sh
        link
        fedilink
        English
        arrow-up
        9
        ·
        5 months ago

        There’s way more and I already tried three implementations while trying to get a set of features I need. It’s a wild west out there and the resource usage is way higher than e.g. hosting Prosody. Seemingly it has to do with chatrooms being a full mesh, but my single user server consumes about 700mb RSS and 2.4 gb VSZ which is kinda high.

    • henrikx@lemmy.dbzer0.com
      link
      fedilink
      English
      arrow-up
      4
      arrow-down
      2
      ·
      5 months ago

      XMPP servers and clients have different standards. Some supports audio/video calls

      And the same is true about Matrix lol

      • iso@lemy.lol
        link
        fedilink
        English
        arrow-up
        4
        ·
        edit-2
        5 months ago

        Yes, you can shoot me from there and you’re right but I don’t see much difference between Matrix clients. The experience is pretty common between them. Synapse is de facto standard.

  • onlinepersona@programming.dev
    link
    fedilink
    English
    arrow-up
    11
    arrow-down
    3
    ·
    5 months ago

    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.

    Anti Commercial-AI license

  • Lemongrab@lemmy.one
    link
    fedilink
    English
    arrow-up
    8
    arrow-down
    2
    ·
    5 months ago

    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.

    • allie@lemmy.mbl.social
      link
      fedilink
      English
      arrow-up
      0
      ·
      5 months ago

      I couldn’t find any decent XMPP clients that supported encryption and worked on both desktop and mobile without looking like they were made in 1995

      For Linux and Windows, gajim works very well and is easy to use. It definitely doesn’t have an interface from 1995. If you need something easier for people on Linux, dino is even more streamlined and is extremely easy to use. I think there was an effort to make a Windows build too, but I don’t know how far along that is or if they are still working on it.

      For Android Conversations is the gold standard. On macOS there’s Sikin and Monal, but I’ve never used them since I’m not a Mac or iPhone user. But all these clients support a wide variety of features including encryption.

      It also doesn’t seem to function well as a Discord-like replacement, since I don’t want a separate “group chat” for every single topic. I want a central hub where people can then join pre-existing channels like you can in Discord and Matrix.

      I’m not sure I follow you on this point. XMPP has had MUCs (Multi-user Conferences) which function similarly to chat rooms/IRC channels for a long, long time. The channels are accessible regardless of what server you’re on as long as your server is federating with the wider XMPP network. There’s even a searchable list of public MUCs at search.jabber.network covering a variety of topics. Most servers allow creating new channels if you want to start a new one, and anyone can join regardless of their server.

  • Decronym@lemmy.decronym.xyzB
    link
    fedilink
    English
    arrow-up
    3
    ·
    edit-2
    5 months ago

    Acronyms, initialisms, abbreviations, contractions, and other phrases which expand to something larger, that I’ve seen in this thread:

    Fewer Letters More Letters
    Git Popular version control system, primarily for code
    HTTP Hypertext Transfer Protocol, the Web
    IoT Internet of Things for device controllers
    VPS Virtual Private Server (opposed to shared hosting)
    XMPP Extensible Messaging and Presence Protocol (‘Jabber’) for open instant messaging

    4 acronyms in this thread; the most compressed thread commented on today has 8 acronyms.

    [Thread #699 for this sub, first seen 22nd Apr 2024, 03:05] [FAQ] [Full list] [Contact] [Source code]

  • adr1an@programming.dev
    link
    fedilink
    English
    arrow-up
    5
    arrow-down
    2
    ·
    5 months ago

    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.

  • corsicanguppy@lemmy.ca
    link
    fedilink
    English
    arrow-up
    4
    arrow-down
    2
    ·
    5 months ago

    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.

  • ericjmorey@programming.dev
    link
    fedilink
    English
    arrow-up
    2
    arrow-down
    1
    ·
    5 months ago

    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.

      • bob@lemmy.world
        link
        fedilink
        English
        arrow-up
        1
        ·
        5 months ago

        In order to ensure that my account’s historical data is backed up, I am worried that other relay servers will disappear or fail