Site for Conversations, an open source Jabber/XMPP chat client for Android, with posts on OMEMO encryption.
Commenters call it the best Android XMPP client, praise its early OMEMO encryption support, and value that it avoids lock-in.
Now gents, a number of you in the comments have wondered about what other alternatives are out there. You may have seen that I specifically advise against Signal, and other users have also expressed concerns about a number other applications, amongst which Wire and Telegram.
One that, to my knowledge has not been mentioned yet, but which would appear to meet some common measure of functionality versus convenience expressed here, is XMPP messaging application Conversations (https://conversations.im/).
I am not going to give it my personal recommendation because having tested it, I did not like a number of design decisions the developers have made, and I did not like their overall vision for the app. With that said, it's horses for courses.
On the end to end encryption front (all the rage these days, eh?), it appears that the Conversations devs have taken Signal's protocol and _done it right_. That means, they actually specced it (https://conversations.im/omemo/) and had it audited (https://conversations.im/omemo/audit.pdf), along with a couple important improvements such as eliminating the requirement for a trusted server or Google Play, which greatly reduces the attack surface.
Again, I personally do not like Conversations and I'm not going to use it myself--that's a personal preference thing, but kudos to the devs for doing a professional job, especially while everyone else are busy selling snake oil.
I say, go give Conversations a try, it may be the thing you were…
The problem of XMPP is just lack of good clients on some platforms, most notably for iOS. For Android there is an excellent Conversations.im client [0] that I've successfully use with my non-technical family and friends. (There is also Quicksy [1] that uses phone numbers for onboarding but it's XMPP all the way down). Conversations doesn't use a lot of battery (anecdata but it's 1% on my phone) and just works.
[0]: https://conversations.im/
[1]: https://quicksy.im/
As for servers ejabberd is successfully used from small deployments to big MMORPGs. The team is extremely focused on performance and from what they say XML isn't actually a big performance problem. Prosody, another server, is in my opinion also high quality, even though it's developed in free time (AFAIK).
The "myriad of extensions" is mostly solved problem due to Compliance Suites and automated testers [2] (think SSLLabs) that people use to get their servers in shape.
[2]: https://compliance.conversations.im/
For the record I've used Matrix for work too and it's not bad, the clients are decent (I've used web client), but it's not a revolution especially if one's contacts can use Conversations, that, in my opinion, is just very good.
Well, buffering that kind of stuff, is one of the more complex parts of an XMPP server (XEP-0013, XEP-0160, XEP-0280, XEP-0313). AFAIK IRC bouncers tunnel all the traffic and are not mobile aware. So to reduce battery usage, XMPP has some functionality within the protocol (XEP-0198, XEP-0352). So after optimizing your bouncer approach you will probably come up with what XMPP does (more or less, maybe with a few minor exceptions).
XMPP also knows how to do P2P connections (that is what 'jingle' is actually about, not just calls), but I think that the problems of P2P are actually the reason why there are still so many problems with XMPP calls. I mean if you want to build P2P that 'just-works' you will need STUN/TURN servers and while XMPP servers like ejabberd bring them with a standard installation, TURN servers require a lot of ressources (bandwith). At the same time the others parts of a XMPP server are very lightweight so that the TURN server causes scaling issues.
For anyone interessted in the matter I highly recommend taking a look at the 'conversations' website (https://conversations.im/#optimizations).
Although most of my friends prefer Matrix these days, XMPP is still my favorite way of chatting. You can easily run your own Prosody instance [1] on a $5/month VPS and have a very modern chat experience - offline messages, syncing between devices, OMEMO end-to-end encryption, group chats, push notifications, HTTP file upload, etc. My wife and I use it for all our communications.
There are some great clients for Android [2], iOS [3] and Linux/Windows [4] that support all the modern XEPs. Sadly, there aren't any mature, actively developed clients for OS X that I've found. Adium is pretty much abandoned. Monal is in active development though and seems promising.
It's so nice to use an open protocol with native clients. Most other self-hosted chat solutions require electron apps, which can be painful to use unless you have top of the line hardware.
[1] https://github.com/cullum/dank-selfhosted/blob/master/roles/prosody/templates/prosody.cfg.lua.j2
[2] https://conversations.im/
[3] https://chatsecure.org/
[4] https://gajim.org
XMPP used to have power consumption issues on mobile because of the constant TCP connection from the client to the server. There were also problems with network disconnections/changes on mobile for the same reason. XMPP uses TLS certificates for client to client and server to server connections and such things used to be a pain before Let's Encrypt for those hoping to run their own servers. The end to end encryption used to be OTR which tended to be a bit clunky to use in practice.
That was then. Those issues have been more or less fixed these days. XMPP is actually starting to look interesting again. For an example of a modern XMPP client (and discussion about the issues mentioned above) see here:
* https://conversations.im
I'm one of them, and I love it. Desktop clients are lagging in support compared to Conversations[^1] on Android, but even Pidgin can be flogged into an acceptable state[^2] - no video or audio though, I couldn't get that working, unlike with Prosody and Conversations[^3].
The thing with XMPP vs Matrix is weight: and XMPP server is featherweight compared to Matrix due to their different nature, so I honestly believe that XMPP still has a future.
(And maybe one day, Pidgin 3 will see the light[^4])
[^1]: https://conversations.im/
[^2]: https://github.com/petermolnar/awesome-pidgin-plugins
[^3]: https://gist.github.com/petermolnar/10d815eae0b7cbda2b1e5948db157d6a
[^4]: https://pidgin.im/development/building/3.0.0/