[HN Gopher] IETF should keep XMPP as IM standard, instead of Matrix
       ___________________________________________________________________
        
       IETF should keep XMPP as IM standard, instead of Matrix
        
       Author : zaik
       Score  : 64 points
       Date   : 2022-01-16 19:25 UTC (3 hours ago)
        
 (HTM) web link (mailarchive.ietf.org)
 (TXT) w3m dump (mailarchive.ietf.org)
        
       | tommiegannert wrote:
       | Summaries, and my counter-arguments as someone who just replaced
       | XMPP with Matrix, and attempting contributions to Matrix code:
       | 
       | > [1] EVOLUTION AND NATURAL SELECTION:
       | https://en.wikipedia.org/wiki/Lindy_effect and a biology analogy
       | taken a bit too far. Extensibility and modularity are important.
       | Extensibility allows adding features, and modularity allows
       | removing features.
       | 
       | The last part sounds reasonable. The first part misses that
       | nature is constantly creating new variations that try to become
       | dominant. The Lindy effect suggests that older things stick
       | around. But in nature, they don't stick around for the sake of
       | age. They stick around because nothing better has out-competed
       | them yet. This analogy seems moot to me.
       | 
       | > [2] IGNORANCE: I think this kind of trend "Protocol ABC doesn't
       | have this XYZ feature, so let me start a protocol from scratch"
       | should be discouraged.
       | 
       | Yes, but this is a very shallow argument. The rest of the world
       | has advanced in terms of protocol infrastructure. We're on
       | HTTP/2, and playing with HTTP/3 [1]. IPv6 might actually happen
       | in my lifetime. Meanwhile, XMPP is one-long-XML-document-over-TCP
       | and requires custom tooling for everything. IM protocols don't
       | existing in a vacuum, and should be re-evaluated based on global
       | knowledge, not just IM protocol history.
       | 
       | > [3] FLEXIBLE DEPLOYMENT: IM platforms should be able to be
       | deployed as minimal as possible or as feature as possible.
       | Certain features should be able to be optionally enabled or
       | disabled, based on the needs of the deployer. If an activist
       | collective doesn't want to store any messages on server for
       | privacy purposes, it can be done by dropping the XEP responsible
       | for archiving. Matrix cannot do this.
       | 
       | For sure, modularity helps flexibility. Matrix is modular and
       | uses token strings in most places where extensions could occur.
       | https://spec.matrix.org/unstable/client-server-api/#modules
       | 
       | Aside from https://spec.matrix.org/unstable/client-server-
       | api/#send-to-... and https://spec.matrix.org/unstable/client-
       | server-api/#end-to-e... solving this rather strange concern about
       | archiving... The example that you can't drop archiving is silly
       | in the context of flexible deployment. Why does it matter whether
       | archiving is an extension or just a server setting? Someone had
       | to consider the configurability either way.
       | 
       | However, Matrix is essentially an append-only event store, so in
       | this particular example, yes, you wouldn't be able to disable
       | storing. It's fundamental to Matrix. You can of course prune
       | historical events, but that's not the intent. I feel the bigger
       | question "should an IM protocol be based on distributed state
       | replication?" deserves a better argument than "it's not
       | implemented as an extension." It provides other benefits, like
       | read markers and complete ordering of e.g. ACL changes in rooms.
       | 
       | ---
       | 
       | This seems to be many words, but not much insight into the
       | concrete merits of either of XMPP or Matrix.
       | 
       | [1] I'll leave chat protocols on the block chains out of this.
        
       | Arathorn wrote:
       | The whole "why didn't Matrix just build on XMPP?" thing is
       | incredibly tedious - you'd hope people would have got over it by
       | now.
       | 
       | It's like saying "Why have Canvas, when we already have SVG?". Or
       | "Why have NNTP, when we already have mailing lists"? Or "Why have
       | Git when we have Subversion"? Or "Why have Linux when we already
       | have BSD"?
       | 
       | The projects are _diametrically opposite_ in their most
       | fundamental ways - with the sole exception that they can both be
       | used for instant messaging. Just like SVG and Canvas both render
       | graphics, and NNTP  & SMTP can both be used for discussion
       | forums, and Git & SVN both manage source code. They have
       | completely different tradeoffs; one is not necessarily better or
       | worse than the other; they are just utterly different approaches
       | and can and should coexist based on folks' preferences and
       | requirements.
       | 
       | * Matrix is a decentralised conversation history replication
       | protocol, _not_ a messaging protocol. Architecturally it has no
       | concept of direct messages or store-and-forward messaging for IM;
       | instead everything is a group conversation with a conversation
       | history getting replicated between servers (and their clients).
       | Conversely, XMPP is a message passing system (although it 's true
       | you could layer a DAG-based conversation database on top in a
       | XEP, at the expense of compatibility with the rest of XMPP). It's
       | literally the difference between NNTP (Matrix) and SMTP+IMAP
       | (XMPP).
       | 
       | * Matrix is a single monolithic spec, defining precisely what
       | features exist for a given stable release. New features are
       | proposed as PRs to the spec (MSCs), often with competing options,
       | but only one gets ratified and merged. Conversely, XMPP is a
       | cloud of XEPs, with compatibility XEPs published occasionally.
       | 
       | There are obviously other differences (e.g. Matrix mandating E2EE
       | for private conversations
       | (https://matrix.org/blog/2020/05/06/cross-signing-and-end-
       | to-...), XML v. JSON etc) but the two points above are the
       | fundamental differences which mean that you wouldn't be able to
       | build Matrix on XMPP short of effectively creating a new protocol
       | - at which point you've effectively built Matrix anyway.
       | 
       | This said, there are also some similarities which often get
       | misrepresented or misunderstood:
       | 
       | * Both protocols are extensible. In Matrix, you can send any data
       | you like (just define a namespace and off you go), and extend
       | existing data with anything you like. You can also go wild and
       | define your own APIs, and room versions (i.e. dialects of the
       | protocol) under your own namespace. Matrix provides mechanisms
       | for backwards compatibility & fallback for clients (and servers,
       | in future) which don't speak your dialect. _However_ , it's
       | abundantly clear that when doing so you are going off piste
       | (although you're welcome to propose your extensions as a change
       | to the main spec).
       | 
       | * Both protocols are open standards, maintained by non-profit
       | foundations (https://matrix.org/foundation and
       | https://xmpp.org/about/xmpp-standards-foundation/). Both started
       | off being built by commercial teams (New Vector Ltd and Jabber
       | Inc respectively) before progressively shifting to an open
       | governance model.
       | 
       | Finally, the weirdest thing about this random IETF mailing list
       | post popping up from April 2021 is that I believe the IETF chose
       | to go with Zulip in the end: their tools team was freaked out
       | that Matrix was openly federating and replicating history from
       | non-IETF servers onto their instance (plus Synapse's admin UI is
       | lacking). On the Matrix side, our solution to this will obviously
       | be to work with the Zulip folks to get Zulip talking Matrix :)
       | 
       | (Disclaimer: i work on Matrix).
        
       | olliej wrote:
       | This post is rambling nonsense.
       | 
       | edit:
       | 
       | As a person said I should provide detailed rationale.
       | 
       | * It takes a large amount of text to set up a very poor and low
       | value analogy
       | 
       | * It doesn't say what features XMPP has that actually make it
       | superior to matrix
       | 
       | * It seems extrapolates from the fairly generic forward looking
       | "Imagine a world" that matrix was started from ignorance of the
       | existence of xmpp. A claim that is easily dismissed from any of
       | the development documents.
       | 
       | It has a few questionable follow on claims - basically dismissing
       | any form of encryption as being optional based on deployment
       | despite all current (in the last 10+ years) recognizing the
       | encrypting messages is a core requirement of any communication
       | system.
        
         | CameronNemo wrote:
         | _Please don 't post shallow dismissals, especially of other
         | people's work. A good critical comment teaches us something._
        
           | olliej wrote:
           | I have updated the comment with the explicit problems. I
           | still believe that the link post has near zero information as
           | it provides no actual facts to back up any statement. All it
           | says is "xmpp exists so it should keep existing because [hand
           | wave]", with a dash of pseudo-biology thrown in.
           | 
           | I feel I need to be clear here: I understand that simply
           | saying "this is nonsense" to an arbitrary post is not
           | reasonable, but it is also unreasonable to require a detailed
           | teardown of posts that are nothing but nonsense. Requiring
           | such work is a bedrock of scammers, pseudo-science, spammers,
           | etc as it makes it harder to stop them: if every response has
           | to be well thought out and cited eventually people give up,
           | and the posts go uncontended, which gives them the appearance
           | of relevance or legitimacy.
           | 
           | This post is a nonsense article. It contains no information,
           | it makes no actual claims beyond "we have xmpp so we should
           | continue to have xmpp", it is far too long for the actual
           | content, and the content that is there is largely hand waves
           | references to a badly made and incorrect pseudo-scientific
           | analogy.
           | 
           | This is the kind of post that _does_ deserve a dismissive
           | "this is nonsense" response.
        
       | Macha wrote:
       | Has IETF any policy about not having competing standards?
       | 
       | I mean, if XMPP is an IETF standard and IRC already existed,
       | surely they already have two. See also IMAP, JMAP and POP;
       | several routing protocols; TFTP, FTP and SFTP.
        
       | CameronNemo wrote:
       | I admittedly don't know much about XMPP, but I've heard that it
       | relies heavily on XML, which nowadays can be an offputting
       | serialization format. Is there a XEP for using JSON(schema) (or
       | even more dev-friendly formats like protobuf)?
        
       | paulcarroty wrote:
       | One solid argument: xmpp failed as big tech (Google, Facebook)
       | protocol and doesn't provide nothing radically better now: a ton
       | of protocol extensions and incompatible clients.
       | 
       | Matrix on rise: got a business with EU governments, deliver new
       | features (spaces), with voice channels probably will enter the
       | real rival stage with Discord/Slack.
        
         | TonyTrapp wrote:
         | > xmpp failed as big tech (Google, Facebook) protocol
         | 
         | Did it? They embraced it, made external XMPP clients being able
         | to interact with their own services, and then suddenly cut them
         | off. For all we know, they are still using XMPP internally,
         | they just don't federate anymore.
        
           | OrvalWintermute wrote:
           | I don't think xmpp failed.
           | 
           | Cisco has products based on it, and there is a wealth of
           | clients using it at my workplace. Many of our other partners
           | use it.
           | 
           | I see it as very complementary to IRC
        
           | Svip wrote:
           | They still do. I communicate through Bitlbee/libpurple's XMPP
           | client with friends on Google Hangouts (or whatever it is
           | called now).
        
       | sascha_sl wrote:
       | Surprisingly short text for how long it sets up an analogy with
       | little value.
       | 
       | The problem with XMPP has always been that it is too extensible
       | with too few guarantees in interoperability. You'll know what
       | this means if you ever set up OMEMO over 3 different client
       | implementations. It also does too much, anything from Kafkaesque
       | (pun intended) persistent pubsub to content labels. The quality
       | of clients is simply not good enough, so most XEPs end up in
       | specialized variants of clients or proprietary implementations
       | (Facebook, GTalk, EA Origin) that lean more on ejabberd's
       | scalability than other XMPP features like federation.
       | 
       | Also, XML is not a good serialization format, and some of the
       | requirements in the protocol are pretty exotic and not trivial to
       | implement in a lot of languages. Like setting up TLS on an
       | existing connection (plus the absolute refusal of the XMPP WG to
       | allow on-connect TLS). JSON over websocket or HTTP are just
       | better at reaching a wide audience of developers.
        
         | tannhaeuser wrote:
         | > _XML is not a good serialization format_
         | 
         | Indeed, but here we're talking about a text format for human-
         | human communication, something that markup languages (SGML,
         | XML) were made for.
        
           | sascha_sl wrote:
           | in my experience (working with academic data, JSON-LD), being
           | aggressively semantic and adding namespaces to your format
           | very rarely results in out of the box machine
           | interoperability, and picking the right format out of a bunch
           | being offered is always extra complexity on the side of the
           | developer. but most of the time you'll likely be writing code
           | specifically for one source of data.
           | 
           | this leads to such standards having a shadow de-facto
           | convention-based standard (e.g. everyone on the fediverse
           | plays nice with Mastodon, despite ActivityPub allowing for
           | things to be different).
           | 
           | if you need it, just versioning your schema is imo a much
           | better experience for developers
        
             | tannhaeuser wrote:
             | > _adding namespaces to your format_
             | 
             | Granted, in the case of XMPP (but I'm no expert here) they
             | might have overused namespaces with all those protocol
             | extensions (XEPs) using their own NS. XML namespaces are
             | one of the few additions on top of SGML and might've looked
             | like a good idea at a time when many new vocabularies were
             | expected, but they're controversial even among those who
             | introduced them. Eg consider the following key quote from
             | [1]:
             | 
             | > _On the one hand, the pain that is caused by XML
             | Namespaces seems massively out of proportion to the
             | benefits that they provide. Yet, every step on the process
             | that led to the current situation with XML Namespaces seems
             | reasonable._
             | 
             | [1]: https://blog.jclark.com/2010/01/xml-namespaces.html
        
         | eat_veggies wrote:
         | The reason that they needed to set up such a complicated
         | analogy is because they needed a way to justify a hand-wavey
         | fitness function of "extensibility/modularity" instead of the
         | much simpler and more useful "does this thing actually
         | survive?"
         | 
         | Despite (or, as you argue, _because of_ ) its adaptibility, the
         | answer to that question is empirically "no."
        
         | zanny wrote:
         | If XMPP and Matrix were based on the same protocol stack
         | arguments to keeping XMPP this whole time would have made
         | sense.
         | 
         | But they aren't. Matrix is http and json while XMPP is tcp and
         | xml. Protocol extensions to xmpp have added http transports -
         | but thats just wrapping non-http requests in http and making
         | processing harder.
         | 
         | I think a good comparison is X11 vs Wayland. X11 was
         | retrofitted with all the functionality Wayland has natively -
         | "why switch" is a legitimate question. But we will see in the
         | next 20-30 years how the maintenance burden of X protocol
         | legacy means we will see any new development using Wayland
         | because its so much easier to do. In the same sense, chat apps
         | will probably favor Matrix over XMPP because of the protocol
         | maintenance burden - even when drop in libraries exist that
         | implement XMPP, the inherent complexity makes them buggier,
         | slower, and requires a lot of developer nuance to get right and
         | its all due to legacy cruft you have to accommodate on an old
         | standard.
         | 
         | Its also like how more modern kernels stopped trying to be Unix
         | compatible. Trying to meet the POSIX standard in the 21st
         | century is kinda a waste of effort when a lot of it is
         | unnecessary. The model is sound, its just adhering strictly to
         | the eccentricities of it is just unnecessary headache.
        
           | Gigachad wrote:
           | I was impressed at how easy it is to work with the matrix
           | protocol. While playing around I was doing it all
           | interactively in bash using curl. Want to read the latest
           | messages? Curl the sync url. Want to send a new message? Post
           | a small json object.
           | 
           | It's actually easier to use by hand than IRC which requires
           | holding an open connection and quickly responding to pings.
           | 
           | It becomes a little harder when end to end encryption is on
           | but you just import the library they supply for almost every
           | language and then e2e becomes transparent.
        
       | stormbrew wrote:
       | To me this is the lynchpin:
       | 
       | > This is the very situation where matrix devs should have made
       | use of the properties of XMPP to improve it. Even the outstanding
       | feature (I admit. its a fantastic idea) of matrix, decentralized
       | conversation store, could have been implemented in XMPP as an
       | XEP. Imagine the time and effort spent on improving XMPP, instead
       | of reinventing wheels in matrix. We could have had a neat
       | ubiquitous IM platform.
       | 
       | The approach XMPP took may have made sense when it was created,
       | and it definitely had a lot of success early on at creating a
       | truly federated IM network, but a lot of that evaporated when
       | people and companies started needing more from the system than
       | XMPP could guarantee.
       | 
       | XMPP + a bag of XEPs isn't a "neat ubuquitous IM platform" unless
       | we get an XMPP2 that mandates certain key modern XEPs. It's just
       | a big giant mess, the same one it's been for a long time.
       | 
       | Maybe that's where Matrix should have started, I dunno. But they
       | are where they are and the reality is that it's not up to the
       | IETF to dictate how things _should_ evolve. If Matrix supplants
       | XMPP as a dominant open IM federation, and the people behind it
       | want it to be standardized, all the  "but XMPP did it first" in
       | the world shouldn't prevent that.
        
         | zaik wrote:
         | > unless we get an XMPP2 that mandates certain key modern XEPs
         | 
         | This is why https://docs.modernxmpp.org/ and compliance suits
         | like https://xmpp.org/extensions/xep-0459.html exists.
        
           | Macha wrote:
           | So is there a list of "Modern XMPP" compliant clients, server
           | software and hosts that I can compare the experience of to
           | the Matrix ecosystem?
           | 
           | I was a pretty big user of XMPP with Pidgin on first GTalk
           | and then later DDG's server back in the day, because that's
           | certainly not comparable. I'd really like an open chat
           | solution to succeed, but from where I sit "Can I convince any
           | of my friend groups to move from discord to this?", Matrix is
           | substantially in the lead.
        
             | zamadatix wrote:
             | No, this discussion isn't a comparison of implementations
             | it's a question/discussion of why "the latest
             | implementation" is tied to a new extensible protocol
             | instead of a new baseline of the existing extensible
             | protocol. There may well be reasons but "the first
             | implementation was on the new protocol" explains the
             | current state not how things got there.
        
           | jeroenhd wrote:
           | That's pretty neat. Are there any compliant clients? If I
           | google the XEP you linked I can't find anything but mailing
           | lists and posts talking about it.
        
         | klabb3 wrote:
         | Standards need extensibility, but you can't just slap major
         | extensibility framework on top of a small core and then get a
         | blanked claim that competing standards must be implemented as
         | extensions. A good litmus test is how useful is XMPP without
         | extensions today?
         | 
         | > it will be better for XMPP and Matrix devs to combine their
         | efforts
         | 
         | I don't like that open chat protocols have taken so long to get
         | adoption either, but coercing an organizational structure seems
         | like the best way to keep the status quo.
         | 
         | Imo, good standards have been tried and proven in a "many-
         | degrees-of-freedom manner" before being accepted, such as a
         | major OSS project with thousands of active users, which matrix
         | is doing now. Design by comittee has a terrible track record.
        
         | Gigachad wrote:
         | I think the point that FOSS enthusiasts fail to understand
         | repeatedly is that once a protocol becomes so embedded and
         | fractured over multiple implementations, it becomes impossible
         | to change.
         | 
         | There have been efforts to modernise irc as well but IRC still
         | isn't even keeping pace, let alone catching up.
         | 
         | I think the easiest way to handle this is to actually just drop
         | legacy and start again when you reach this point. It is
         | infinitely easier to build your own solution from scratch than
         | it is to move a mountain and convince an existing community and
         | ecosystem to do what you think is best.
         | 
         | And matrix is proof this works. After trying it again this
         | year, I think they have finally created a product which works
         | really well.
        
       | tgsovlerkhgsel wrote:
       | I'd argue XMPP has died long ago, at least for the purpose of the
       | "Anything in this world that has survived for a long-time, had to
       | be fit to withstand selective pressures." argument.
       | 
       | Of course it isn't _completely_ dead, just like some enthusiasts
       | still use about every imaginable historical computing platform,
       | but for practical purposes, I think most public communities have
       | moved, usually either to Matrix or closed platforms like Discord
       | or Telegram.
        
       ___________________________________________________________________
       (page generated 2022-01-16 23:00 UTC)