Log in | Back to darenet.org

IRCd:Main

m (Introduction to IRC)
(Introduction to IRC)
Line 10: Line 10:
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.
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.
 +
 +
== Introduction to the Server (ircd) ==
 +
 +
Real-time chat servers can be among the most complex servers, due to their real-time multiplexed requirement. When multiple servers have to be multiplexed together, as in IRC, things can get even more complicated. And, when you are dealing with an old source base, with tons of features having been added over a period of decades, then you're dealing with ircd -- or more specifically in this case, ircd-darenet.
 +
 +
For the most part, building the server is fairly straightforward. With older versions of ircd, most of the features or options were selected at compile-time, but the addition of the "features" system (used in ircd-darenet) enabled many of those to be configured at run time via the configuration file.  The server code will compile on most POSIX-compliant systems, but the systems we test with are Linux and FreeBSD.

Revision as of 18:55, 17 February 2009

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's 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.

Introduction to the Server (ircd)

Real-time chat servers can be among the most complex servers, due to their real-time multiplexed requirement. When multiple servers have to be multiplexed together, as in IRC, things can get even more complicated. And, when you are dealing with an old source base, with tons of features having been added over a period of decades, then you're dealing with ircd -- or more specifically in this case, ircd-darenet.

For the most part, building the server is fairly straightforward. With older versions of ircd, most of the features or options were selected at compile-time, but the addition of the "features" system (used in ircd-darenet) enabled many of those to be configured at run time via the configuration file. The server code will compile on most POSIX-compliant systems, but the systems we test with are Linux and FreeBSD.