BACKGROUND: I'm a former charybdis developer, a piece of IRC server software a lot of people use. If you use freenode, you use ircd-seven, a fork of charybdis. And I have a rant I want to post.
I don't work on IRC anymore. Some people ask why. It's because IRC server politics are the God damn worst. Getting authors of IRC servers to cooperate on anything is literally impossible. They don't want to. They all have their own vision of what IRC is supposed to look like, and the user is rarely consulted.
The last RFC for IRC, RFC2812, doesn't describe the protocol most servers actually implement, nor has it ever. In fact, RFC1459 pretty much describes the framing format.
To be continued…
So basically, IRCv3 came along and they tried to fix all this. But most IRC server authors are NOT on board with it. They don't want to be. See also bullshit political reasons.
IRCNet and EFNet don't believe nicknames are "owned," unless you're an operator, then you can kill whomever you want to regain your nick. That's like if you could only use your handle on Mastodon as long as you kept a tab open, and anyone could just take it.
To be continued…
Undernet, a runner up, has its own concept of ownership of an identity, tied to username but not nickname. It's really bizarre. That's like if you had a Mastodon username but anyone could take your handle at any time, and you just had to choose a new one; but you had a username that people had to reference you by for internal use, even if no one ever calls you that. It's really weird.
To be continued…
Freenode is a little more "traditional" in the way nicknames are owned, but by and large has no interest in evolving the IRC protocol. Their interest in IRCv3 is zero. They don't want to evolve IRC, or if they do, it's in their /own/ way. They don't care.
These are some of the largest IRC networks around. I bring them up because none of them are on board with IRCv3. They never will be. IRCv3 is dead in the water. D E A D dead.
To be continued…
IRCv3 is trying to solve the wrong problems. They have no interest in what people want. There are basically only three stakeholders /actually/ meaningfully participating in IRCv3, besides the peanut gallery:
* znc - a piece of IRC middleware that sits between clients and servers to maintain persistence
* inspircd - they have their own vision of IRC that's totally different than what most people are doing
* irccloud - a for-profit interest
To be continued…
That's it. None of these players matter in the grand scheme of things. They are meaningless.
IRC is going nowhere. I wish it would, but you have too many server operators who don't care what users want. They care what they want. These people are the sort who think a Unix terminal is the most sophisticated interface ever devised. Users by and large will not tolerate these experiences. IRC has been shrinking by attrition and will continue to do so. It's their own fault.
To be continued…
Slack, discord, [insert chat system du jour] is kicking IRC's ass because IRC didn't evolve. It refused to enter the 21st century. It barely entered the 90's. It's state of the 1980's technology with lipstick on top. And none of what IRCv3 is doing wants to fix this. They would rather bicker about how to best force people onto SSL (I dunno, just make clients default to it?).
The chat landscape is more fragmented than ever; it shouldn't be. IRC should have evolved. It didn't.
To be continued…
It's sad because all the systems that propose to replace IRC have their own problems. Mostly they are proprietary corporate-run bullshit that have no path to monetising it. I doubt discord will be around in 10 years. Slack may be around but I don't know. Matrix is way too web oriented and has a lot of technical issues to solve.
It doesn't really matter because in the end it's just like birdsite and facebrick. They will aggregate and sell your info to turn a profit because it's the only way.
It didn't have to be this way. But the people who ran IRC servers have no one to blame but themselves. IRC is going to die and there is nothing anyone can do to stop it.
A new standard won't help. A new protocol won't help; we have enough of those.
But I don't know what to do.
I wish I did. There are no easy answers.
Perhaps the future really is just monetisation, and we'll wind up giving our deepest darkest secrets to a corporate overlord for their profit.
I weep for our future generations. We have failed them. Completely and utterly failed them.
ERRATA to my long-ass series of posts: RFC1459 describes the framing format and nothing else anyone implements. I was limited by length.
Some people are asking me OOB how I would modernise IRC. Look at what Slack and Discord are doing and do that.
We need modern VoIP features. Users demand them. Even if they're optional some people will use them.
We need rich integration with stuff from the web like images, patches, etc. Imagine if you got a clean view of a small diff when you pasted something. People who use Slack will know what I'm talking about.
We need more than 512 bytes. It leaves the user like 490 at most to talk.
We need a better API than the arcane and difficult-to-use IRC protocol. Outside of an IRC daemon I've yet to see a fully standards-compliant parser other than the one I wrote.
We need a standard way to get statistics. XINFO died unfortunately and no one was gonna implement it.
Registration and channel (like group) management needs to be built-in, not bolted on.
We need a better system than just "ops" and "voice"
Another delicious gem I wanted to mention:
Most IRC daemons are based off the original code from 1989. Most are "2.8" based but others are "2.7" based (ircu family). It's all about where they forked. Inspircd is the only notable one that isn't 2.7/2.8 derived.
That's right. It's all based off code a university student wrote in the late 80's. And it looks like it. And it feels like it. And it's making the elephant dance trying to make it modern. I tried.
But yeah, it's not fun making the hippo dance. And re-implementing all this crap where clients will accept it is... it wouldn't be one of the labours of Hercules because it would be too difficult for even him.
Also imagine what a university student from 1989's code would look like after a bunch of other 90's and 00's university students and teenagers hacked it to pieces.
Yeah. You get the idea.
Granted, I was once one of those teenagers, but dammit, I tried to make good code.
Also, many are 3rd or 4th generation forks (some even 5th!). As in, they forked from a fork from a fork from a fork (from a fork from a fork...). It's a disaster.
To give you an idea:
sendto_channel_local_with_capability_butone is a real function in charybdis. And yes, it was needed.
It isn't our fault; we inherited this mess.
Inspircd itself is... not the cleanest code, but at least they're trying. A+ for effort.