XMPP? Nice, but …
I keep on repeatedly promoting and suggesting people to take a closer look at XMPP for their messaging needs instead of falling back to “proprietary” and disputable (yet astoundingly widespread) messengers such as WhatsApp, and repeatedly I fail. And, from some point of view, I have to admit this “failing” doesn’t just happen because of WhatsApps user base being so extremely large. It also happens because, rudely speaking, while providing a load of technical advantages, XMPP is not at all anywhere near WhatsApp, Telegram, Signal or Threema from an end-user point of view. My background here: Professionally, I run an internal XMPP server (on top of openfire) for corporate instant messaging, server alert notifications and group chats for particular purposes. Personally, at some point I tried getting close contacts, family, relatives to use XMPP as a full replacement for any other messenger because I use an XMPP client on the desktop anyway and would like to cut down the amount of tools required for communication…
Insights, so far:
- Stability-wise, it works pretty well in the corporate environment with all users on the same server and hardly any communication to users on other hosts happening. In my personal experiments, biggest pain point was actually finding a stable, reliable XMPP host with an availability similar to any of the “proprietary” messengers. I do have accounts at most of what I supposed to be “larger” public XMPP servers (jabber.ccc.de, dukgo.com, and a few others), and looking at my XMPP clients, even just whether or not they do connect seems more a matter of luck than actually something reproducible. If using such a tool to communicate with closer contacts, I don’t want to see I can’t reach that very person because the XMPP server has (temporary) issues. But maybe so far I just haven’t found a server reliable enough for that; self-hosting is something I definitely don’t want to do here.
- Using multiple devices has proven to be somewhat messy compared at least to Telegram or Signal. I’m not sure whether my requirements are too complex here, but at the end of the day, all I want is being able to connect using a desktop client and one or more multiple devices and be sure I have all the messages available on all devices as well as am notified on incoming message on all devices. Using XMPP with mobile clients, I have seen quite some mess here, with messages ending up being displayed only on the phone and not on my desktop device as soon as both were “online”, and I didn’t find any working way to fix this. Still by now I disconnect my mobile client as soon as I’m on the desktop to make sure I do not miss any important notification (mostly on our corporate system). This sucks.
- All along these lines, the XEP standardization procedure and the amount of features provided by various servers makes things somewhat complex. For use cases as the one outlined above, it’s hard not to say impossible to figure out which clients and servers and server configuration to use to even remotely make it work. Though I am technically interested in what happens here, I want to be end-user when it comes to XMPP, I want things to “just work”. I don’t want to bother digging through client feature list and server specs to figure out whether the server is able to make sure not just one but all my clients have all the messages available. I’d just like to use this. And looking at XMPP I’m pretty far from that I guess.
- Same as with the server specs, client maturity and features greatly differ, and, as with e-mail clients, it seems not to come down to choose the best client but rather the one that sucks less. As an example, in our internal organization we use group chats to quickly transport messages across multiple users. In most cases I just want to be online in there and respond in case anything happens. As there’s pretty low traffic on these channels, I don’t want to have the group chat windows open all the time or even be forced to watch all these in order to not miss any important messages. As far as I learnt by now, being connected to a group chat without having a window open and being notified if new messages arrive seems close to impossible at least with the Linux / GNOME clients I tried.
- “Generally” speaking, XMPP seems to fall short, not to say fail, for anything else than text messages. And I consciously did write “generally” because I have absolutely no idea whether these are client issues, server limitations or anything in between. In some other messengers, I pretty merrily use to send around text messages, pictures or audio snippets or in some cases even smaller video clips. This mostly works. In XMPP, I *never* got this to work painlessly out of the box between two users using different clients on different servers. It just doesn’t work, same as desktop-to-desktop “file transfer” on the same server sometimes “just doesn’t work”, obviously depending upon which clients are involved. Same goes for end-to-end encryption (tried this even sitting next to one of my contacts when we tried to get OTR encryption “right” with different clients on different servers).
- Obviously an issue for people (compared to other messengers) and a result of the distributed nature of XMPP: Unlike, say, Threema or Signal which allows you to check whether some of your contacts already can be reached this way, XMPP completely leaves you clueless whether any of your contacts is somewhere on that network. This is good (from a privacy point of view) and bad (from a usability point of view, obviously). Maybe a load more people are somehow “on an XMPP compatible network” without actually knowing they are.
Overally, I don’t want to be all too negative about that technology. Most of the developers (of servers and clients) I’ve been talking to, so far, have been kind and helpful, and I also managed to get things at least somehow working for my setup by now. There’s Empathy for the GNOME desktop which, though not perfect, obviously not that much maintained right now and in terms of XMPP features way behind other clients, seems the only GNOME desktop client that comes close to my ideas of group chat notifications. There’s an excellent Android XMPP client named Conversations which is easily one of the best messenger apps out to date and so far has provided the smoothest user experience on my mobile devices. It’s apps like Conversations, too, and its maintainer who seems pretty active in the XMPP community, that make me hope to maybe see this gaining some more steam again anytime soon.
In the end, however, XMPP to me these days is pretty close to “alternative” social networks such as GNUsocial, Diaspora, …: While great in terms of technology, maybe privacy and stability, it is difficult to impossible to make it a “first” or even “only” channel used for communication. For that, it just massively lacks user base, and for that, it lacks something going beyond just providing technical excellence by also providing a straightforward, easy-on and *cough* product-like approach ready to team up against other messengers from WhatsApp to Signal: Come up with a reasonable set of technical features to be on par with what other services offer and users expect. Provide a stable, reliable server supporting those features. Provide preconfigured, working clients for all relevant platforms. Make it easy for users to get in touch with the people they care about. And maybe, though optional, not bad: Make it look and feel “good”. There are some signs this might be doable – Conversations is one of them, movim is another one, but asides this, that’s unfortunately still where XMPP falls awfully short, leaving a great technology fall behind inferior competitors…