I was going to ask why people don't like IRC. As someone else commented it gets the job done, but while I know there are better things on the market now I don't really know why e.g. Matrix is practically superior.
As much as I like IRC, it's usually missing some basic features everyone expects: history while offline, file uploads, inline images. Of course you can use a server like Ergo or self-host/rent a bouncer or client like The Lounge, but that's not an option for everyone. That's why so many people used Matrix as a free bouncer to join freenode/Libera.Chat back when that was an option
It's actually surprisingly hard to get on some IRC networks these days. A lot of e.g. EFNet servers have pretty narrow I-lines, and it's not always easy even to get a server list unless you're already on.
I like IRC for the culture, mostly. The way people use chat products seem to be pretty shaped by very small product decisions nobody probably thought much about when they were made (e.g. default notification settings), plus whoever happened to be early adopters. But of course, it's never going to have a resurgence.
With Matrix I log in and see all of the messages that were sent to me (or in the chats in in) while I was offline.
My understanding is that IRC doesn't do that.
So if I want to have a long running series of searchable chats that happen even when I'm offline then IRC isn't going to cut it.
My experience with matrix has been very poor. Ticks all the boxes on paper but ends up being quite buggy (or maybe the element client is just terrible). Its too the point that I dont think its a real competitor.
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.