@drq @njion I see Matrix has adopted everything from the XMPP ecosystem!

I was involved with XMPP 20 years ago. jabberd 2.0 was coming to replace jabberd as the reference implementation. New features were developed in jabberd 2.0, but it was missing a load of things that were in 1.x. Especially support for transports as plugins, so moving to jabberd 2.0 ended up running a separate instance of jabberd 1.x for each transport. Then, around the time jabberd 2.0 was able to actually replace jabberd 1.x, ejabberd suddenly became the reference implementation. Then a few years later something else did.

Meanwhile, there was no reference implementation of a client library, so every new protocol extension was prototyped on a different client and a different server. Google came along and just dumped an entire pile of things for file transfer, video and audio streaming (which were incompatible with the end-to-end encryption proposals) that they implemented in their clients and servers, and they controlled more than 50% of the total market so you either implemented them or gave up. Apple had their own extensions for serverless XMPP + mDNS but never published a protocol.