History

August 19th, 2008

The original NickServ was written by Armin Gruner at the Munich University of Technology in 1990. The original intention was to give out friendly warnings that somebody else already likes to use a specific nickname, since the IRC protocol has no built-in provision to protect electronic identities. NoteServ and MsgServ followed up soon after the introduction of NickServ, and had a similar job of today’s MemoServ.

It was considered okay behaviour to simply /ignore NickServ’s notices, but an operator called Jupiter decided to /kill NickServ and use the nickname NickServ himself, subsequently collecting all identify passwords from users and being amused by that. This led to a public debate over the usefulness and safety of services, the discontinuation of NickServ on EFnet and EFnet’s current Nicknames are not owned policy arose.

In 1995 DALnet invented ChanServ, then re-implemented NickServ and MemoServ. Today EFnet and IRCnet are the last large IRC networks which stick to their policy of living without identity protection. Services are generally considered essential to providing a pleasant chatting experience
Many variants of services have been implemented over time, so each IRC network speaks a different service dialect, making it close to impossible for client developers to implement unified graphical interfaces to the various registration procedures. Still most of them are inspired by DALnet’s and Armin’s original works, only QuakeNet sticks out with a completely different approach.

Components

August 19th, 2008

The most popular style of services use a number of fake clients whose names end in “Serv”. The four below are nearly always seen in services of this style.

* ChanServ, a channel service bot, is used to protect channel operators and help run the channel. This is convenient for the operators because they do not need to have an operator on the channel all of the time to keep their status.
* NickServ, a nickname service bot, is used to register and protect user nicknames.
* MemoServ, a memo service bot, is used to record and deliver messages to users who are currently offline.
* OperServ is used by IRC Operators. Also known as AdminServ, RootServ, or OpServ (srvx).

Some others are also seen following this naming convention in some services packages including:

* BotServ, a which allows channel operators to assign bots to their channels. these bots are mostly a ChanServ representative in the channel.
* HelpServ, the help service bot, is used to provide help on a variety of IRC topics.
* HostServ, a host service bot, is used to allow general users to register a vhost so that their real IP address on IRC is hidden.
* RootServ, used on specific networks, is utilized by Services Root Administrators to perform Root Administrative functions for the IRC Network and Services Program.
* StatServ, a statistic services bot, is used to perform various statistical analysis on the IRC Network.
* Global, a message agent, is a specific service that is used to send global messages via services. This agent is usually given a global IRC Operator status as to be able to perform the function. This service must be on a U:Lined server so it has the ability to spoof nicknames. This service is often renamed to the name of the network (e.g. EsperNet or AtomEdge.).
* DevNull, a “message sink”; all messages sent to it are simply ignored. Named after the UNIX /dev/null.

Internet Relay Chat services

August 19th, 2008

Internet Relay Chat services (usually called IRC services) is a name for a set of features implemented in most modern Internet Relay Chat networks. Services are automated bots with special status which are generally used to provide users with access with certain privileges and protection. They usually implement some sort of login system so that only people on the access control list can obtain these services.

File sharing

August 19th, 2008

Using scripts like Sysreset, UPP, Sooplex, Polaris, users can create file servers that allow them to share files with others.

Due to the large number of people who use IRC for file sharing, some think of IRC as a form of P2P file sharing. Conversely, many users try to defeat this view by persistently discouraging it or refusing to help with it. Technically, IRC provides no file transfer mechanisms itself; file sharing is implemented by IRC clients, typically using the Direct Client-to-Client (DCC) protocol, in which file transfers are negotiated through the exchange of private messages between clients. The vast majority of IRC clients feature support for DCC file transfers, hence the view that file sharing is an integral feature of IRC.

Internationalization

August 19th, 2008

IRC lacks any general conventions about interpretation of byte codes other than ASCII, and this topic is poorly documented. The most common practice (in large IRC networks) is to transfer messages from a client to another client opaquely, without any recoding of characters. This puts the responsibility of all internationalization problems on the client.

In the early ages of IRC, many users of IRC speaking in Scandinavian and Finnish languages, used some dialects of ISO 646 as the character encoding, which placed letters like Ä Ö Å ä ö å in code points 0×5B 0×5C 0×5D 0×7B 0×7C 0×7D (US-ASCII: [ \ ] { | }). That’s why these codes are always allowed in nicknames. According to RFC 1459, { | } in nicknames should be treated as lowercase equivalents of [ \ ] respectively.[15] In the late 1990s, the use of 7bit code pages was completely abandoned, and such equivalence was dropped in some IRC daemons.

Now IRC in Western languages uses ISO-8859-1 encoding (or its derivatives) or, sometimes, UTF-8. Some IRC clients are capable of reading messages both in ISO-8859-1 or UTF-8 in the same channel, detecting proper encoding heuristically. In Finnish-speaking IRC there is some shift to UTF-8 (fi:IRC#Merkistö (Finnish)). At least two encodings other than UTF-8 are used for chats in Japanese.

In the 2000s a completely alternative approach arose in the Russian-speaking IRC world. Modern Russian-speaking IRC networks consider a message composed of characters (not bytes) and perform required recoding of Cyrillic letters if necessary; see details in ru:IRC#????????? ?????????????? IRC(Russian). An essential difference between character set issues in Russian and Latin-based scripts is that a message in Latin letters, even misinterpreted (from UTF-8 to ISO-8859 or versa), remains at least partially readable.

Modern IRC

August 19th, 2008

IRC has changed much over its life on the Internet. New server software has added a multitude of new features.

* Services: Network-operated bots to facilitate registration of nicknames and channels, sending messages for offline users and network operator functions.
* Extra modes: While the original IRC system used a set of standard user and channel modes, new servers add many new modes for such features as removing color codes from text, or obscuring a user’s hostmask (”cloaking”) to protect from denial of service attacks.
* Proxy detection: Most modern servers support detection of users attempting to connect through an insecure (misconfigured or exploited) proxy server, which can then be denied a connection. An example is the Blitzed Open Proxy Monitor or BOPM. This proxy detection software used by several networks, although that real time list of proxies is defunct since early 2006.
* Additional commands: New commands can be such things as shorthand commands to issue commands to Services, to network operator only commands to manipulate a user’s hostmask.
* Encryption: For the client-to-server leg of the connection SSL might be used (messages cease to be secure once they are relayed to other users on standard connections, but it makes eavesdropping on or wiretapping an individual’s IRC sessions difficult). For client-to-client communication, SDCC (Secure DCC) can be used.
* Ident: Provides identification to the IRC server, but in modern Internet that RFC 1413 identification is almost useless.
* Connection protocol: IRC can be connected to via IPv4, the current standard version of the Internet Protocol, or by IPv6, the next-generation version of the Protocol.

Search engines

August 19th, 2008

There are numerous search engines available to aid the user in finding what they are looking for on IRC. Generally the search engine consists of two parts, a “back-end” (or “spider/crawler”) and a front-end “search engine”.

The back-end (spider/crawler) is the work horse of the search engine. It is responsible for crawling IRC servers to index the information being sent across them. The information that is indexed usually consists solely of channel text (text that is publicly displayed in public channels). The storage method is usually some sort of relational database, like MySQL or Oracle.

The front-end “search engine” is the user interface to the database. It supplies users with a way to search the database of indexed information to retrieve the data they are looking for. These front-end search engines can also be coded in numerous programming languages. The more popular languages for such search engines and indexing spiders are Perl, PHP and C.

Most search engines have their own spider that is a single application responsible for crawling IRC and indexing data itself; however, others are “user based” indexers. The latter rely on users to install their “add-on” to their IRC client (like mIRC); the add-on is what sends the database the channel information of whatever channel[s] the user happens to be on. IRC search engines have completely automated the process of finding information on IRC and have thus contributed greatly to the popularity of IRC in recent years.

Bouncer

August 19th, 2008

A program that runs as a daemon on a server and functions as a persistent proxy is known as a bouncer. A bouncer’s purpose is to maintain a connection to an IRC server, acting as a relay between the server and client. Should the client lose network connectivity, the bouncer will archive all traffic for later delivery, allowing the user to resume his IRC session without disrupting their connection to the server.

Furthermore, as a way of obtaining a bouncer-like effect, the old UNIX user’s way of doing this is to run a (typically text-based) client on a remote server, inside a piece of screen-detaching software (e.g. GNU Screen), and using a secure shell to connect to this server, letting it relay all information, and thus letting the client archive all traffic should the connectivity be lost.

Bots

August 19th, 2008

Automated clients are called bots. As bots evolved, they began to serve as permanent points of contact for information exchange and protection agents for the channels they served, because of their superior speed when compared to humans. Presently, although many of these functions are often delegated to network-provided services which allow for registration and management of both nicknames and channels, bots remain popular and continue to be adapted to new and unexpected tasks.

Bots have been written in a variety of languages, and a wide array of implementations exist. Most modern IRC services typically implement bot-like interfaces, through which users can communicate with and control the functionality. Bots have also been created for malevolent uses, such as flooding or taking over channels, ousting their rightful owners.

August 19th, 2008

To connect to an IRC network, people most commonly will connect to an IRC network via an IRC client. The client takes the raw IRC traffic and turns it into an easy-to-use interface.

There are a great deal of IRC clients available, and are mostly separated by operating system. On Windows-based systems, one of the most popular IRC clients is mIRC.However, with the recent introduction of new clients such as Bersirc, KVIrc, Trillian, Pidgin, Visual IRC, ChatIRC and X-Chat, mIRC is beginning to see much more competition, especially with clients that are not commercial. Many people still use mIRC most likely due to the fact that it has been around for quite some time and has a wide variety of scripts available.

ircII is the canonical Unix and Linux IRC client, but its userbase has declined with the appearance of competing clients such as ircII-EPIC, BitchX, irssi, X-Chat, Konversation, etc. For Mac OS X, the most widely used clients are Snak, Ircle and Colloquy. OS X can also run most Unix-like command line and X11 IRC clients. Recently, X-Chat Aqua, a special build of X-Chat, has been gaining ground on OS X systems. Amiga IRC clients are AmIRC, WookieChat, BenderIRC. Amongst AmigaOS clones there is MomosIRC for MorphOS.

There are a number of Internet browsers with IRC clients. Opera has a built in IRC client. Mozilla Firefox does not have a built-in IRC client, though ChatZilla, a Firefox add-on, can be installed to provide access to IRC in the browser. Chatzilla is part of the SeaMonkey internet suite.

Built-in IRC is utilized by many computer games, such as War§ow, Unreal Tournament, Uplink, World of Warcraft, Zdaemon and EVE Online. The SoulSeek file sharing network is based on IRC.

For novice users, mIRC and other large-window clients can seem unnecessarily large and complex. New users may prefer instant messaging clients like Miranda IM, Pidgin or Trillian that support IRC and provide a familiar interface to the application. Alternatively web based clients such as Mibbit and webirc provide an easy way for people to access IRC.

Few clients exist for DOS, examples of which are LeetIRC and Trumpet.