The best development tool is…Internet Relay Chat?

By Curtis Collicutt, Cloud Developer, Edmonton

(complex use of the weechat IRC client)

Cutting edge questions

The more I work with cutting edge technology '€” which, for me, means software that is still being heavily developed and doesn'€™t have good documentation yet, or software that isn'€™t commonly used '€” the more I find Internet Relay Chat (IRC) to be helpful.

In terms of organizational culture, Cybera likes to investigate new technology early in the adoption curve. That means asking questions! Many, many questions. And where's the best place to ask questions about new, fast developing, or underused technology? I think it'€™s IRC.

A few examples of software I use almost daily are:

  • VeeWee: An image building system (which I use with Ruby Version Manager '€” RVM)
  • PackStack: Deploys a multi-host Redhat-based OpenStack system with one command
  • OpenStack: Despite having several releases, OpenStack is still under immense development, and each release brings new and interesting technologies
  • Ansible: A python based configuration and orchestration system, under heavy development
  • Vagrant: Manages virtual machines (version 1.1 recently released, now not just VirtualBox!)

Why irc?

Developers for many open source projects, such as OpenStack, use IRC to communicate with one another. Basically, if you want something done with many of these projects '€” such as getting a patch accepted faster, or finding out why a patch failed testing, or why the continuous integration system appears to be broken '€” the best way to do it is via IRC.

Also, there are many helpful people on IRC. A good example is the #rvm channel on freenode. When you join the #rvm channel, this is the response message:

"Leave a message and stick around, someone will respond."

And they mean it! I have asked several questions, ranging from pure '€œnewbieness'€ to difficult bugs, and someone has always tried to help out. I don'€™t always find a solution, but more often than not I get the help I need, and quickly too.

irc Clients

Because I had not used IRC much previously, I was not that familiar with what clients are available.

I started out using the Textual OSX client on my Macbook. However, every time the computer went to sleep, or the screensaver came on, Textual would log me out of IRC.  Further, unlike other text messaging systems, such as 37 Signals Campfire (which we use internally) or Skype, IRC messages aren'€™t usually logged, so I can'€™t see previous conversations, which would be useful information to have.

Perhaps, if I'€™d done some more research, I would have found that Textual could support those requirements. But I began to lean towards a command line IRC client.

I wanted an IRC client that was always on, something I could run out-of-screen or tmux from the command line on a remote server. And whenever I hopped on to IRC, I wanted to be able to just login to that server and access the screen session, so I could see what people were talking about before I logged in.

To do that I needed a shell '€œserver'€ somewhere, and it just so happens that I recently came into possession of a Raspberry Pi…

Raspberry pi

(the pi shell '€œserver'€)

I decided that this was a good opportunity to put the Raspberry Pi to use, by making it an always-on IRC client. I installed the Raspbian distribution, connected the Pi up to the network, and started setting it up to login securely. I disabled the default user, installed the uncomplicated firewall (UFW) and set it to only allow port 22 inbound, set sshd not to allow password-based logins (ie. only public key authentication), and started searching for command line-based IRC clients.

Command line irc clients

I started out with irssi, which I didn'€™t mind at first. But after a day or two of use, I realized it doesn'€™t support vertical windows.

Next I tried weechat, which does support vertical windows. This is the client I'€™m currently using, though my configuration needs tweaking. Both irssi and weechat are completely configurable…almost too much so.

In the above image, I have two vertical split windows, each with a separate '€œbuffer'€ open into a different Freenode channel '€” in this case #ansible and #tripleO (which stands for OpenStack on OpenStack, by the way).

irc Channels

Here are some of the channels that I'€™m lurking in:

  • #canstack – This is the Canadian OpenStack Users Group channel
  • #ansible
  • #packstack-dev
  • #rvm
  • #openstack
  • #openstack-101
  • #vagrant
  • #salt

It seems every open source project is on freenode somewhere, so if you are working with bleeding edge projects, it'€™s still a good idea to get onto (old) IRC. Or, if you use / are interested in OpenStack, specifically in Canada, feel free to logon to #canstack.

As usual, if you have any suggestions, questions, concerns, or criticisms, let me know in the comments. 🙂