Hacker News new | ask | show | jobs
by SamWhited 3562 days ago
I don't disagree that XMPP has problems, like anything, but having multiple federated protocols defeats part of the purpose of federation. Also, as far as I can tell, Matrix just carried over most of the same problems because they don't have 20 years of fixing edge cases and making sure things are scalable and easy. I'm not sure why plugins would be a pain; I'm sure making recommendations could be done better, but otherwise they're no more difficult to implement than the same things in the Matrix core spec. A fresh break is most cretainly not what's needed; we just need people to volunteer their time and effort and help make things better, not make up new protocols to compete with the old ones and make the messaging ecosystem more fragmented than it already is.
1 comments

sigh

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...

I get the 'different philosophy' part, but I don't understand why their list of 'problems with XMPP' includes things like 'second-class citizen', since Matrix itself is a second-class citizen compared to XMPP.

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 ;)

Yes, but Matrix being second-class to XMPP isn't inherent. Things in XMPP being second-class or requiring extensions is.
sigh

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.

The XEP which allows all clients that a user has open to actually receive messages has not even been accepted yet. Last Call was supposed to finish on 2015-08-28 - 11 years after the advent of XMPP - and the document hasn't been updated since. Many clients don't support it, including Pidgin, and at least the Prosody.IM server needs a "community module" to enable support for it.

XMPP is a pretty terrible user experience, tbh, and its developer experience isn't a whole lot better.

shrug

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.

> 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.

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"

Actually, that's pretty much what Racket did: Racket isn't a superset of Scheme, any more than Clojure is a superset of Common Lisp.

>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.