XMPP and Matrix are very similar protocols that aim to accomplish roughly the same things. I'm looking to install a server on my (quite powerful) home server in order to communicate with my tech-savy friends and my girlfriend.
I would like to use the "perfect" one between the two, but I can't come to a decision.
Pros of Matrix
- Has more functionalities (albeit as far as I know XMPP can do pretty much the same with its extensions)
- It is JSON-based which helps reduce overhead, not by much, but it's free lunch
- I can't set cryptography wrong since it's built-in
- Messages and conversations can be synchronized from other servers if mine goes down for a short while. Its state seems generally stronger than XMPP's
Pros of XMPP
- More lightweight
- Less metadata leaks and supports aliases in public MUCs
- It's more "open" (less centralized)
Which one would you pick? We don't need to shield ourselves against the CIA but I'm a privacy freak so I'd like to pretend we do. Thank you.
Well, Matrix is the newer one. But projects like Snikket look like a fresh breeze in the older XMPP ecosystem as well.
I don't think your comparison is entirely correct. You can mess up cryptography in Matrix. Or for some weird reason or bug, the first three messages in a room won't decrypt. It's rare but I had these things happen. I'd say it's acceptable, but not 100% perfect either.
I don't think messages synchronize from other servers. I could be wrong. But when my server is down, nothing synchronizes any more.
I think the reporting on Matrix' metadata leakage is overrated. You'll have any regular federated messenger forward metadata to connected instances. It's probably a similar situation for XMPP?! If you're worried about metadata, don't federate with other instances.
And with performance... Yeah, Synapse is kind of bloated in my opinion. Same with the most popular/official(?) client. Most XMPP servers and clients use way less. You could pick a project like Continuwuity however and run a Matrix server with way less resource usage than your average Synapse server. There's also many clients available.
Ultimately, I think they're both valid options. You'll get some mild annoyances either way. Matrix has some more features. But the landscape is scattered between clients as well and maybe they don't support multiple accounts, or message threads... Maybe they support the things you need. And with XMPP and its XEPs, it's a similar story. Though XMPP has been around for quite a while and a similar amount of stuff is supported in the established clients.