Even though the IRC protocol is several decades old, it’s still actively used and an invaluable resource to get support through. While OSS projects are better represented (and I don’t mean just PHP based projects, I mean all kinds of OSS projects), there are lots of channels about closed source technologies and companies as well. This post isn’t intended to give you a primer on IRC, instead I’ll show you a couple of guidelines on how to get IRC to work for you.
1. Find the right channel
First of all, you need to know where to find the people. If it’s an OSS project, most likely you will find it on FreeNode. There are other networks, but the open nature of FreeNode attracts a lot of OSS projects. Once you’re connected to the network, find a listing service. Traditionally, the /list command was created for this, but the huge amount of channels (think thousands) make it’s output useless. If a network is this big, it will have a dedicated lister service. On FreeNode, this is ‘alis’. Interact with Alis through ‘/msg alis help’. The most useful command: ‘/msg alis list * -topic *keyword*’. Replace ‘keyword’ with the name of the project you’re needing support with, and it will return a list of all channels that have that word in the topic. Read the topics, and decide which channel meets your needs the best.
2. Read the sign on the door
Once you found the channel, there’s 3 things you need to do, and all are equally important: 1) Join the channel, 2) Read the topic, 3) Read the onjoin notices. The information written in the topic and onjoin notice is put in such a prominent place for a reason: it’s important and everyone assumes you have read it. It will often have some basic channel rules, a link to FAQ’s, stuff like that. Rookie mistake #1: ask something that is spelled out in the topic. As you guessed: doing that will remove all benefit of the doubt that you actually want to put in any effort to get help, and will get you ignored pretty quickly.
3. Don’t ask to ask in support channels, but do in community channels
Okay, you found the channel, you joined, and you read the basic info. Now it’s time to ask a question. By the channel name and the topic, you should know if this is a so called ‘social’/‘community’ channel, or a support channel. If it’s a community: be pollite, and ask if you can ask a support question. A good line would be “Hey all, I’m trying to get mail working in WordPress, someone around willing to give me a hand? Or a suggestion where I can get support?”. It’s not a support question (no error or behavior), it’s generic, and you acknowledge you have read the rules and know IRC politeness. If it’s a support channel: do not ask to ask, the channel is there to ask questions (see also #4).
4. Ask a meaningful question
When you can ask a support question, ask a meaningful question that will actually get you what you want. Do you really want to know if someone else used feature X, or do you want an answer to the issue you’re running into and may happen in all kinds of components you didn’t mention? Do you really want to know if people are online, or rather have people give you the info you need? Most of the non-meaningful questions ask to set an expectation. If someone says they have experience with feature X, you will start talking to them, and try your best to get that specific person to help you out. But even if that person has used that feature, they may not know anything about your issue. The expectation has been set however, and it will put everyone back. Instead, ask a complete question, directed to anyone willing to answer (that is: don’t direct it to any person or group in particular). If someone knows and has time, they will respond. Why rule out people in advance, without even telling what your question is?
5. Ask a complete question
So, you’re going to ask an actual question. Do it right, and make it a complete question. Provide any information that is relevant. Not sure what’s relevant? Try the PEACE method:
P -> Pastebin: (use a pastebin for the following items)
E -> Expected (what did you expect to get?)
A -> Actual (what are you getting instead?)
C -> Code (all relevant code. Strip out passwords, but don’t leave out code. Include function and class definitions, give the complete picture)
E -> Errors/Exceptions (the exact error or exception you get, in full. Basically: how you can tell something is wrong).
Too many people forget to mention a lot of things. This makes your question less answerable, as people cannot read your mind, nor read your screen. Don’t give someone who knows the answer the chance to ignore your question, because it isn’t clear what you have an issue with, or what is happening. If people need to pull all bits of info out of you, they will quickly give up. Make it as easy as possible for them to answer your question. Especially with developers, it will be way easier (and more fun) to help someone out, than to ignore a question, assuming it doesn’t take all kinds of effort to get all the bits and pieces together.
6. Don’t be offended by an automated response
Now that your question has been asked, it’s time for responses. Don’t be surprised (or even offended) if you get an automated response. Pretty much every support channel has a bot that responds to commands and spits out so-called ‘factoids’: automated answers. You’re not the only person in the world, and chances are high someone else ran into the same issue before you. When an issue gets asked a lot, factoids are added to the bots. These answers not only save the responders from a lot of repetitive typing, it will also make sure you get complete information, without typos. Factoids are often tuned over time, to become “the best answer” for your question. They may have more information, you can ignore that. So when you get a factoid, don’t think: “they think I’m not even worthy of a real response”, think: “hey, someone else had this too, and this info helped them, so it should help me too. I get a quick response, tuned over time, without typos”. A simple example: if you ask for the ZF2 release date in #zftalk, you will get a factoid that says:
“Any current build is *not* suitable for anything near production, using it is unsupported and will drive you mad. The current release schedule expects an Architecture Preview at ZendCon 2011, and no beta release before 2012. Progress is documented at [link], and please ask in #zftalk.dev if you want to know more about helping development”.
It’s the most complete answer that can be given right now, and you get the benefit of all the info (even more than you asked for), without typos or someone forgetting the link. Cool, eh?
7. Be patient, and smart
Chances are, you may have to wait a bit before you get an answer. When that happens: first of all, be patient. Is the channel (very) silent? You probably hit an off-time, and your best bet is to wait 15-30 minutes, and then ask when the on-time of the channel is (when most people are active). From my experience, EU & US business hours are the most active hours in most channels. If other people are talking, but not about your question, start poking at your issue and question. The more info you can give, the more chance someone knows an answer. You probably have a generic idea of where you need to look, so start poking there. It shows you aren’t lazy, and may give the piece of information that someone needed to realize they know the answer. If you can’t tell more, just wait. Only repost your question when it’s at least a 100 lines up (then people coming in later, or not paying attention at the time you posted, won’t see it anymore). The busier the channel is at the moment, the more lines you wait. You don’t want to annoy the regulars by reposting the same thing over and over again. If the channel hits 100 lines in less than 15 minutes, wait at least 15 minutes. Sure, you want your question answered as soon as possible, but giving the regulars the impression you’re demanding and/or impatient will only scare them off.
8. Give the channel some slack
When people start responding, stay polite and cut them some slack. Chances are great they have been answering the same few questions all day, for the past few weeks. This may get some a bit cranky, especially if your question isn’t complete, correct, or you “”break”” other channel guidelines. This is called support burnout, and will affect even the best of people (or myself). There is no excuse for it, but it happens. It’s generally caused by people “losing” control of time, by thinking they can help someone with just one or two lines, but somehow end up in endless conversations. Even though there is no excuse, you won’t help your case by “fighting” it. Stay polite, cut them some slack (general rule: they more than deserve that), and get what you need. If you want to do the right thing: look for channel staff (/msg chanserv access #channel list) and pm an active one mentioning you suspect support burnout. Generally spoken, they will communicate with the person in private, and make them aware of the issue. This way, you don’t appear as someone telling the regulars what to do all smirky and conceited, you get your answer, and the channel is helped by having the channel staff handle the support burnout.
9. Stick around
Once your question is answered, feel free to stick around. In most of the channels, at least half of the participants are doing the exact same thing. It’s called ‘lurking’, and can teach you a lot. And who knows, maybe you see a question you can answer, returning the favor. Hanging around in an IRC channel can take as much time as you allow it, so keep track of your other responsibilities. Often, the most brilliant minds (including the actual developers of the app) hang out in the channel, so imagine the fountain of knowledge you can tap into. And all you have to do is… well, read. Just watch your IRC client, and see the messages roll in.
10. Find the community channel
It’s very easy to make new friends on IRC. It may seem unlikely at first, when you’re just watching multiplayer notepad, but it’s very easy to get the hang of it. If you’re in a support channel: ask what the community channel is, and keep the support channel for support questions only. In the community channel, (most of) the same people hang out, and there anything goes (as long as it’s legal and within the rules of the network). You wouldn’t be the first who got a new job through IRC, make new friends for life, or find your soulmate (I am not making this up, I know a couple who met on IRC, and are now happily married).
When things don’t go as planned…
While unlikely, it is possible you run into a bad situation on IRC. If you notice the channels temperature is rising, and people are getting mean or vicious: choose the gentlemen route. Does it not involve you? Stay out of it. Only thing you can do is wait for it to calm down, and/or contact channel staff in pm. If it does involve you: stay the gentlemen, and try to “agree to disagree”. Since there is only text involved, it’s very easy to attribute certain emotions or opinions to people that they may not have at all. Don’t let your ego get the best of you, and let things calm down.
Was it really bothering you? Discuss it with that person or channel staff a couple hours later, when the emotions have cooled down. Is a channel staff member involved? Know that staff will usually back each other during “hot” situations (to form a single “voice”), and discuss it in a private channel, accessible to staff only. Wait the same couple hours, or day, and discuss it when everything is cooled down. Choose another staff member if necessary. In general: staff members are chosen because they’re smart and reasonable people, but they are humans too. During a “hot” situation their first priority will be to defuse the situation, and a proper discussion is not helping at that time. Wait for everything to cool down, and you’ll find that they are very reasonable and fair people.
When bringing it back up: be careful in the words you pick. Don’t be mistaken for someone who wants to get his right at all cost, or who needs to have the last word, but state your intentions and expectations properly, and be prepared to drop it if it hasn’t cooled down enough yet. See bringing it back up as carrying a container of liquid nitroglycerin. If you take a political-correct and empathic route, you can make things better. But too much careless movements, and things will blow up in your face, creating a situation worse than what you were trying to correct.
If things really escalate, you may happen to find yourself kicked or banned from the channel. Should this happen: think hard if you want back. If you do, wait a couple days, even a week, and see if your access is restored, or ask channel staff for it to be restored. Unless you have a history, most channels will let you back in. Take the events as a lesson, and just stay away from that topic. Chances are high that this particular channel is not (entirely) what you were looking for, but with the millions of channels, there must be a channel that suits your mindset better (for this particular topic). Simple example: strongly (and repeatedly) debating the same-sex-marriage-bans will get you banned in most social channels, even if the staff members share your views. Stay away from that topic in that particular social channel, and find a channel dedicated to politics (or even same-sex-marriage related channels) to discuss your views regarding this particular topic. You can be in over 50 channels at once, and if you use a bit of simple reasoning, you won’t get banned anywhere.
I’ve been on IRC for well over a decade, and can tell you from experience that if you keep the “netiquette” in mind a bit, you have the chance to tap into huge pools of knowledge. I’ve gotten a job through IRC, I’ve met plenty of people who are now friends through IRC, and have solved countless issues I ran into because some smart people happened to be around and were kind enough to share their wisdom. Basically: if you’re not on IRC, you’re making your life as a developer a lot harder than it needs to be. So, what are you waiting for?
TL;DR: Be patient and polite, provide as much relevant info as you can, make answering your question so easy ignoring it will take more effort to ignore it
Filed Under: Tutorial
Released: on Aug 27, 2011 under a Creative Commons Attribution-NoDerivs (CC-BY-ND) license