This guide provides a broad overview of concepts related to IRC. It intends to be a handy resource for those who want to go deeper than the IRC article. Topics such as IRC clients, convenience, and hardening will be covered in this guide.
What is Internet Relay Chat (IRC)?
Internet Relay Chat (IRC) is a way to communicate about a specific topic of interest in real time over the internet with other people. If put into physical terms it can be thought of as a room filled with people sitting around tables. Each table has a focused topic of discussion. Some of the people at the tables are actively engaged in conversation, others are actively listening to the conversation, still others attention have moved away from the topic and are ignoring the conversation entirely. In IRC terms, each table in this illustration is a channel (often a
# is used to denote specific channels). There are many other terms that should be described in order for the reader to develop a full understanding of IRC.
When learning new technologies it is important to understand and implement precise terminology. Using correct terminology is helpful to both readers and writers because distinctions must be made in order to accurately transmit information. Several IRC related terms are used in the next sections; unless the reader is completely comfortable with the terminology of IRC it is wise to briefly scan through them to gain an understanding before proceeding:
|(IRC) Network||The system of interconnected servers that transmit conversation (and other) information. Freenode is the most popular, public IRC network for open source projects. For the Gentoo project (and its related sub-projects) the irc://irc.gentoo.org URL can be used in an IRC client in order to connect to the correct location. irc://irc.gentoo.org, for now, is simply a redirect to irc.freenode.net. Either one of these URLs can be used, although in the event that the Gentoo project should onto another network in the future irc://irc.gentoo.org is a safer URL to use. For now both URLs point to the Freenode IRC network.|
|(IRC) Server||One of the many machines hosting the IRC service software.|
|(IRC) Client||A program that connects a user to IRC Networks available in many variations.|
|User||A person who has connected to a network (you!) having standard permissions. They can generally read and write messages inside the channels they have entered.|
|(IRC) Channels||Channels are locations where communications occur; they are the "chat rooms" of IRC.
In the bullet point list below there the hash tag (
For a full list of official Gentoo related IRC channels, see the All IRC Channels page on the main site.
|(IRC) Nick name||IRC users have historically followed a convention of creating nick names (which is used as their primary handle) when to refer to themselves. Each developer in the Gentoo project has a nick name. When a user or another developer wants to get the attention of a specific developer mentioning their nick name will (generally) send some kind of notification event. Notification events are different on a per-client basis, however all good clients provide some kind of notification when the user's nick name is mentioned in the client's open IRC channels.|
|(Channel) Operator||A special type of user who can perform actions to the channel itself or on other users. Operators have full permissions and should be consulted when authority is needed.|
|Voiced (User)||A user who has some level of official recognition in the channel. They have a level of authority in between Operators and (regular) users.|
|WebChat||A method of connecting to an IRC network using a web browser client. This approach is useful when a user has a simple question or merely wants to experiment with IRC.|
|Network Policies||A set of rules defining what is expected from the Operators and Users of the IRC network infrastructure.|
|Channel Guidelines||A set of rules a user should follow while communicating in channels. Guidelines can change based on the channel and should be review prior to engaging in conversation. Typical guidelines include restrictions on the use of profanity or how many lines of text can be pasted into a buffer.|
|Buffer||The chat window that displays the text from an IRC channel is called a buffer. This term is more commonly used on command-line IRC clients such as Irssi and WeeChat.|
|Message of the Day (MOTD)||In general, each channel a user visits will have a Message of the Day (MOTD). Most IRC clients can be configured to automatically display or not display the MOTD upon joining a channel. Reading the MOTD can be helpful to determine the topic at hand, the rules of the channel, and other relevant information. For the most part MOTD text is not updated regularly, so do not be surprised to find the information a bit dated.|
|Bots||In the IRC world (because comparing IRC to a whole new world is entirely appropriate) bots have been created to help mankind accomplish his tasks. Most of the time bots lurk in various channels watching channel logs and storing up information for a time when it is needed by a human. When a piece of information is needed, special bot commands can be written to the buffer window in order to query the bot to provide requested information.
Some channels have policies for bots, so be sure to review the channel policies before having a bot lurk in the channel.
IRC is for communication. In the Gentoo project it is among the primary means of:
- Getting support (#gentoo)
- Providing support to others (#gentoo)
- Fulfilling the desire for a community (#gentoo-chat)
- Tracking or discussing bugs on Bugzilla (#gentoo-bugs)
- Discussing Wiki-related content or changes (#gentoo-wiki)
- Tracking Wiki changes (#gentoo-wiki)
- Discussing Gentoo website related changes (#gentoo-www)
- Making a complaint, feature request, or suggestion (any project specific channel)
Before an IRC client is be installed, a few of the available clients should be reviewed. IRC clients enables users to connect to an IRC server. After a connection to the server a channel can be entered. Inside channels is where the action takes place. Many clients exist, each with their own features, advantages and disadvantages. Review the list of available clients below:
|HexChat||net-irc/hexchat||https://hexchat.github.io/||A graphical IRC client based on XChat.|
|Irssi||net-irc/irssi||https://irssi.org/||A command-line IRC client with IPv6 support.|
|Konversation||net-irc/konversation||https://konversation.kde.org/||A user friendly IRC Client for KDE.|
|Pidgin||net-im/pidgin||https://pidgin.im/||Popular instant messenger client with a GTK interface.|
|WeeChat||net-irc/weechat||https://weechat.org/||A portable, multi-interface IRC client|
If needed, click the name of the client software to gather more knowledge on installation, configuration, usage, etc. Return to this article after a client has been configured.
Like on websites and forums nick names are used on IRC. Choose a nick name and setup the IRC client to use the nick name each time it connects to the network. This process is different for each client. If any extended length of time is to be spent on IRC it is important to register a nick name for personal use so that the nick name is available on each connection. Without registering a nick name other users may claim the nick name or pretend to be you.
After connecting to the Freenode Network, follow these steps to register a nick name.
Upon successful identification of a nick name the following message should appear:
unaffiliated/username is now your hidden host (set by services.)
IRC software is like any other software: it needs to be secured. There are several methods to security for IRC clients.
Cloaks help users stay secure on IRC by hiding the user's IP address. Without a cloak all users on the channel can ask for an /info or a whois on the uncloaked user and see the public IP address their client is using to connect. If the user is connected from home via their primary internet connection, which is more than likely the case, this can potentially have negative consequences. There are exceptions to this rule. Some users connect to the IRC server through proxy connections, onion router networks (Tor), or other means in order to conceal their IP actual IP address. In these cases (without a cloak) an IP address will still be visible, but it will not be the actual (original) IP address of the client.
If the reader of this guide will be doing any long-term communication over IRC, obtaining a cloak should be a high priority.
Two types of cloaks exist:
- Affiliated cloaks - These kind of cloaks are given out by various projects. They are to associate the user's nick name to a specific organization on the IRC network. When a user is on staff with an organization that has a presence on Freenode, an affiliated cloak should be obtained.
- Unaffiliated cloaks - Unaffiliated cloaks exist for all users who are not part of an organization with a presence on Freenode. These can be obtained by asking an Admin on the network. Most users think these are difficult to obtain; they are not. The Admins on the Freenode network provide unaffiliated cloaks to users who ask for them in #freenode. For the reader interested in a cloak, enter into the #freenode channel and simply ask (politely) for an unaffiliated cloak. It could take a few minutes for someone on staff to notice the query, so keep an active watch for someone to reply.
Using Tor is a method of getting a cloak on Freenode. A successful connection using Tor with SASL will result in a cloak like: ~ident@gateway/tor-sasl/account-name. It is not possible to connect directly with Tor, so an authenticated gateway provided by Freenode must be used.
- Connect to Freenode: irc.freenode.net with port 6697 (SSL)
- Generate an SSL certificate and tell NickServ about it
- Configure your client with SASL EXTERNAL or ECDSA-NIST256P-CHALLENGE using the certificate
- Connect to freenodeok2gncmy.onion:6667. Use 6697 with SSL if using EXTERNAL.
If you're using a client which doesn't support SOCKS5 such as ZNC, you may want to install socat. Example:
socat TCP4-LISTEN:1234,fork SOCKS4A:localhost:freenodeok2gncmy.onion:6667,socksport=9050to create a listener at localhost:1234 for a tunnel to Freenode's onion on port 6667 (remember to change this if you're using EXTERNAL.)
The invocation of relay chat software will change based on what chat client has been chosen for use. To start command-line clients such as irssi or weechat open a terminal window and call the program:
Client commands will change based upon the client in use. Visit the respective software article or see the client's man page for information on commands specific to the client in use.
When corrected to a server, the server software will dictate what commands are or are not acceptable. In this section the Freenode IRC network will be used as an example for server commands.
Message the ChanServ user in order to gain a list of available server commands. This can be done by issuing a
/msg ChanServ help
Or by opening a new buffer/chat window directly to ChanServ.
These kinds of commands narrow in scope to the channel they are executed in.
There are many IRC bots that are available for general use in IRC channels. Since each of them are separate projects, Bots do not have a unified command interfaces. Research the bot software or ask a user in the channel for help interacting with the bot.
It is typical for each IRC channel to have guidelines. Gentoo's official IRC guidelines can be seen on the main site, however they will be repeated here for the reader's convenience:
- Please act sensibly and maturely, abiding by the Code of Conduct.
- Please read the topic when entering a channel, it contains valuable information!
- Bots or scripts that talk or create public logs are not welcome in most channels. If in doubt, please ask.
- Please do not use CTCP VERSION or the like on users/channels without their consent.
It is important for each potential IRC user to read the Behaviour and consequences section of the Code of Conduct.
- Irssi — a powerful text-mode IRC client for connecting to internet relay chat (IRC) networks.
- WeeChat — a light, extensible, actively maintained, well documented, highly featured text-mode IRC client.