I worked as a one-man shop for an extended period of time. Though it was fun to wear a lot of hats, I really missed having a team of people to collaborate with. To cope, I learned to rely on the IRC community at Freenode. Freenode is a great place to bounce ideas off of intelligent people, get help when stuck on a problem, or simply to connect to other human beings. It is fun to give help, and it is a relief to receive it. Since joining Alfresco, I have had a team of brilliant people to work with, so IRC hasn’t been as important. But with my new role overseeing Community Technology, I was asked to moderate our community IRC channel. In my efforts to encourage participation and fend off the trolls (thankfully none yet), I learned about maintaining an IRC channel on Freenode and wanted to share some tips.
IRC is a great way for people who don’t otherwise know each other to meet and interact. There are lots of IRC servers around the net, some of which are juvenile in tone or focused on illegal activity. Freenode is an IRC server with a very specific mission: “to provide discussion facilities for the Free and Open Source Software communities, for not-for-profit organizations and for related communities and organizations”. It is a very friendly place and active moderators keep it comfortable and inviting. It is a great place for people new to a technology to learn the ropes, meet like-minded professionals, and help others.
Pick a client
Which client is best for you depends on your operating system. Here are two places with good lists:
Connect to the server
Configure your client to log into
Register a nick
Registering your nick prevents othemail er people from pretending to be you. On Freenode, you must provide an email to register your nick. That email is only used for password recovery. Your nick will stay registered to you as long as you identify with a password once every 90 days.
- Run this command:
/msg nickserv register <password> <email>
- Then validate your email
You can probably configure your IRC client to automatically identify your nick each time you log in, but if you need to do it manually use this command:
/msg nickserv identify <password>
Sometimes when you lose a connection IRC won’t notice right away. When you try to rejoin your channel, your nick will still be in use and will not be available to you. People often configure their clients to use an alternate nick in these scenarios, usually by appending one or more underscores (_) to their normal nick. You can also connect to a channel using more than one nick simultaneously. This is often used to play a trick or joke in a channel.
Join a channel
Discussions actually happen in a channel. The name of a “Primary Channel” starts with a single hash (“#”) and is discussion forum for a
specific project or community (like Alfresco, or your local LUG). “About
channels” start with a double hash and host conversations about a topic
or subject (for example: ##security). Feel free to join us in #alfresco for a stirring
discussion of social content management!
When you join a new channel, take a minute and read any conversation that is going on before saying anything yourself. When you feel comfortable with the context, feel free to ask a question. Just blurt out your inquiry; there is no need to first ask for permission to ask your question. If there are other people listed in the channel, but nothing seems to be going on, then be patient. Busy professionals often leave their IRC clients running all day and just check once in a while to see if there are any interesting questions to answer or discussions to read. Someone might decide to give you a hint on your question hours after you ask it. If no one responds, don’t get offended. Assume that no one knew the answer or had time at that moment and keep participating. Most important, once someone answers your question please stick around and see if you can answer anyone else’s question. You might learn something else while you are at it.
IRC is low bandwidth communication, and it is easy to misunderstand what someone else says. Assume the best in people and ask for clarification when needed. Try to write so that your words will not be misunderstood, and remember that you never know when your last sentence will show up in a search engine’s archive. Also, keep in mind that you are not as anonymous as it at first appears.
Internet Relay Chat is a very lightweight protocol for group discussions. It
doesn’t do fancy things like editing previous posts or archiving discussions.
Because it is so light weight, it is very easy to program automated systems to
monitor the channel and respond to simple commands. These are called “bots” and
can do fun things like look up a word in the dictionary, give you the weather,
or archive the discussion. Most bots have a “help” command. The NickServ bot is
how you registered your nick earlier. Try
/msg nickserv help to see what else it
Useful IRC Commands
Commands start with a “/”. Feel free to try these out.
- /help (display information about a command—works without any command too)
- /me (display text as if it were an action)
- /whois (provide information about a user)
- /info (provide network and channel information)
Administering a Channel
Creating a new channel only requires joining an empty channel—it will be created the first time it is requested. The first person to join a channel is automatically the founder of the channel, and can become an operator (aka admin) at any time. By default channels will disappear when the last external connection ends, but channels can be registered so that they do not disappear. Channels can only be registered by a user with a registered nick.
Channel management is done with the ChanServ bot (try
/msg chanserv help).
Becoming an operator
You can’t administer a channel until you become an operator with the
command. Only an operator can create other operators. If no operators are left
in a channel, the channel can no longer be administered. You shouldn’t be
operator any longer than you have to, as it creates an unhelpful class
distinction among channel users and not knowing who is operator can help keep
trolls from causing trouble. Once you have finished, drop to normal user status
Register a channel
/msg chanserv register #<channel>
Settings like operator privileges only last for the current session. To make
settings persist, Chanserv must have an entry in that channel for the nick with
the appropriate flags. Details on the flags available can be seen with
/msg chanserv help flags. Flag manipulation looks like this:
/msg chanserv op #<channel> <username> /msg chanserv flags #<channel> <username> <flags> /msg chanserv deop #<channel> <username>
Your community should probably have multiple founders so that the channel is not left without an operator should one founder stop showing up. Here is how to grant founder status to a user in your channel:
/msg chanserv flags #<channel> <username> +*F /msg chanserv flags #<channel> <username> -OV
The first command grants all flags to a user, including the founder flag (F) which must be explicitly granted (it isn’t part of the *).
The second command removes two flags which normally should not be used. “O” automatically makes the user an operator when they join the channel, which should be avoided as previously explained. “V” automatically voices a user when they join the channel. Voicing is only needed on moderated channels where new users cannot speak upon joining without the voice flag. An open channel for community participation should not require this, and not having the V flag makes it easier to identify a problem with the channel.
You can see all the flags assigned to all users in a channel with:
/msg chanserv access #<channel> list
Channel modes are settings on the channel which determine how the channel operates for all users. The most common two modes are “m” which moderates the channel and means that only voiced users will have their messages broadcast to channel participants, and “i” which makes a channel invite-only. For a community discussion channel you probably want to turn off both of these modes with a command like this:
/mode #<channel> -im
You can check the modes currently assigned to the channel with:
Setting a topic
Setting a topic helps newcomers into your channel identify what discussions
should focus on, and any other relevant information (like if the channel is
logged). Set the topic with the
There is a shortcut ChanServ command called Recover. I recommend against ever using it as it has a lot of effects that took me a long time to undo.
Kicking and Banning
The main duty of a channel operator is to (on rare occasions) wield the heavy stick of kicking or banning a user who is hurting the atmosphere of the channel.
A kick is a temporary disconnect, and will hopefully remind the user to get along with others. The syntax is:
A ban prevents that user from reconnecting while the ban is in place. This is done by setting up a filter that if matched on the username or hostname will prevent connection. You set this with a +b mode and filter as follows:
/mode #<channel> +b <filter>
Where a filter is of the format nick!user@host, and any part can be substituted with “*” as a wildcard. If you have trouble banning a user on Freenode, then pop into #freenode and ask a helpful network admin what to do. An IP ban or network-wide ban may be necessary.
To view existing bans in place in a channel use:
/mode #<channel> +b
Conclusion and Acknowledgments
Hopefully this has been helpful. For more information use the
help command and
read this page:
Thanks goes to Hazmat, who setup #alfresco years ago and helped me get admin rights. I also owe a big thank you to Prodego who volunteered some time to walk me through the necessary incantations to control the channel. And of course, thank you to all of the volunteers who keep Freenode healthy and helpful!