Edit: Found it:
https://github.com/ortuman/jackal#supported-specifications
Ejabberd in comparison: https://www.process-one.net/en/ejabberd/protocols/
It’s crazy how much stuff a mature xmpp server can do out of the box.
Incidentally, that one is missing from jackal's list. I wonder if that means that you can't set or see users' nicknames when using it?
I'm not entirely sure what use cases remain for XMPP in 2021 though.
With XMPP it's easy to get a server running on dirt-cheap hardware, maybe straight from your favorite distro's official repo (you have multiple choices of mature daemons for your server), and it has tons of clients and client libraries on every platform under the sun.
Basically if you want to serve an open protocol for chat, with all the ecosystem benefits one wants from a protocol (versus an ecosystem that's, at least so far, tightly coupled to an official implementation), XMPP's your front-runner.
(I'm omitting IRC because its ideal use-cases are different from XMPP's, so they're not exactly competitors)
XMPP is designed to be grown, to have new capabilities added, to be experimented with. XMPP was used to build Google Chat's video conferencing a long long time ago (Jingle) because it was the only sensible straightforward chat system out there built for extensibility, built to be grown on. XMPP has all manners of neat uses, from IoT to VPNs (EdgeVPN) to nearly anything else you could imagine.
A lot of people seem to like the authority & control & centralization of systems like Matrix, but to me, this consigns away the future for an easy convenience. It restricts what a thing might become. I value loose coupling, I value extensibility highly, and XMPP continues to be an evolvable, changing, enhancing set of technologies that stays relevant because Extensible leads it's design. It's something Matrix will not nor ever could compete with, and to me, it nearly certainly dooms some latter version of Matrix to obsolescence: there will come a point when the bad choices have added up, and no progress can be made.
Let's take a little case study example. XMPP itself faces a moment of crisis now, imo, with Multi-User-Chat (MUC), which is a very not good experience & technically crufty; a very early specification that has really obstructed chat rooms from being good & let Slack et cetera take over & dominate. There are some attempts to fix MUC but the tech underpinnings are, imho, bad. The good news? There is a much wiser, much better engineered alternative, MIX, that builds upon many of the other XMPP standards that have emerged over the years & stood the test of time. MIX is a way simpler, way better, way smarter way to do chat in XMPP. The ugly? There are nearly no clients that have implemented MIX. Not a lot of xmpp servers have implemented MIX. Trying to drive adoption of this thing necessary for XMPP to survive has been hard going.
But still, to me, even with this struggle, even with these huge pains, & a non-adapting future, I still think this case study hugely shows the need for Extensible systems. This is just one realm, one battle being fought, amid a system that made up of a bunch of different components. Matrix might be able to muster up the need for serious breaking changes, but my feeling is that the concensus based, forward moving innovation of Matrix will keep adding decisions & technical nuance & capabilities forever, and will likely never have the chance for redress & re-appraisal that XMPP by it's nature, by it's namesake, promises. XMPP can re-orient, learn, adjust. Nothing prevents Matrix, with it's monolithic , core-contributor-driven specification system from making radical changes, but they will forever lack the outsider perspective & autonomy that folks can bring to XMPP specification development. Matrix can't be the platform for a next-Google to build their next-chat VR platform on, because Matrix is not extensible, it's not a system of protocols: it's monolithic, it's top down, it's structured for linear, forward progress, not the free innovation that extensible systems are designed for. Matrix has many decades of wonderful innovation & advancement to go, but to me, it's already a dead end, it's already made it's bed, where-as XMPP will always have a freer hand to keep becoming more, freer hand to becoming something different, is always available for radical innovation (such as EdgeVPN, or IoT).
So many! The first obvious use-case is federated, encrypted instant messaging. The only two alternatives are delta.chat and Matrix. Former is pretty cool (everyone has email right?) but lacks good desktop clients, latter is pretty cool (decentralized rooms, "spaces") but server-side recommended software is resource-hungry (but conduit.rs is an ongoing alternative) and client-wise there's only one client that implements all features and it's a web client which is really bad for security and reasonable resource usage (here again alternatives are coming like Nheko).
The Jabber/XMPP ecosystem is more or less advanced depending on what features are of interest to you: PubSub-based microblogging has been standard for years, audio/video used to be a disaster but the situation has greatly improved with interop between major clients... while IRC-like IM stuff has been working fine and stable for almost two decades, a timelapse during most people had time to change addresses at least three times outside of that ecosystem (IRC -> MSN/AIM -> GChat/FBChat -> Whatsapp/Signal/Telegram -> Matrix/Briar/?).
So what's relevant about modern XMPP specifically? Account portability is being worked on as part of the Snikket project, and ActivityPub interop as part of the Libervia project. The former is a complete client/server XMPP distribution for easy selfhosting (no hard fork, only friendly forks contributing upstream), the latter is a library for building native XMPP clients (frontends) more easily which pioneered federated forging (to replace Github & cie) and is currently using itself for its own development.
So not everything is perfect and shiny but XMPP ecosystem is doing good after all those years. It's pretty easy to selfhost a server and get started. I just really hope we have more cross-protocol cooperation to promote interop between the different federated networks. It's a shame that some federated ecosystems don't value interoperability as a key feature.
I spent over 2 days learning what was out there and installing Prosody myself, followed by giving up and hiring a guy with experience to do it for me, and it took him a solid day (spread out over 3) to get the basic system set up and mostly passing the list of recommended XEPs on the compliance tool at https://compliance.conversations.im/. Then it took another week of fiddling around to get everything mostly dialed in. Then we realized that the XMPP clients on iOS were unusable in a business situation (can't navigate to find old group chats, notifications sometimes don't work, message history sometimes didn't work) and had to move to something else.
Federation is a nice feature, but the rest of it needs to work well enough across iOS/Android/browser to not drive people away.
XMPP is a great choice anywhere you want interoperable real-time communication between systems (either for person-to-person or machine-to-machine messaging). There are of course other choices as well these days, but all have trade-offs.
So if you want to, for example, chat with people in China and avoid WeChat it's a pretty solid choice. Or if you just want to avoid google services.
That said, the clients available on iOS are lacking features you would really need in a business context. Conversations on Android is pretty good out of the box.
How crazy is that?
> XMPP is the Extensible Messaging and Presence Protocol, a set of open technologies for instant messaging, presence, multi-party chat, voice and video calls, collaboration, lightweight middleware, content syndication, and generalized routing of XML data.
Click the link above for more detailed info