Five months ago, the ejabberd XMPP server dev team blogged that they were going to support Matrix.
While that hasn’t been committed to their “Community Edition” yet (and maybe won’t ever? Reading the comment section it seems like OMEMO/OLM conversion is kind if a tricky creature. But who knows what happens in the hearts of cathedrals), the post is still an enjoyable read for the snipes and jabs at Matrix:
Of course, by design, the Matrix protocol cannot scale as well as XMPP or MQTT protocols. At the heart of Matrix protocol, you have a kind of merging algorithm that reminds a bit of Google Wave. It means that a conversation is conceptually represented as a sort document you constantly merge on the server. This is a consuming process that is happening on the server for each message received in all conversations. That’s why Matrix has the reputation to be so difficult to scale.
Wikipedia corroborates this:
The Matrix standard specifies RESTful HTTP APIs for securely transmitting and replicating JSON data between Matrix-capable clients, servers and services. Clients send data by PUTing it to a ‘room’ on their server, which then replicates the data over all the Matrix servers participating in this ‘room’. This data is signed using a git-style signature to mitigate tampering, and the federated traffic is encrypted with HTTPS and signed with each server’s private key to avoid spoofing.
Holy heck. IRC, XMPP and email only have to worry about one message at a time on the wire. Matrix needs to sign & send the entire universe.
Anyway, I was thinking about that ejabberd announcment today, since I’ve been on a bridges kick, prompted by my newfound enthusiasm for XMPP, after finding out that Bitlbee can send multiple-line messages.
On Matrix’ old bridges blog post they list a bunch of categories of bridges, and mention in passing s2s bridges:
Server-to-server bridging
Some remote protocols (IRC, XMPP, SIP, SMTP, NNTP, GnuSocial etc) support federation - either open or closed. The most elegant way of bridging to these protocols would be to have the bridge participate in the federation as a server, directly bridging the entire namespace into Matrix.
We’re not aware of anyone who’s done this yet.
I agree that these are the most interesting bridges and it seems to me that that’s sort of what the ejabberd team set out to do.
Similarly, there is a project underway called Libervia that seems like it’s both an XMPP client and an ActivityPub / Fediverse server. Curious stuff.♥︎