Hacker News new | ask | show | jobs
by _flux 709 days ago
I grant you this list with decades of IRC experience (IRCnet really mostly, some FreeNode (farewell)) and maybe? ten years of Matrix :), probably forgetting some points:

- Matrix gives you persistent sessions (which sometimes seem like a concept despised by IRC proponents), meaning you won't miss messages even if your connection to the server gets disconnected for short or longer durations

- ..therefore alert sending clients are easy to implement without keeping an open connection to the server, so e.g. just a curl invocation from your favorite network monitoring system

- Side note: it seems IRC is unique in the way how people get offended if your network connectivity is poor, possibly resulting in a ban..

- You can connect these sessions from multiple devices at the same time, so I can see the same messages in PC and mobile devices, without using an additional host between Matrix server and my terminal, running screen/tmux/bouncer/etc.

- Channels (called rooms) can be configured to show past messages to new people. For some channels this is quite handy, because newcomers can see the vibes immediately after joining (traffic/no traffic/style of communication?) and participate faster. In addition, they are able to search such messages (though the search is not very featureful).

- Messages are not limited to 512 octets and there is no need for clients to come up with ad-hoc continuation messages. Instead, they are 64KiB JSON that can be easily extended for other applications, such as https://github.com/eras/mxrxtx .

- Because server communication is based on HTTP, it is easy to see in the protocol which message is in response to which request, unlike in IRC

- One can share media without uploading it first to another service

- Matrix has the modern communication tools like utf-8-per-spec, reactions, threads, replies, mentions, edits, redacts, writing status, email notifications, voice/video chat, opt-in phone number/email based people discovery—though some of these are also considered anti-features by some. Some more rare features: per-channel nicks, html subset messages (useful for tables, bot messages and pasting HTML-colorized fragments from supporting terminals)

- Matrix has end-to-end encryption available and enabled by default

- Mobile clients benefit from push notifications with better battery longetivity

- Like IRC, Matrix servers form a network; unlike IRC, anyone can just setup a server and connect to the network without arranging connectivity first with someone they know, with possibly quite tight criteria for getting the server accepted. This is quite like email.

- This is possible because the servers don't need to trust each other, via a mechanism called state resolution. So if a server doesn't have required permissions in a room (via a participating user) to e.g. change user permissions or kick a user, then it cannot (whereas, as I understand it, ircops have power beyond their IRC server)

- The communication graph (full mesh) is formed automatically per channel between participating Matrix servers, instead one per-network single-rooted tree with multiple points of failure (granted I understand IRC servers can be manually configured to overcome these failures with minimal disruptions). In Matrix each server participating in a room maintains a copy of the room contents.

- Matrix uses a novel distributed graph database for ensuring messages sent during server disconnects will eventually* reach all the participants

Not all of these features are the best they could be, though :), but I thought of not digging into them as I was just comparing to IRC.

Some of these points may have been improved by IRCv3, or are going to, I haven't followed a lot.. At least I recall it should/will have message tagging to address the problem of protocol-level request-response matching.