Internet Relay Chat

April 5, 2011

Chapter 9 – Communicating In Real-Time

When Daniel Einspanjer, a metrics software engineer at Mozilla, wants to see what the rest of his team is doing, he turns to Internet Relay Chat (IRC). Instant messenger is more focused on one-on-one conversation while IRC specializes in group of chatting. Everyone is in the same space chatting together. Daniel works from his home in Boston, Massachusetts and IRC lets him stay connected with his team.

IRC also supports smaller rooms that are formed for members of specific teams, people interested in the same topic, or just a group of friends. Daniel told me that IRC works like the company water cooler; a place to chat with friends and catch up with coworkers.

If the IRC chat rooms at Mozilla are a cocktail party, then the chat rooms at MediaWiki are a crowded sweaty rave filled with loud music, angry party goers, and a big guy who just barfed on your shoes. MediaWiki makes the software that runs Wikipedia, and the high-profile nature of that project makes sure their chat room is always crowded.

Over the three weeks I watched the MediaWiki IRC I rarely saw attendance fall below 175 people. The conversation never stopped, there were always multiple topics, and many of the posts were just mean. It left me wondering how IRC could be anything more than a time-consuming nuisance.

The IRC at Mozilla is the total opposite of the cacophony of the one at MediaWiki. Mozilla IRC rooms rarely have more than 25 people. Often it is less than 10. And most of the time they are quiet. Most of the activity comes when people are starting or ending their days; talking about problems, bragging about solutions, and catching up with each other.

IRC is a tool, and like all tools it can be used well or used poorly. When IRC works it connects far-flung teams; when it doesn’t it is just noise.

The Basics

If you are new to IRC, here are a few basics. You need an IRC client. This is the program that knows how to connect you with an IRC server. The IRC server is a place where many people come to talk. Once you get to the server you need to join a room. Join the room with /join #some_room. Once you are in a room you are ready to start.

Minimize the IRC window when you aren’t using it. An IRC chat room is a shared space for your entire team. People will be talking to each other without needing your input. Close or minimize the IRC window to get some work done. The software will alert you if someone says your name or uses any of your predefined stalk words.

Call people by username. If you want to talk to someone specific you need to reference them by username. That will cause the chat software to alert that person that you need them. For example, “Hey Zack, are we meeting this afternoon?”

Show your status by changing your username. It is a common practice to change your username to show your availability. Normally I am just Zack, but I can also be Zack_busy, Zack_inmeeting, and Zack_lunch.

Separate different work groups into different rooms. IRC supports the concept of rooms or channels. Rooms are a way to separate conversations and make them more manageable. Keep the rooms small. Even five or six active participants can overwhelm a room. A common pattern is to have a general room where you can get somebody’s attention and then private rooms where you can hold smaller conversations.

Keep it short, or pick up the phone. When you ask questions in IRC make them short and to the point. Don’t ask longer rambling questions and don’t engage in longer conversations. Tying up the IRC channel with a long conversation will make it difficult for your coworkers to ask their simple questions. If the conversation gets too long then you should switch to a conference call.

IRC robots

When Benjamin Smedberg, the coordinator and lead developer of the Mozilla XULRunner project, breaks the build a robot tells him so. Benjamin works from his home in Pennsylvania, far away from the Mozilla build servers in Mountain View. But if something goes wrong with his project Benjamin knows about it almost instantly. There is an IRC robot (a computer program) that watches the product build and tells him, and everyone else in the IRC room, when it breaks.

The robot can’t always tell who broke the build. It could have been Benjamin, but it also could be someone else. More importantly, the robot can’t tell who the best person to fix the problem is. By using IRC the robot can stick its head up and say, “Hey guys. The build is broken. Anyone know how to fix it?”

This robot could also send Benjamin’s team an email, but IRC has two big advantages. First, the robot can talk to the people who are online right now. They are the people who are most likely to fix the build fast. Second, people won’t have email telling them the build is broken when the build has been fixed hours ago.

IRC is also a welcoming place for robots. The simple chat protocol makes it very easy to write computer programs that work with IRC, and there are a lot of them. IRC robots can tell you:

  • When the build is broken
  • If a new bug is added
  • If an old bugs gets fixed
  • When someone checks in code
  • When integration tests fail

The team could also use email, but IRC is much less disruptive. Many companies don’t want email notifications every time new code is checked in because the volume of email can be disruptive. With an IRC channel there is no disruption of your work. Log into it when you care and turn it off when you don’t.

IRC robots don’t have to talk; they can also just listen. Add an IRC robot to archive all of your conversations so you can refer back to them later.

Why you should try IRC

IRC is much more inclusive than IM or email for one simple reason: you don’t have to know someone’s name to talk to them. When I want to email someone I need to know their email address. It is the same for IM. On IRC I just log in and see who is there. When I was researching this book Daniel Einspanjer told me a lot about how Mozilla works. He also helped me talk to other Mozilla team members. I didn’t know Daniel ahead of time. I met him through IRC.

My meeting Daniel is a sort of macro example, but it works on a micro scale too. Have you ever had a question and not known who to ask? Ever a had a team issue and didn’t know who to tell about it? IRC lets you reach out to any team member who is online.

IRC also goes a long way towards preventing exclusionary conversations. When you talk to one person in an instant message you are sharing your ideas with them. Convince them that you are right and the two of you have made a decision. However, the rest of your team is out of the loop. They don’t know what decision you made or why. Do the same thing over IRC and other people can get involved. Instead of making a decision with just two people you can involve the rest of the team.

Working remotely is all about creating connections with your team. IRC lets you create those connections in a way that scales for your entire team. And if you needed another reason to use IRC: it’s free!

Previous post:

Next post: