IRCd
From Wikipedia, the free encyclopedia
An IRCd (Internet Relay Chat daemon) is a computer program to create an IRC server on which people can talk to each other via the Internet.
Running a large (more than a few thousand users) IRC server requires keeping a very large number of connections open for long periods. Very few ircds are multithreaded due to the fact that nearly every action needs to access (at least read and possibly modify) the global state. The result is that the best platforms for ircds are those that offer efficient mechanisms for handling huge numbers of connections in a single thread. Linux offers this ability in the form of epoll, in kernel series newer than 2.4.x. FreeBSD (since 4.1) offers kqueue. Solaris has had /dev/poll since version 7. The difference made by these new interfaces can be dramatic. IRCU coders have mentioned increases in the practical capacity per server from 10,000 users to 20,000 users.
Some IRCd support SSL, for those who don't, it is still possible to use SSL via Stunnel. Some IRCd support IPv6.
[edit] History
The original IRCd was known as 'ircd', and was authored by Jarkko Oikarinen (WiZ on IRC) around 1989. He received help from a number of others, such as Markku Savela (msa on IRC), who helped with the 2.2+msa release, etc.
Around version 2.7, there was a small but notable dispute, which lead to ircu -- the undernet fork of ircd.
Around 2.8 came the concept of nick and channel delay, a system designed to help curb abusive practices such as takeovers and split riding. This was not agreed on by the majority of modern IRC (EFnet, DALnet, Undernet, etc) - and thus, 2.8 was forked into a number of different daemons using an opposing theory known as TS -- or time stamping, which stored a unique time stamp with each channel or nickname on the network to decide which was the 'correct' one to keep. More information on this may be found at http://www.ircd-hybrid.com/history.html.
Modern times have seen further changes, among which being a number of attempts to write an ircd from scratch, such as ithildin, or inspircd. These attempts have met with mixed success, and large doses of scepticism from the existing IRC development community.