Log in | Back to darenet.org

IRCd:Main

This portion of the wiki is intended to help document DareNET's ircd, ircd-darenet, which is based on ircu, explaining why things are done the way they are. In addition to documenting the existing server and how it does things, we also hope to equip and inspire new developers.

Documentation is traditionally the weakest part of any ircd project. The developers that have worked on such projects in the past have often omitted comments. The documentation that does exist either documents the API via Doxygen-style documentation comments, or consists of a large number of partially unreleated documents stored in the "doc" subtree of the source code. Further, anytime someone asks for more documentation, those developers traditionally respond, "look at the source."

The intent of this section of the wiki is to try to build a single document -- editable by at least our developers -- that documents the basic architecture, hopefully pulling together the morass of documents and comments into a single, unified whole that is open and accessible to everyone.

Introduction to IRC

Internet Relay Chat, also known as IRC, is one of the earliest multi-user real-time chat protocols. As originally designed, it's a fairly simple, straightforward text-based protocol. However, it is complicated by the fact that IRC servers are intended to be networked together. This not only requires securing the link between the servers, it also requires that the information about the network users and clients, collected into the server's database, be available to all servers. This is done, in IRC, by distributing the database globally.

Now, this design is not without consequence. It causes a severe lack of scalability, not to mention significant problems when servers disconnect or reconnect to a network. To understand how to configure the server, and why the code is written the way it is, it is necessary to really understand the IRC protocol and its consequences.