I’ve been running a matrix server for about 2 years for family. It’s… ok. Clients are bad. Right now nobody on iOS can send images because there is a bug in fluffychat preventing it. Kinda defeats the purpose of a chat for sharing baby pictures. Synapse is a beast. It’s basically taken over my entire VPS.

Joining rooms of various FOSS projects has been nice, but honestly I wish they’d all just stick to libera.chat

This article makes me wonder why we collectively ditched xmpp for matrix when it seems like the protocol is still miles ahead?

I am genuinely interested in hearing why we collectively ditched XMPP. I would love to hear someone who has been in the weeds on the development or even just following closely.

Edit: Seems someone beat me to it with a good reply.

> I am genuinely interested in hearing why we collectively ditched XMPP

We didn't. It was never very popular, and is today more popular that it has ever been.

It wasn’t popular? I remember using pidgin to talk to friends on google chat, facebook and my work contacts. It was glorious.

I haven’t had a reason to use an xmpp client in over a decade.

Likely you do or have without knowing it. The protocol is used in telecom quite a bit for all sorts of things. Jitsi is built on XMPP. Lots of games use it for chat - league of legends and unreal engine I believe. Xmpp shows up in all sorts of places if you look.

Same! Pidgin was such a great piece of software

Pidgin is a multi protocol client. Not an XMPP client.

Depends if you mean just the technology or using it in the small federated spirit. Google Talk and Facebook Messenger were XMPP all the way through and worked with vanilla XMPP clients. Slack wasn't XMPP but supported it via a gateway until it was dropped.

Not sure how popular the small federation was back then, but I know Mac OS X Server touted an XMPP server and that was a first-class feature of iChat.

Facebook was also a gateway like slack, but not as good as slack's gateway.

Google Talk was real and federated XMPP before they killed the product.

Oh, I mean Facebook Chat not Facebook Messenger. Supposedly that was ejabberd.

> Google Talk and Facebook Messenger were XMPP all the way through and worked with vanilla XMPP clients

I remember this, it was great to connect to absolutely every chat platform with bitlbee and pretend that all my chats were just DMs on some irc server somewhere

Forgot to mention the original WhatsApp was ejabberd under the hood but ofc was heavily modified and didn't work with regular XMPP clients

XMPP had rather bad name. Well-known design issues causing message losses, fractioned ecosystem due to varying implementation of extensions, unsuitability for mobile clients, absence of synchronization between clients, absence of end-to-end encryption. Most of these issues were (much) later fixed by extensions, but Matrix (or Signal for those who do not require federated one) was already there, offering E2EE by default.

Even today, E2EE in XMPP is rather inconvenient compared to Matrix due to absence of chain-of-trust in key management.

Sometimes I wonder if the endgame is each person having their own XMPP server for their set of devices. S2S is your E2EE then. Your chain of trust is your existing CA, unlike Matrix which starts from scratch. Cause XMPP wasn't designed from the start for clients not to trust servers, plus the fragmentation of C2S extensions was always a pain.

It's not a bad solution if someone can make it easy, even if it's a managed service that just lets tech-savvy users export it to self-hosting if they want.

Google Talk support for XMPP: 2005-2013

Facebook Messenger support for XMPP: 2010-2015

Jabber.org support for new accounts: 1999-2013

First-class integration with two of the world's largest social networks put XMPP in practically everyone's hands for a time, but when all the major hosts left, network discoverability and typical account longevity dropped drastically. The landscape is bleak today.

And since then, our collective needs and expectations of a chat platform have expanded. XEPs have been developed to bolt much of that functionality onto the base protocol, but that has led to a fragmentation problem on top of the bleak server landscape.

This unfortunate situation might be navigable by a typical HN user, and perhaps we could guide a few friends and family members and promise to keep a server running for them, but I think the chances of most people succeeding with it are pretty slim today.

Facebook never had "first-class integration". It was just a client bridge - you could login into Facebook Chat using your XMPP client, but it was a completely separate network, unlike Google Talk which was an actual federating XMPP server.

Fair enough. (Although all the XMPP clients that I used supported multiple accounts, so it made little difference from where I was standing.)

In any case, it contributed significantly to XMPP's reach and utility, and it's gone now.

(And my point regarding support on Google/Facebook was that their users could chat with me over XMPP without having to leave their familiar sites, sign up for anything new, or do anything else special. That put it in easy reach of the masses.)

The same could be said about various XMPP transports that I've used back in the day with Google Talk to access all sorts of IM networks. Facebook was just running one on their servers rather than you running it on yours.

Ultimately they just briefly used XMPP to not have to implement their own desktop client for their closed proprietary network. It had nothing to do with network reach, unlike Google Talk which did actually bring XMPP to the masses for a while (and then took it away).

Decent overview (& more broadly but the heart is about XMPP & good ol’ capitalist corpo greed): https://ploum.net/2023-06-23-how-to-kill-decentralised-netwo...

We didn't. Big tech did, as XMPP broke down barriers so they lost their moats.

I.e. it worked too well.

> Clients are bad.

Yep. A friend ran an XMPP server for a while and the one person on iOS had a client that couldn't handle whatever encryption protocols the Android client supported, and the iOS client also choked on new certificates for the same domain (there was some way to accept it but the default behaviour was to just stop receiving). The killer that moved us to Signal was that someone got a new phone (something that had happened before without causing an issue) and the new phone could connect to channels but just saw nothing.

[dead]

> Two XMPP clients might support completely different feature sets.

This is of course true of Matrix as well. Just because you document everything in one place doesn't mean every app will support it all. Or that every app will even want to support it all. If every app were exactly the same there would be no point in having multiple apps, after all.

> The network effects of WhatsApp/Signal/iMessage are the real enemy, not protocol design.

Absolutely.

Don't know if it's still this way, but I had the exact same experience with the XEPs a decade ago. Even message history is an extension, but at least it has broad support. File transfer was much harder to get right.

The servers (ejabberd included) also all defaulted to a simpler but less secure config, so I would've appreciated a writeup like this post back then.