XMPP vs. Matrix
wiki.404.city
wiki.404.city
Matrix' federation isn't weak, Matrix.org just hosts the biggest node. If Matrix.org would disappear today, all that would be lost is users and chat for people on that node, the rest of the network would continue working as usual. A few friends of mine and me all host our own nodes, so we wouldn't even notice it, basically.
XMPP doesn't have this as all the big implementations are proprietary and incompatible.
The docs are often written from a JS perspective. For example, every mention of PBKDF2 talks about using "using SHA-512 for the hash function", but PBKDF2 uses a two-input PRF, usually an HMAC. What they mean is that it uses HMAC-SHA512, but I assume they keep saying "using SHA-512 for the hash function" because that's what the JS window.crypto.subtle API uses. [6]
Also, God the keys, so many keys. Keys used to encrypt other keys used to encrypt other keys, with different kinds of encryption and formats each time...
[1]: https://matrix.org/docs/spec/client_server/r0.6.1
[2]: https://spec.matrix.org/unstable/client-server-api/
[3]: https://matrix.org/docs/guides/implementing-more-advanced-e-...
[4]: AFAICT there is no stable version of [2]. [1] is not it; [1] and [2] have completely different content. Eg [2] explains how "m.secret_storage.key.<key_id>" events work, but this information is not present in [1].
[5]: As a concrete example, I've been working on deriving secret keys from passphrases for a few days, but it always derived the wrong key. I finally figured out why this morning - [3] implies the salt is base64-encoded but it's actually utf8-encoded, so I was decoding it incorrectly.
[6]: https://developer.mozilla.org/en-US/docs/Web/API/Pbkdf2Param...
Good warning on the JS stuff, I actually just started reading through the E2EE docs again to prep for my client, and I appreciate the heads up!
So if anyone's goal is to build a Matrix client that's actually useful, [2] is unavoidable.
Also, why is its encryption yellow? It's a solid design that's undergone paid independent review, based upon Signal's e2ee.
There's more, but I since editing isn't open to the public I don't suppose its worth expending more effort to fix and argue with.
No matter how open the development process.
Ultimately to advance Matrix you need to get the Matrix devs to check off on your work and it has to be built in to the Matrix protocol. The whole point of extensibility is permissionlessness & ability to work off core. For some reason Matrix advocates keep thinking they have some claims to say Matrix is extensible, and they're wrong.
This is really no different than for XMPP. XEPs are also centrally managed, and you are expected to implement any proprietary extensions outside of that process.
XEPs are different in that they are independent (except explicit depedencies) of each other & not a part of the core spec. If someone wants to start adding new transports, add Link Local xmpp: they can. Just write the XEP (XEP-0174).
Whatever custom event types & fields there are in Matrix, it has no where near this level of extensibility.
- Complains about no "authoritative and independent source" for a count of Matrix servers or clients or users, but I'm not aware of any such thing existing for XMPP either
- Cites WhatsApp and Zoom as XMPP implementations, which may or may not be true, but is pretty much meaningless w/o federation or the ability to use a different client
- As far as I can tell, it's not any harder to test experimental extensions to the Matrix protocol as it is to XMPP - the author makes up several extended forks of Matrix here that as far as I know, do not and have never existed
- Seems to regard corporate sponsorship as inherently suspicious, which seems at odds with citing WhatsApp and Zoom as proponents of XMPP
- They're right that Synapse is much more resource hungry than something like Prosody, but they exaggerate things to quite an extreme degree. I know of several successful Synapse deployments on Raspberry Pi, one hardly needs a "supercomputer"
- Seems to be very confused about how Cloudflare and Let's Encrypt work, there is nothing stopping you from using either or both or neither with both XMPP and Matrix
However, I would still take it over matrix for any kind of chat protocol if I was going to start a commercial service.
My impression of matrix is that its was a slack/IRC clone with the protocol tied partially to the webgui. I understand that lots of work has happened to try and change that.
But, given that whatapp can handle a ~10m connections on one server in 2014, I suspect that it can't be a difficult protocol to scale, compared to something that runs over websockets
I don't know about the current performance per server. I'm looking forward to seeing the Go and Rust implementations to compare performance :)
Personally if I wanted fast, high scale and secure authentication I'd either use oauth, or ldap. (ldap allows federation, oauth, not so much)
The XMPP column counts Google and Apple totals to reach 2 billion users, but that's just push notification use (and might not even be current information), not chat use. One could point at the 1 billion total from the XMPP instant messaging page that is also linked, but that is based entirely on Zoom and Whatsapp, neither of which interoperate. The one source further down detailing a large interoperable server has the population of that server approaching 900k accounts, and an order of magnitude active users.
Later, XMPP is dinged for having poor iOS support and poor video support, but Whatsapp and Zoom are on iOS. Do they count or not?
My present theory is the page is oriented towards getting people to put money towards supporting XMPP, rather than being purely pro-XMPP.
https://etke.cc developer is here. As the guy who setups matrix servers for customers I can tell you that a lot of information in topic link is a lie or controversial.
Example: Matrix is not extendable - seems the author didn't read any basic guide of Matrix protocol - you can and SHOULD extend it if you develop any new primitives and/or events. Even naming convention of matrix events encourages you to do that.
For future reference as a backup in case page is taken down