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.
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.
/server irc.mozilla.org or
/connect irc.mozilla.org will connect you to mozilla’s IRC network.
Connect to moznet and/or freenode. Configure your IRC client and save these settings if necessary.
Finding channels for projects
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*
/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
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!
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!
Find your favourite community’s channel!
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 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 <password> <email>
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.
- 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.
See your own NickServ info, or somebody else’s.
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
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”.)
/join an empty channel, like you would join any other channel.
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.
- If you have a community/project you want to register a channel for, go ahead and do that.
- Play with
/msg ChanServ HELPand
/msg ChanServ HELP SETand see what settings you can set.
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:
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 <n>: minimum users in channel -alis- -max <n>: maximum users in channel -alis- -skip <n>: skip first <n> matches -alis- -show [m][t]: show modes/topicsetter -alis- -mode <+|-|=><modes>: modes set/unset/equal -alis- -topic <pattern>: topic matches pattern -alis- -alis- Syntax: LIST <pattern> [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.
- 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?