Why is IRC distributed across multiple servers?
I can somewhat answer this.  Apologies, this became a bit long winded and I have barely touched on several historical, technical and logistical reasons.<p>Part of the answer is historical and part of this <i>was</i> technical.  IRC has been around for a very long time.  As such, the earlier versions of the servers and daemons could not accept tens of thousands of client connections <i>ePoll vs Select</i>.  The connections between servers are multiplexed and not directly related to the number of people connected to the server.  There was also a matter of latency.  Servers in a region would keep the messages local to that region, as only people in the same channel get the messages and it was less common to have people in the same channel all over the world.  This also changed with time.  If there was a split, you lost other regions.  This was not always the case, so of course I am over-generalizing since there were many different IRC networks designed by many different people.  Being long running services, I had seen a great deal of hesitation to re-architect anything on the fly on at least some of the networks, even after ePoll and modern hardware made it possible to have tens of thousands of people on one server.  Some of the smaller IRC networks indeed consolidated into fewer or a single server.<p>Another facet is logistics and ownership.  Many of the bigger networks are comprised of servers owned and managed by different people and organizations.  The servers are linked as a matter of trust.  That trust can be revoked.  Most of the early IRC networks were run by people doing this in their free time with their own money and&#x2F;or limited resources.  In some other cases some organizations prefer to have their own servers so that their own people indeed to not suffer splits for their local communication.  There are a myriad of other use-cases and reasons why some organizations had their own servers.  Sometimes there was a need to give LocalOps special permissions that would not be permitted network-wide.  Despite the technical capability to have less servers, some organizations are not going to give up their local nodes.<p>One issue not mentioned is permission losses on splits.  The issue with splits and permission changes has more to do with the way services are integrated into IRC, or more specifically, aren&#x27;t.  Services are treated like bots with higher privilege and most if not all of them were not written to be multi-master.  Rather than dealing with moving services around or pushing for read-only daemons, they just lived with the possibility that there would be splits and they would eventually resolve themselves.  I personally would have preferred to see a more common integration with OpenLDAP.  Some of the IRC daemons can use LDAP, but it is more of an after-thought, or bolt on.  This would have allowed splits to occur without losing channel permissions and clients could be configured to quickly attach to another server in another region and that is just DNS management.  This could have been further improved by amending or replacing the IRC RFC&#x27;s to allow SRV records.  This may have been done by now for all I know.  I shut down my last public server some time ago.<p>There is a lot more to this than I could sum up on HN.  Anyway, today you can fire up an IRCd of your choice on modern hardware and accept tens of thousands if not hundreds of thousands of people on a single server if you wish.  It is technically possible.  I would still design the network to have multiple servers, as you will eventually hit a bottleneck.  If you really want to do this, you will have to de-tune the anti-ddos counter measures to allow the thundering herd to join your standby server or make code changes to permit the thundering herd briefly on fail-over.