« Back
read.

IRC.

IRC is one of those "ancient" things that have been around since way before most modern internet protocols even saw the light of day. To a lot of people it's heavily obscure, heck, most people haven't even heard of it, and a lot of those that have heard of it have the wrong view of it.

It was once the big backbone of real-time internet communication, only second to e-mail in all communication, but then somehow it drifted into obscurity while still staying around. It is still quite popular in some circles such as for example among open source projects, but to the great masses it seems fairly superfluous with more "modern" IM chat systems readily available.

I've actually mostly stopped using IRC myself, but then again, I've mostly stopped using all forms of IM for personal use. Twitter is generally as instant as any discussion gets with me except for those few people who I allow to talk to me through iMessage.

Yet, I found myself setting up an IRC server for the company I work for last week. I had actually been thinking about doing so for a while, but a comment about missing our old old server from a colleague was what pushed me over the edge.

I think that IRC is underestimated as a protocol, and that it has some serious strengths that very few other protocols can match.

First of all, it supports incredibly low committal group discussions. People can easily flow in and out of the conversation and it doesn't feel as intrusive to throw something out to an entire group of people as it does when you open up a group Skype message for example. Especially for those questions that can be answered by multiple people, if someone has the time… they will most likely see it and respond and if they don't then they won't, or maybe they will do so later.

This really helps with productivity in a team as you can glance at what other people have been discussing to have an idea of what has been going on and it lets you have more open discussions on a distributed team as they are "public" much like talking to someone across the office is.

For those times when you do need to call the attention of someone in specific you can easily either start a private query, or just highlight them in a channel and usually their client will notify them. If you put in the text "ashaman" into a channel that I'm on I will most likely notice it as it will cause notifications to go off.

There are also tons of great clients for every platform for all tastes, from text-based to highly visual and from very basic to incredibly feature-rich. Even obscure systems such as Haiku have IRC clients, and as there are a plethora on more popular systems you can usually find something that fits all your needs (Personally I use Textual on OS X, Hexchat on Windows, Weechat on Linux/BSD and on iOS I used to run Colloquy when I was more active on freenode).

IRC is also a dead simple protocol, as should be apparent by doing something like this:

{%highlight bash%} ashaman@Yuki ~> telnet irc.freenode.net 6667
Trying 89.16.176.16...
Connected to chat.freenode.net.
Escape character is '^]'.
:wolfe.freenode.net NOTICE * :* Looking up your hostname... :wolfe.freenode.net NOTICE * : Checking Ident :wolfe.freenode.net NOTICE * : Found your hostname :wolfe.freenode.net NOTICE * :* No Ident response {%endhighlight%}

It doesn't actually finish connecting since it expects you to automatically pass an "Ident", which you can't due to how telnet works. If you run a raw socket, possibly using something like netcat it is easily doable, like in this example.

This, along with that there are easily usable libraries for handling IRC connections on Github or even in the standard language repositories for pretty much all languages means that it is great as an I/O protocol. You can easily write "bots" that sit in IRC channels and take commands or notify you of things.

At NUITEQ we currently have one of those that lets us keep track of what is happening. It does not yet do quite everything I want, and as such I'm constantly looking at adding more features to it. As it is written in fairly basic Ruby it is something which is really fun to hack on and easy to extend.

As such, for developers I think IRC is an underrated tool, and while it can be distracting at times if not managed properly I think the overall good that comes from it massively outweighs any negatives.

It may not be the only messaging protocol that has any one of the characteristics, but it is the only one that has all of them wrapped into one.