Exploring the roots and future of Internet Relay Chat

Undernet: From Chaos to CService

I connected to Undernet for the first time in early 1998. I was running mIRC 5.31 on Windows 98, dialing into a local ISP in Turin. The server was london.uk.eu.undernet.org — I picked it because it sounded impressive. Within an hour, I was in three channels, had been kicked from one for speaking Italian, and was watching a takeover attempt on another. It was absolute chaos. I loved it. Undernet was the network where I learned that IRC was not just a chat protocol — it was a political system with its own rules, power structures, and ongoing wars.

The Split: Why Undernet Left EFnet

Undernet didn't start as a rebellion. It started as a test bed. In late 1992 and early 1993, a group of IRC server administrators — frustrated with the policies and code limitations of EFnet — began running modified versions of the IRC daemon to test new features. The key figures were Danny Mitchell, Laurent Demacedo, and several others who wanted to experiment with improvements that EFnet's conservative approach would never accept.

The specific disagreements were technical. EFnet's ircd had known problems with netsplit abuse, channel takeovers, and the complete absence of nickname or channel registration. Every time a netsplit occurred — and on EFnet in the early 1990s, netsplits were a daily event — attackers could ride the rejoin wave to seize channel operator status. There was no persistent state. No memory. Channels existed only as long as someone was in them.

The test network gradually attracted users and became self-sustaining. By mid-1993, it had its own identity: Undernet. The name was deliberately understated — under the net, below the surface. It was a quieter, more experimental alternative to the rowdy EFnet mainline.

The early Undernet ran a modified ircd that would eventually become ircu (IRC Undernet daemon). Key technical differences from EFnet's ircd2 included a different server-to-server protocol, timestamp-based channel protection (reducing netsplit abuse), and the foundation for what would become the channel service system.

# Early Undernet server link configuration (ircu style)
# Connect block for linking two Undernet servers
Connect {
  name = "hub.us.undernet.org";
  host = "192.0.2.10";
  password = "linkpass_encrypted";
  port = 4400;
  class = "Server";
  hub;
};

UWorld {
  name = "X.undernet.org";
  name = "cservice.undernet.org";
};

The Early Years: 1993-1996

The early Undernet was small. A few hundred users, a handful of servers, mostly in North America and Western Europe. What set it apart was the attitude: this was a network run by developers who wanted to build something better. The code was the point.

The ircu daemon introduced several features that EFnet lacked:

  • Timestamp protocol — Each channel creation and mode change carried a timestamp. During netsplits, the older timestamp won. This single change eliminated the most common takeover vector on EFnet.
  • Numeric IP encoding — Server-to-server communication used a compact numeric encoding for user and server identifiers, reducing bandwidth consumption on the mesh.
  • Channel mode +r — Registered channels could be marked, preventing unregistered users from certain actions.
  • BURST command — A more efficient state synchronization mechanism during server reconnection, replacing EFnet's slow JOIN/MODE replay.

The ircu codebase was maintained by the Undernet Coder Committee (UCC), a group of volunteer developers who operated with a structured review process unusual for open-source IRC projects of the era. Patches were discussed, tested on staging servers, and rolled out network-wide in coordinated upgrades.

Tip: If you're studying IRC daemon development, the ircu source code — still available on GitHub — is one of the best-documented C-based IRCds. The codebase is heavily commented and the protocol extensions are well-specified in accompanying RFCs (particularly the P10 protocol documents).

CService and the X Bot

CService — the Channel Service Committee — was Undernet's answer to the fundamental problem of IRC: who controls a channel? On EFnet, the answer was whoever happened to be an operator when the netsplit hit. On Undernet, the answer became: whoever registered the channel through a formal process.

CService launched in 1995 as a web-based registration and management system, with X as its IRC-side bot. X was not a regular bot. It was a network service — a program connected to the IRC mesh with special privileges, unable to be killed or kicked, present in every registered channel simultaneously.

To register a channel, you needed:

  • A registered username on cservice.undernet.org
  • At least 10 supporters (registered users who backed your registration)
  • A channel that met activity requirements
  • A brief description of the channel's purpose

Once registered, X provided a full suite of channel management commands:

/msg X login username password
/msg X op #mychannel myNick
/msg X deop #mychannel troublemaker
/msg X kick #mychannel spammer Flooding the channel.
/msg X ban #mychannel *!*@*.bad-isp.net 3d Repeated abuse.
/msg X set #mychannel AUTOTOPIC on
/msg X set #mychannel DESCRIPTION A channel about Linux networking.
/msg X access #mychannel list
/msg X chaninfo #mychannel
/msg X invite #mychannel

The access level system was hierarchical and precise. Levels ranged from 1 to 500, with specific capabilities unlocked at each threshold:

# X access levels on Undernet
# Level   Capability
#   1     Basic user (can use X to self-op in channel, etc.)
#  25     Automode: auto-voice on join
#  50     Can kick users via X
# 100     Can ban users via X
# 200     Can set channel topic via X
# 400     Channel manager — can add/remove lower-level users
# 450     Co-manager
# 500     Channel owner — full control
#
# Example: grant level 100 to a trusted op
# /msg X adduser #mychannel trusted_user 100

This was revolutionary. For the first time, a channel could survive its founder going offline. Access persisted across connections, across netsplits, across time. The person who registered #linux on Undernet in 1996 could come back in 2000 and still be level 500. The channel's configuration, ban list, and user access list were stored in a database, not in the ephemeral state of the IRC server.

Warning: CService purge policies are real. If a registered channel drops below activity thresholds — typically measured by the number of distinct authenticated users joining over a 30-day period — it becomes eligible for purge. I've seen channels with thousands of entries in their access list get purged because the active user count dropped below the minimum. Check your channel's status regularly with /msg X chaninfo #channel.

The CService model influenced every subsequent IRC network's approach to channel management. Freenode's ChanServ, DALnet's services, Rizon's BotServ — all descended conceptually from Undernet's insight that persistent channel ownership was a solvable problem.

Peak Years: The Largest IRC Network on Earth

By 2001, Undernet was the largest IRC network in the world by user count. At its absolute peak in 2004-2005, Undernet had over 150,000 simultaneous connections. Let that number sink in. One hundred fifty thousand people on a single IRC network, a protocol designed in 1988 for a few hundred users at a Finnish university.

The user base was heavily international. Huge communities from Turkey, Brazil, Romania, Pakistan, and other countries found homes on Undernet. Channels like #turkiye, #brasil, and #romania had thousands of users. The network's geographic diversity was unmatched by any other IRC network of the era.

This growth brought problems. Undernet's infrastructure was volunteer-run. Servers were donated by universities, ISPs, and individuals. The network had no corporate backing, no datacenter budget, no paid staff. Running the largest IRC network on earth with zero revenue was a feat of volunteer coordination that is genuinely hard to appreciate in retrospect.

The technical load was staggering. A single Undernet hub server in the mid-2000s might handle 30,000+ connections simultaneously, with each user potentially in dozens of channels, each generating a continuous stream of JOIN, PART, QUIT, PRIVMSG, and MODE messages that had to be propagated across the mesh. The ircu daemon was optimized aggressively for this workload — it was fast, lean C code that squeezed every byte out of the network and every cycle out of the CPU.

DDoS Attacks and the Long Decline

Undernet's size made it a target. From roughly 2002 onward, the network was subjected to sustained distributed denial-of-service attacks that would periodically take down servers, cause massive netsplits, and disrupt service for tens of thousands of users.

The attackers had various motivations: channel takeover attempts, personal grudges against operators, botnet operators testing their firepower, and plain nihilism. Some attacks targeted specific servers. Others targeted the entire network's linking infrastructure, trying to cause cascading netsplits.

The volunteer administrators fought back with the tools available: traffic filtering at the server level, coordination with upstream ISPs, blackholing attack traffic, and eventually requiring users to solve CAPTCHAs on the CService website before connecting. But volunteer-run infrastructure has limits. When your server is hosted on a university's network and that university's entire internet connection gets saturated by a DDoS aimed at your IRC daemon, the university understandably asks you to leave.

Servers dropped off the network one by one. Peak user counts declined steadily from 2005 onward. The introduction of hidden hostmasks (cloaked IPs) and connection throttling helped protect individual users, but the fundamental vulnerability of the network's infrastructure to volumetric attacks was never fully resolved.

The human cost was real. Server administrators who had volunteered hundreds of hours burned out. CService volunteers who processed thousands of channel registrations stopped showing up. The institutional knowledge concentrated in a small group of dedicated long-term operators, making the network increasingly fragile to individual departures.

Undernet Today

Undernet still operates. As of 2023, it has roughly 10,000-15,000 simultaneous users — a fraction of its peak, but still one of the larger IRC networks globally. CService still functions. X is still online. Channels can still be registered through the website.

The network runs a modern version of ircu with TLS support, IPv6, and contemporary security features. The server list is smaller than it was in 2004, but the remaining servers are generally more stable, hosted on better infrastructure, and better protected against DDoS.

# Connecting to Undernet in 2023
# TLS is available on port 6697
/server -ssl eu.undernet.org 6697

# After connecting, authenticate with X
/msg X@channels.undernet.org login myusername mypassword

# Set your virtual host (if eligible)
/msg X@channels.undernet.org set invisible on

# Check your current access in a channel
/msg X@channels.undernet.org access #mychannel myusername

The community that remains is loyal. Many users have been on Undernet for 15 or 20 years. The channels that survived the decline are often tight-knit communities that weathered the DDoS storms, the user exodus to MSN/Skype/Discord, and the general retreat of IRC from mainstream awareness. These are people who chose to stay.

Undernet's legacy extends beyond its current user count. The CService model proved that IRC channels could have persistent, reliable ownership. The ircu codebase demonstrated that IRC daemons could scale to six-figure user counts with careful engineering. The network's international character showed that IRC was never just an English-language, North American phenomenon — it was genuinely global in a way that many later platforms have struggled to replicate.

I still idle on Undernet. My X account still works. The channel I registered in 2003 still exists, though the regular population has dwindled from 200 to about 15. Those 15 include some of the same people who were there twenty years ago. We don't talk as much as we used to. But the channel is there, and X keeps it safe, and that counts for something.

FAQ

How do I register a username on Undernet's CService?

Visit https://cservice.undernet.org/ and create an account. You'll need a valid email address for verification. Once registered, you can authenticate with X on IRC using /msg X@channels.undernet.org login username password. Your CService account persists indefinitely as long as you log in at least once every 90 days (the exact purge period may vary).

What happened to the Undernet servers that went offline?

Most departed voluntarily. University hosts faced bandwidth constraints or policy changes that made hosting an IRC server untenable. ISP-hosted servers were decommissioned when the sponsoring company changed hands or priorities. Some servers were permanently removed after sustained DDoS attacks made them liabilities for the network's stability. The server count dropped from over 40 at peak to roughly 15-20 as of 2023.

Can I still register a channel on Undernet?

Yes. The process requires a CService account, a minimum number of supporters (registered users who approve your registration), and an active channel. The exact supporter count and activity requirements are published on the CService website. Applications are reviewed by the Channel Service Committee, which may take days to weeks depending on backlog.

Is Undernet safe to use without a bouncer or VPN?

Undernet cloaks user IP addresses for authenticated users. If you log in with X, your real IP/hostname is hidden behind a virtual host. Without authentication, your IP is visible to other users. Using a VPN or bouncer adds an additional layer of protection. For most casual users, logging in with X provides sufficient privacy.