Internet Relay Chat
A Definitive Guide

Jarvis Badgley

History

In the heyday of the computer mainframe, when the multiple user network system was at its peak and the Internet was just being born, UNIX developers came upon the need for communication between users on a system.  The first response to this was the UNIX TALK command.  Introduced in BSD UNIX 4.2, released in 1983, TALK allowed for small messages to be transmitted from user to user.  There are many problems with TALK, but the largest problem is that it only allows communication between two users.  A need was evident for a multiple user communication system to allow actual conversations to take place online.  Multi-user chat systems had been written in the past, but they all had problems that needed to be resolved.
In 1988 a man in Finland by the name of Jarkko Oikarinen wrote an Internet protocol for multi-user client to server chat communication in a multiple channel environment.  His original hope was to create a new Bulletin Board Service, but he never implemented the BBS portion of the protocol.  To follow up on his protocol, Jarkko wrote a UNIX program called the Internet Relay Chat Daemon, or IRCd.  IRCd was first tested on a very small basis.  The server software ran on one computer with not even 10 users connected to it.  But it did work, and it worked well.  In August of 1988 the first IRC server went online at tolsun.oulu.fl.  He then expanded it run on three machines in a network system, with clients connected to each machine, and all of them communicating in a single environment.  The system worked so well that the Finish National Internet (FUNET), and then the Scandinavian NORDUNET booth adopted it.  By July of 1990 the IRC network had grown to 38 servers, including servers at the University of Denver and Oregon State University.  It continued to expand at a constantly growing rate spanning the entire globe, with servers based in Switzerland, US, Canada, Norway, Poland, Netherlands, and Australia.  This was the development of the first IRC network, known as O-net to some users, but just as IRC by Jarkko.  O-net continued to expand and eventually was renamed to the IRCnet.
Some time around 1990 there began to develop some dissension among the administrators of the IRCnet.  At the time connecting another server onto a network didn’t require a password.  The server just told the network that it was available, and started being used.  This led to a lot of confusion as tons of servers started signing onto the network.  It was decided that an addendum had to be made to the protocol to require a password to connect a server to the network.  Some admins liked this, some didn’t.  One admin specifically said he would never implement it on his server running at Berkley (eris.berkley.edu).  Two groups of opinions developed surrounding the need for passwords, and eventually in August of 1990 the IRCnet split up into two networks completely different.  EFnet (Eris-Free Network), and ANET (Anarchy Network).  ANET has since fallen, but EFnet still exists today as one of the largest networks in the world.  This split didn’t hinder IRC growth, however.  By September of that same year over 115 servers were in operation, more then half of them just on the EFnet  system.
At that time IRC still hadn’t reached a very large popularity, but that changed when the Persian Gulf war started in 1991.  An interest in news from the war spawned new IRC channels.  Usage of the Efnet spiked to over 300 users simultaneously.  The amount of chat communication reached levels of over 8GB of data transfer per month.  To help allieviate the strain on the network, extensive flow control was added to the server software which cut the bandwidth usage down from 11MB/hour to an amazing 100k/hour.  EFnet continued to grow almost exponentially, fueled by the release of client software for MS-Windows and MacOS.  By October of 1995 it was estimated that there were over 15,000 users on all of IRC. In February of ’96 a new record was set with the release of Id Software’s new game, Quake.  Channel #quake hits a peak of 1556 users. Today EFnet has close to 80,000 users at one time.  That number is down from previous years due to problems with hacker types.  
In mid 2000 a large number of so-called " script kiddies" (hacker wanna-be) started attacking users on the network with DoS attacks (Denial-of-Service) so as to gain control of channels.  These attacks escalated to the point of even the EFnet servers themselves being under attack.  This caused many users to find other venues to express themselves.  With so many problems on the system, rumors started floating around about EFnet’s eminent demise.  Those rumors have since turned out false, and EFnet is once again regaining its footing

Over time other networks have been born.  DALnet, named after one of its creators, Dalvenjah.  DALnet was created by three users who broke away from EFnet and develop their own server system designed to be more user friendly.  DALnet created computerized super-user programs called service bots, which maintained channel control and nickname rights.  Bots are now very common on all networks, both in authorized and unauthorized flavors.  A different network was also created in 1996 called, and it quickly grew to massive proportions.  These three networks (EFnet, DALnet, Undernet) comprise today’s bulk of IRC communication.  While there are hundreds of other networks, some which are beginning to reach the same size, these three maintain the largest userbase.

IRC Server Software

Jarkko’s original IRCd server software has been used all over the globe in its original form, but has been even more common in alternate forms developed by other people.  As most UNIX software is, IRCd is an open source project, which means that the original C source code was released for public adaptation.  Jarkko himself has only done any major changes on the software a few times, usually just serving as a consultant.  Other developers have made changes over the years to both the server software and the IRC protocol.  Beyond having the original IRCd, all three of the major IRC networks use their own revised form of the IRCd software.  The result is that there are many varieties of IRCd available, each with its own little changes to the IRC protocol specs.  Some developers have even ported the server software over onto other computer platforms such as DOS and Windows.

The result of all these people writing their own server software is that the IRC protocol started to loose standardization.  Each network had it’s own variation of the protocol, causing more work for developers writing IRC client programs.  The protocol had evolved from what it was originally, and information was needed to help standardize the protocol again.  In April of 2000, a man named Carl Kalt wrote up new RFC documents on the protocols and released them for evaluation by the main networks and client developers  (RFCs 2810-2813).  Most chose to go with this new set of standards, and by now the main networks have revised their server software to use this new set of instructions, as have the client developers.  Not many changes have been made to the protocol in the last 5 years, but there are some differences made by EFnet since then.

IRC Client Software

Having a server based system requires having a client to access that system.  Following traditional UNIX patterns, Jarkko created a program simply called “irc”.  His software served its purpose but not very well.  In 1989 Markku Jirvinen added emacs formatting commands to the irc client program.  The resulting program was named ircII (pronounced I.R.C. Two).  ircII is still used today by many UNIX users, although it has received significant updates since then.  Based off the ircII source code, two other programs also were written called BitchX and Epic, which quickly became far more popular then ircII had on it’s own because of the features they offer.  All three of these, however, only worked on UNIX and Linux systems.
In 1993 Jarkko decided that the protocol had reached a point where it should be standardized.  He, along with two others, wrote up and submitted a Request For Comments (RFC) document to the international community.  RFC 1459 presented a formalized specification of the protocol, allowing developers to start writing software to implement this protocol for access on other systems.
In 1995 Khaled Mardam-Bey developed the program mIRC for use on Microsoft Windows.  The release of this program opened up a huge market to the world of IRC, causing instant growth on a massive scale.  Since ’95 mIRC has continued to be developed, and today is the worlds most used IRC client.  mIRC is so common that many users foolishly think that IRC is mIRC.  Hence why sometimes you’ll hear the unfortunate word “mircing” (pronounced Merk-ing).  There have been other IRC clients written for Windows, but none have been able to match mIRC’s popularity.  The only client to come close is Pirch with its massive feature list and clean interface.  However a higher learning curve and larger price caused Pirch to fail somewhat miserably.
To fill the need on the MacOS a program was written called Homer.  Homer added a lot of very nifty features to IRC such as graphical user icons (Avatars) and sound instructions, and in the end was the father of Macintosh IRC clients.  However, it eventually stopped development, and due to the number of bugs, Homer is no longer used by anyone.  In its place came the program Ircle, developed by Onno Tidjet.  Ircle maintained its position for many years, and still is one of the most popular Macintosh IRC clients.  Other IRC clients have been written for Macintosh too.  Thanks to IRC’s easy implementation, a new client pops up for the Mac about once every year. Ircle’s largest competition currently is ShadowIRC, Snak, and AthenaIRC.  Two promising new clients on the horizon are Babbel, created by one of the co-developers of Ircle, and HypIRC.
There are also a number of Java based IRC clients used for webchat purposes.  These are often incorporated into BBS systems as a real-time chat medium.

How does IRC compare to  instant messages systems?

From the user’s standpoint, IRC and IM are two completely different subjects.  However, from a technical aspect the two systems are identical.  Both offer methods for checking if a list of users is online; both offer one-on-one private communication.  In fact, IRC is more complex then most IM systems because of its available options.  With very little effort a developer can create an IM program client that uses the IRC system.  
	Most IRC clients offer a means of setting up a list of users to watch for online.  This list, called a notify list, is usually accessed with the command /notify.  The user then adds a list of all the people they want to watch for, and when one of them comes online the client notifies them.   Most clients also have what is called a Query Window, which is a single window devoted to just the person they are talking to.  In this sense, IRC is no different then a program such as AIM, ICQ, or MSN-IM.

Bibliography

Release date for BSD 4.2:
 HYPERLINK "http://www.osdn.com/timeline/timeline.pl?op=bottom&eid=42" http://www.osdn.com/timeline/timeline.pl?op=bottom&eid=42

Origins of talk:
Taken from the MacOS X UNIX man page on the TALK command

Unofficial IRC Information archive:
 HYPERLINK "http://www.irchelp.org" http://www.irchelp.org

Early IRC History, the story told by Jarkko Oikarinen)
 HYPERLINK "http://www.the-project.org/history.html" http://www.the-project.org/history.html

mIRC Product Page:
 HYPERLINK "http://www.mirc.com" http://www.mirc.com

Ircle Product Page:
 HYPERLINK "http://www.ircle.com" http://www.ircle.com

ShadowIRC Product Page:
 HYPERLINK "http://www.shadowirc.com" http://www.shadowirc.com

Snak Product Page:
 HYPERLINK "http://www.snak.com" http://www.snak.com

AthenaIRC Product Page:
 HYPERLINK "http://athena.paladinmacs.com" http://athena.paladinmacs.com

EFnet Network:
 HYPERLINK "http://www.the-project.org" http://www.the-project.org and  HYPERLINK "http://www.efnet.org" http://www.efnet.org

DALnet Network:
 HYPERLINK "http://www.dal.net/" http://www.dal.net/

Undernet Network:
 HYPERLINK "http://www.undernet.org/" http://www.undernet.org/

RFC 1459: Internet Relay Chat Protocol
 HYPERLINK "http://www.irchelp.org/irchelp/rfc/rfc.html" http://www.irchelp.org/irchelp/rfc/rfc.html

RFC 2810 – 2813: Internet Relay Chat Protocol, 2nd Edition
 HYPERLINK "http://www.irchelp.org/irchelp/rfc/rfc2810.txt" http://www.irchelp.org/irchelp/rfc/rfc2810.txt    HYPERLINK "http://www.irchelp.org/irchelp/rfc/rfc2811.txt" http://www.irchelp.org/irchelp/rfc/rfc2811.txt
 HYPERLINK "http://www.irchelp.org/irchelp/rfc/rfc2812.txt" http://www.irchelp.org/irchelp/rfc/rfc2812.txt    HYPERLINK "http://www.irchelp.org/irchelp/rfc/rfc2813.txt" http://www.irchelp.org/irchelp/rfc/rfc2813.txt

A Brief History of IRC
 HYPERLINK "http://www.lick.pvt.k12.ca.us/~carmstro/networks/irchistory.html" http://www.lick.pvt.k12.ca.us/~carmstro/networks/irchistory.html

IRCd: Setting up the Internet Relay Chat Daemon
 HYPERLINK "http://www.irchelp.org/irchelp/ircd/index.html" http://www.irchelp.org/irchelp/ircd/index.html