Matrix also builds on existing standards with decent libraries available for things like voice/video chat, and is web- and mobile-first. There's integration of arbitrary client-defined "push services" built into the protocol, which Riot uses to push events from a Matrix server through Google and Apple's cloud device messaging services to save battery, all without the Matrix server having to know the details of how those push systems work. Also, I can do web-based single sign-on through my CAS server, and all the variations of Riot handle it perfectly.
The Matrix developers have responded to this, explaining how Matrix is different from XMPP, and why they chose to write their own protocol.
https://matrix.org/docs/guides/faq.html#what-is-the-differen...
As parent said, XMPP covers all of these cases with plugins. The FAQ you link says, over and over again, "the base setup doesn't cover these features, but plugins do," and doesn't explain away writing improved plugins or XMPP spec extensions. All I see is "buttt it'ss haaaaarrdddd".
> Rather than fighting over which open interoperable communication standard works the best, we should just collaborate and bridge everything together.
Absolutely dripping with irony.
Matrix actually has a good point about the spec extensions though: if your spec is that minimal, nobody is going to be able to agree on what feature set to support. As a Schemer, I can attest to that.
>Absolutely dripping with irony.
As is your comment. Matrix made a different set of design tradeoffs, and is a legitimate protocol in its own right. And yet every time it pops up on HN, people complain about how we should all just use XMPP.
Screw that. XMPP isn't perfect, and there is room for a chat protocol that solves these problems in a different way.
If that were true, nobody would agree on which Matrix features to support either. What difference would it make if Matrix just-so-happened to be defined as "XMPP, plus the following extensions..."?
> As a Schemer, I can attest to that.
It's one thing to say "the Scheme spec is too minimal; I'm going to make Racket a hard dependency", it's quite another to say "the Scheme spec is too minimal; I'm going to invent my own Python derivative"
>If that were true, nobody would agree on which Matrix features to support either. What difference would it make if Matrix just-so-happened to be defined as "XMPP, plus the following extensions..."?
because some of Matrix's design decisions are fundamentally different from those of XMPP. also, the reason why everybody agrees about Matrix features is that they have no choice: there's a far larger base standard than there is for XMPP.
XMPP is a pretty terrible user experience, tbh, and its developer experience isn't a whole lot better.
They might as well list 'Can't talk via Skype' as a problem with XMPP, since it's just as true and Matrix is just as incapable of solving it.
As for 'requires plugins/extensions', if you think that's a problem then there's an easy fix: define a new protocol as "XMPP + the following extensions...". That requires some effort, e.g. to get servers and clients to support this new protocol, but unlike a "clean break" it wouldn't require much technical or social work.
I especially enjoyed the "no open source implementation exists" reasoning; no open source implementation of Matrix used to exist, but that didn't stop the developers ;)