Hacker News new | ask | show | jobs
by okso 2740 days ago
IRC is by designed centralized: A chat room is hosted by exactly one service provider, and that service provider also manages identities and authentication.

The fact that most IRC clients integrate the connection to different servers in the interface does not really make it decentralized.

6 comments

It really comes down to exactly what you mean by "decentralized". In the case of IRC it is, in a sense, decentralized in that it need not be a single server operated by a single person/company/whatever. Some of the larger networks have dozens of servers hosted by multiple different entities and spread out across the globe. As someone else pointed out (and had their comment killed, for some reason) the concept of a "netsplit" exists specifically because of the decentralized nature of the protocol - there exist scenarios in which the server you're connected to can no longer communicate with some or all of the other servers on the network and so the network is split in two with users continuing to exist on either side but unable to communicate with each other.

Basic, plain, no-frills IRC is also decentralized in that there is not a single user registry (since there is no user registration mechanism at all). Most of the time you're going to add on services (Nickserv and Chanserv at a minimum) and that's going to involve a single point of failure and control for authentication, so there is a potential downside there, but it's still arguably better than it being controlled by a single for-profit company that interprets and enforces laws in different ways.

Whether or not those caveats are in any way relevant to the use case you care about really depends on what that use case is... I would hazard to say that for most people, no matter what the use case, it would be more than sufficient - piracy rings, cyber criminals, and millions of nerds the world over have used IRC to communicate on a daily basis for decades, so there's quite a track record.

An IRC channel is hosted by a network of federated servers (such as Freenode or EFNet). This is why netsplits happen when communication is disrupted between servers.

Some networks have bolted-on authentication to prevent people from riding netsplits and commandeering channels, but that's not a part of IRC itself.

I'm interested in knowing more about this. Accessing #xyz on Freenode won't let me access the #xyz on EFNet, I don't understand how the servers are linked or to what effect. Surely I have to be connected to Freenode to talk in a Freenode channel? Similarly if Freenode goes down, is the channel I was using still accessible somehow else?
Freenode and efnet are completely separate. But both freenode and efnet have lots of servers (typically spread out geographically) that are synchronized and it's between those that a split can occur.

People in channel #xyz on efnet doesn't have to be connected to the same server to talk to each other (during normal operation).

Not really, the ircnet servers (many of them) are linked together and they provide the service like that, you can connect to any of them.
IRC is both centralized and decentralized.

Users join a single node (centralized) but that node is part of the wider IRC network (decentralized).

This is a misconception, normally IRC servers operate in a linked network sharing a pool of users and channels. Also there is no such thing as authentication in IRC, at least on a protocol level.
"IRC is by designed centralized"

Never encountered a netsplit, I see.