IRC isn’t just old school: enriching community through text-based chat


IRC is a great medium for communities to get together, answer users’ questions and collaborate. Although it may seem primitive, its low-bandwidth consumption and wide variety of ways to access it make it an ideal way for people to connect from any location or background.

There are virtually unlimited clients (programs) available to connect to IRC networks. Their UI does the work of presenting the protocol in a friendly format, tailored to the user’s needs.

Many popular FOSS projects are on IRC already, and it is likely that most of the open source software you use will have their own channel (or channels) for discussion.

A channel’s name will almost always begin with a #, such as #myChannel. Users are usually allowed to create their own channels. You can also PM (Private Message) other users which allows you to talk in private with a specific user.

Aside from chatting, IRC allows further features & extensions by 3rd party tools and services. For example, some individuals & companies run bouncers. Bouncers stay permanently online and connect to whichever IRC network and channels you wish. When you come back online, they replay your messages back to you. This allows you to maintain a constant connection to IRC without actually keeping your personal machine online all the time.

Also, most IRC networks have services, which are bots that appear as fellow users. They help you register nicknames and channels, and help with other network-related tasks—but more on that later.

Although IRC use in general has been declining, the use of IRC networks meant for project collaboration, like freenode, has increased consistently.

Connecting to a network

Just as different websites hold several individual pages, there are many IRC networks, each with their own channels.

freenode (IRC address: irc://chat.freenode.net) is an IRC network used by many popular open source projects to provide support for their communities, discuss development, and collaborate. Mozilla projects, meanwhile, are on Mozilla’s own IRC network, irc://irc.mozilla.org.

Most clients have a graphical interface that allows you to choose a network, and define other networks if they don’t appear on the pre-populated list. Most clients (even graphical) still process text commands, such as the /server <server address> or /connect <server address> commands to connect to a new server.

Xchat's network list
Xchat’s network list
Xchat connected to freenode
Xchat connected to freenode

They will usually interpret anything beginning with / as a command to be handled by the client or sent to the server. So if you type /server irc.freenode.net or /connect irc.freenode.net in your client’s input box, you will be connected to freenode. Anything not beginning with a / will be sent to the currently selected target, a channel or other user.

Irssi doesn’t have a graphical interface and uses the <code>/connect</code> command to get on networks.
Irssi doesn’t have a graphical interface and uses the /connect command to get on networks.
Irssi connected to freenode
Irssi connected to freenode

Similarly, /server irc.mozilla.org or /connect irc.mozilla.org will connect you to mozilla’s IRC network.

Adding moznet as a network to xchat
Adding moznet as a network to xchat

xchat connected to moznet
xchat connected to moznet

Exercise:
Connect to moznet and/or freenode. Configure your IRC client and save these settings if necessary.

Finding channels for projects

On IRC

Many open source projects use freenode to host channels for communication.

On freenode, you can search for channels using one of its services (more on services later…), ALIS (Advanced channel LIsting Service).

For example, to search for channels with a name matching ‘science’, you’d use the command:

/msg alis list *science*

The /msg command just sends a message to the user in the next parameter. ALIS is the service, represented by a user in the network. list *science* is the command we’re sending it. The wildcards (*) are needed, because channels have at least one “#” character in the beginning of the name (i.e. science wouldn’t match anything, as the channel is “##science”) and because we want to match names that are like ”#science-something” as well.

The above command should make alis send you a notice with the data:

10:28 -*alis(alis@services.)- Returning maximum of 60 channel names matching '*science*'
10:28 -*alis(alis@services.)- ##askscience                                        23 :Welcome to the official Askscience IRC channel (http://askscience.reddit.com)
(...more)
10:28 -*alis(alis@services.)- ##cognitivescience                                   
10:28 -*alis(alis@services.)- ##science                                           81 :Welcome to the science channel! | Rules: https://j.mp/72ZKFnZ | Channel Survey: http://is.gd/N8V1Gc | Topics that are ...
 (...more)
10:28 -*alis(alis@services.)- End of output
The output after running <code>/msg alis list *science*</code></p><p>You can see the names of channels, users, and topics there
The output after running /msg alis list *science*

You can see the names of channels, users, and topics there

Let’s say, for example, that you want to join one of these channels, like ##science. Just type /join ##science, and a window should pop up in your client! Depending on your client, this could look any number of ways, but if you join more than one channel, you will usually be able to see each channel (usually as tabs) in the client and switch between them. You can then just type your message in the ##science window, and all other joined users will receive it!

xchat joined to the ##science channel, you can see the option to switch between “freenode” (the server window) and “##science” (the channel).
xchat joined to the ##science channel, you can see the option to switch between “freenode” (the server window) and “##science” (the channel).
 Irssi is a little different, windows are numbered from 1 to whatever the last window is, and window numbers flash when there is activity.<
Irssi is a little different, windows are numbered from 1 to whatever the last window is, and window numbers flash when there is activity.

Moznet doesn’t have ALIS to search for channels, but you can type /list *channel* to find all channels matching *channel*. But be careful with the /list command; on large networks like freenode and moznet, you will be spammed with results if you do it with no parameters.

Most Mozilla projects will mention in their wiki what their moznet channel is, if there is one. Additionally, you can see a list of the project channels on the Mozilla Wiki. You can always try running /join followed by the project name as well. For example /join #firefox will get you to the channel for firefox and /join #webmaker will get you to the channel for webmaker.

Although there are many IRC networks, most communities that use IRC will specify which network their channel is on, so you don’t have to play guesswork with the network name. There are, however, tools to search for IRC networks such as searchirc.com

On the project website

Most projects will have a “contact” or “support” page that will link them to their IRC channel. For example, jquery has irc.jquery.org which explains #jquery is the support channel for jquery on freenode. You’d just type /join #jquery in your IRC client, and ask questions there!

Exercise:
Find your favourite community’s channel!

Services

Services are users/bots that take commands and enhance the IRC experience. We talked about ALIS earlier, this is one of the services available in freenode.

The most useful services are NickServ, ChanServ, and on networks that offer it, ALIS.

NickServ

NickServ allows registering your account, so that your nickname is yours and only yours. You associate a password with it, and use that password to identify yourself when you return.

Because some networks vary, /msg NickServ HELP will get network-specific NickServ examples, but the following method for registering works on both freenode and moznet:

/msg NickServ REGISTER  

This will register a nickname (replace “” and “” with a password of your choosing, and a valid email that is preferably your own)

You will get a confirmation from NickServ telling you if you succeeded or typed the command wrong. You may also have to access your email inbox to confirm your registration.

After registration is complete, you can use the command /msg NickServ IDENTIFY <password> to register yourself and keep your nickname every time you log in. Again (if you replace “password” with your password), NickServ will give you confirmation that you’ve been logged in.

NickServ registration is super important as it prevents users from impersonating you, ensures you keep your nick, and allows you to manage channels.

Registering a nickname on freenode. You can see the notices NickServ sent, shown as “-NickServ- message here” and the messages we sent to NickServ as ”>Nickserv< message here”
Registering a nickname on freenode. You can see the notices NickServ sent, shown as “-NickServ- message here” and the messages we sent to NickServ as ”>Nickserv< message here”

Exercise:

  • Register your nickname on moznet and/or freenode!
  • Play around with nickserv and find what else you can do!
    For example, try to set some metadata on your account (like the one I have in mine /msg NickServ INFO erry) with /msg nickserv HELP SET PROPERTY

Seeing information about users

You can use the /whois command to learn some information, such as if someone is identified to nickserv. For example, /whois errietta will produce the following:

* [errietta] (erry@freenode/staff/erry): Errietta Kostala (http://errietta.me/)
* [errietta] #perl 
* [errietta] dickson.freenode.net :US
* [errietta] is using a secure connection
* [errietta] is logged in as erry
* [errietta] End of WHOIS list.

You can see this user is identified by the penultimate line: * [errietta] is logged in as erry – if they were not identified, it would not be there.

Additionally, you can use /msg nickserv info followed by the user name. The output of this command will likely vary between networks. On freenode, you’ll see the following for the command /msg nickserv info tt :

-NickServ- Information on tt (account tt):
-NickServ- Registered : Jun 13 20:14:05 2009 (5 years, 10 weeks, 1 day, 14:59:52 ago)
-NickServ- User reg.  : May 27 18:45:23 2006 (8 years, 12 weeks, 5 days, 16:28:34 ago)
-NickServ- Last seen  : now
-NickServ- Flags      : HideMail, Hold, Private
-NickServ- tt has enabled nick protection
-NickServ- *** End of Info ***

Not only can you can see when they registered their account, but the last time they were online. “last seen: now” means they are currently online.

Exercise:
See your own NickServ info, or somebody else’s.

ALIS

As discussed above, ALIS is useful for searching for channels on freenode. Running /msg alis help list is a great way to learn how it works.

Basic command use:

/msg alis list *channelname* -topic *topic* -min 50

Will match all channels with the name matching “channelname”, the topic matching “topic”, and with a minimum of 50 users

Channels matching name and topic “linux” with a minimum of 500 users
Channels matching name and topic “linux” with a minimum of 500 users

Exercise:
Find more channels with alis. Try playing around with the parameters to limit your search more.

ChanServ / Registering a channel for your community

Just as NickServ allows registering your nickname, ChanServ allows registering channels. If you run a neat open source project, and you want to claim a channel for your users to contact you, you can register it on a network like freenode. (Read the network’s policies & guidelines first though—freenode’s can be found at “registering a channel on freenode”.)

First, /join an empty channel, like you would join any other channel. /join #MyAwesomeNewProject

Then, you can /msg chanserv register #MyAwesomeNewProject (this commands syntax varies per network, see /msg chanserv help)

ChanServ will tell you if you succeeded or failed, like NickServ above.

That’s all! You’re now the proud owner of a channel and you can direct your users to it. Most networks have webchat interface you can take advantage of, and you can also mention the IRC network and channel name you are using in your website, mailing list, twitter profile, etc.

Registering awesome channel
Registering awesome channel
A “different user” who is connected through webchat.
A “different user” who is connected through webchat.

Exercise:

  • If you have a community/project you want to register a channel for, go ahead and do that.
  • Play with /msg ChanServ HELP and /msg ChanServ HELP SET and see what settings you can set.

Getting help

IRC commands can be intimidating to some people when they first encounter them, but they’re not that different from normal terminal commands; you get used to the idea eventually.

If you need help with anything related to IRC, you can usually join an IRC network’s #help channel if you need help with using the IRC network itself. Mozilla also has this handy wiki page:
https://wiki.mozilla.org/IRC

Additionally, help documentation with examples is almost always built in. In our alis example above, running /msg alis help list will return help for the list command.

 -alis-  ***** alis Help *****
 -alis-  Help for LIST:
 -alis-
 -alis-  LIST gives a list of channels matching the
 -alis-  pattern, modified by the other options.
 -alis-
 -alis-  The pattern can contain * and ? wildcards.
 -alis-
 -alis-  Options are:
 -alis-      -min : minimum users in channel
 -alis-      -max : maximum users in channel
 -alis-      -skip : skip first  matches
 -alis-      -show [m][t]: show modes/topicsetter
 -alis-      -mode <+|-|=>: modes set/unset/equal
 -alis-      -topic : topic matches pattern
 -alis-
 -alis-  Syntax: LIST  [options]
 -alis-
 -alis-  Examples:
 -alis-      /msg alis LIST * -min 50
 -alis-  ***** End of Help *****

Messaging services and experimenting with the term “help” is always a good idea. It’s hard to break anything, and easy to learn how to get more use out of these tools.

Exercise

  • Look at other services, like MemoServ. Can you find the HELP command on how to use it and find out how to send a memo to someone?

One Comment

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.