Zenhack.net

Public Service Announcement: IRC Is Not A Synchronous Medium

08 Jan 2017

The other day, something fairly common happened in the #sandstorm IRC channel: In the span of the twenty minutes I was away from my computer, someone dropped into the channel, asked if anyone was around, and then left after a couple minutes of no response.

I suspect many of my readers will already know this, but perhaps some won’t, and perhaps this post will serve as a reference for folks looking to explain how IRC works to others.

Here’s the key thing this person clearly hadn’t learned, in a nutshell: IRC is not really a synchronous medium.

A phone call is the canonical synchronous networked communication medium for human conversation – you call someone up, they get a notification that someone is calling them (the phone rings, or in this day and age either vibrates or plays a tune that suits the owner’s sense of whimsy), they pick up, and you have a conversation.

Email is just the opposite. You send a message without regard to whether the person is at their computer and able to read it right now. They’ll check their email at some point in the relatively near future – depending on the person often between hours and days. They’ll get back to you when they get the chance.

Instant messaging is a little less synchronous than a phone call – you can send someone a message when they’ve stepped out to get some coffee, and they’ll get it when they get back and be able to directly respond. They don’t need to pick up. But it’s still fairly synchronous. You have a Buddy List, which gives you reasonably reliable information about whether your contacts are logged in, away from their computer, busy, or available to talk. In the later case, you can typically expect a fairly quick response. In practice, this mostly results in synchronous communication. You send someone a short message like “hey,” they respond quickly, and a conversation ensues.

People new to IRC often expect it to be like instant messaging. It emphasizes group chats over one-on-one conversations (though those are supported as well), but otherwise it looks pretty similar at a first glance. You don’t have a “buddy list,” but if you’re in the channel you can see who else is there, and there is an away message command, so that should do the same thing, right?

Well, no. It turns out IRC is somewhere between instant messaging and email. There are various reasons for this:

The first point is especially important. As I’m writing this, #sandstorm has more than a hundred people present. ##crypto has close to a thousand. I’m idling in around ten different channels; if I read everything that went through them I’d never get anything done.

If you’re on IRC and want someone specific to see your message, including their nick in your message will typically cause their client to do something extra to grab their attention. This usually entails at least highlighting their nick, but the details may vary from client to client.

The upshot of all this is that you shouldn’t expect people to answer you immediately when you pop into a channel. Furthermore, if you just say “is anyone around?” you invite this scenario:

bob: Hey is anyone around?
(When no-one responds immediately, bob goes to get a cup of coffee)
(10 minutes passes)
alice: bob: What's up?
(alice goes back to work while waiting for a response)
(5 minutes passes)
bob: I'm having trouble doing suchandsuch to the whatsit. It's
     giving me a strange error about missing whosamacallits.
(another 2 minutes passes)
alice: have you tried ...

If Bob had included his question in the first message, it would have saved a good chunk of time. “Don’t ask to ask” isn’t nerds being anti-social; you might include a “Hey” at the top of an email, but you wouldn’t wait for a reply before mentioning the thing you wanted to talk about. You would wait for a hello back on the phone, and you probably would in an instant message as well. You probably wouldn’t in a text message (SMS), which is probably the closest thing on the spectrum to IRC that I can think of.

Folks misunderstanding where IRC lies on this spectrum is the source of a fair amount of confusion. Now you know; ask your question up front, and be ready to wait a bit for a response.