https://blahaj.social/@leah/114322213914414565

Looking into the matrix protocol cemented that idea for me. Matrix even described as an "eventually consistent JSON store"! That is not a good thing. Something so complex is unlikely to be implemented by a single user w/o an innordinate amount of effort

#irc #xmpp #matrix

Leah Neukirchen (@[email protected])

Every chat system after IRC was a mistake.

BLĂ…HAJ Social
Learning from qmail's success at writing correct software, one should design software as a collection of small programs that can be reasoned about independently. It would be better to keep chat protocol itself transient and stack the features on top. You want history search? Log the channel with a bot. Want multi-device synchronization? Add a bouncer or client protocol? Want to appeal to the casual user, Offer to host those services.
All I want from chat is emoji reactions. Maybe threads and embedded media. That said I dont know if IRC's line based protocol is sufficiently structured. There is https://ircv3.net/specs/client-tags/react and https://ircv3.net/specs/client-tags/reply
`react` client tag - IRCv3

IRCv3 Development Community

@PuercoPop interestingly, though, emoji reactions look simple at first glance, but they aren't. I wrote this post many moons ago, and the current way in XMPP is similar but not exactly what I wrote there. However, some of the notes on complexity still hold: https://ralphm.net/blog/2019/09/09/fastening
XMPP Message Attaching, Fastening, References

Rich messaging in modern messaging services often includes marking up plain text messages with user mentions, link cards, emoji reactions, etc. To implement this in XMPP, there have been several protocol proposals. This post explores how those could be combined and rendered.

@ralphm Depending on what guarantees we want to give to reactions they do pull a lot of complexity. To be able to cover the same use cases of slack. For example, custom emoji reactions. Are they per server or per channel? That means additional state to keep track off. In the blog's example the is a reaction label that works like a transitory ID, but the emoji itself is embedded in the reaction.
@ralphm Going back Slack/Discord use cases, one can react to an old message (ej. for role bots) or use emojis as a way to run informal polls. So they might need to refer to an old message, that requires message IDs, which bring in state to be kept on the server side. #xmpp already has that concept from what I can see in the blog, stanza-id. Does the XML parsing requirements of xmpp make use of XML namespaces?
@PuercoPop yes, the X in XMPP critically depends on namespaces for distributed extensibility. This means that you can add new stuff to existing constructs, often with fallbacks for entities that don't understand the new thing.