3.5. IRCReal-Time Chat Systems


3.5. IRC/Real-Time Chat Systems

Many projects offer real-time chat rooms using Internet Relay Chat (IRC), forums where users and developers can ask each other questions and get instant responses. While you can run an IRC server from your own website, it is generally not worth the hassle. Instead, do what everyone else does: run your IRC channels at Freenode (http://freenode.net/). Freenode gives you the control you need to administer your project's IRC channels,[2] while sparing you the not-insignificant trouble of maintaining an IRC server yourself.

[2] There is no requirement or expectation that you donate to Freenode, but if you or your project can afford it, please consider a contribution. They are a tax-exempt charity in the Unitd States, and they perform a valuable service.

The first thing to do is choose a channel name. The most obvious choice is the name of your project if that's available at Freenode, then use it. If not, try to choose something as close to your project's name, and as easy to remember, as possible. Advertise the channel's availability from your project's web site, so a visitor with a quick question will see it right away. For example, this appears in a prominently placed box at the top of Subversion's home page:

If you're using Subversion, we recommend that you join the users@subversion.tigris.org mailing list, and read the Subversion Book (http://svnbook.red-bean.com/) and FAQ (http://subversion.tigris.org/faq.html). You can also ask questions on IRC at irc.freenode.net channel #svn.

Some projects have multiple channels, one per subtopic. For example, one channel for installation problems, another for usage questions, another for development chat, etc. (Section 6.4 in Chapter 6 discusses how to divide into multiple channels). When your project is young, there should only be one channel, with everyone talking together. Later, as the user-to-developer ratio increases, separate channels may become necessary.

How will people know all the available channels, let alone which channel to talk in? And when they talk, how will they know what the local conventions are?

The answer is to tell them by setting the channel topic.[3] The channel topic is a brief message each user sees when they first enter the channel. It gives quick guidance to newcomers, and pointers to further information. For example:

[3] To set a channel topic, use the /topic command. All commands in IRC start with a slash (/). See http://www.irchelp.org/ if you're not familiar with IRC usage and administration; in particular, http://www.irchelp.org/irchelp/irctutorial.html is an excellent tutorial.

You are now talking on #svn Topic for #svn is Forum for Subversion user questions, see also http://subversion.tigris.org/. || Development discussion happens in #svn-dev. || Please don't paste long transcripts here, instead use a pastebin site like http://pastebin.ca/. || NEWS: Subversion 1.1.0 is released, see http://svn110.notlong.com/ for details.

That's terse, but it tells newcomers what they need to know. It says exactly what the channel is for, gives the project home page (in case someone wanders into the channel without having first been to the project web site), mentions a related channel, and gives some guidance about pasting.

Paste Sites

An IRC channel is a shared space: everyone can see what everyone else is saying. Normally, this is a good thing, as it allows people to jump into a conversation when they think they have something to contribute, and allows spectators to learn by watching. But it becomes problematic when someone has to provide a large quantity of information at once, such as a debugging session transcript, because pasting too many lines of output into the channel will disrupt other conversations.

The solution is to use one of the pastebin or pastebot sites. When requesting a large amount of data from someone, ask them not to paste it into the channel, but instead to go to (for example) http://pastebin.ca/, paste their data into the form there, and tell the resulting new URL to the IRC channel. Anyone can then visit the URL and view the data.

There are a number of free paste sites available now, too many for a comprehensive list, but here are some of the ones I've seen used: http://www.nomorepasting.com/, http://pastebin.ca/, http://nopaste.php.cd/, http://rafb.net/paste/, http://sourcepost.sytes.net/, http://extraball.sunsite.dk/notepad.php, and http://www.pastebin.com/.


3.5.1. Bots

Many technically oriented IRC channels have a non-human member, a so-called bot that is capable of storing and regurgitating information in response to specific commands. Typically, the bot is addressed just like any other member of the channel, that is, the commands are delivered by "speaking to" the bot. For example:

<kfogel> ayita: learn diff-cmd = http://subversion.tigris.org/faq.html#diff-cmd <ayita>  Thanks!

That told the bot (who is logged into the channel as ayita) to remember a certain URL as the answer to the query diff-cmd. Now we can address ayita, asking the bot to tell another user about diff-cmd:

<kfogel> ayita: tell jrandom about diff-cmd <ayita>  jrandom: http://subversion.tigris.org/faq.html#diff-cmd

The same thing can be accomplished via a convenient shorthand:

<kfogel> !a jrandom diff-cmd <ayita>  jrandom: http://subversion.tigris.org/faq.html#diff-cmd

The exact command set and behaviors differ from bot to bot. The above example is with ayita (http://hix.nu/svn-public/alexis/trunk/), of which there is usually an instance running in #svn at freenode. Other bots include Dancer (http://dancer.sf.net) and Supybot (http://supybot.sf.net). Note that no special server privileges are required to run a bot. A bot is a client program; anyone can set one up and direct it to listen to a particular server/channel.

If your channel tends to get the same questions over and over, I highly recommend setting up a bot. Only a small percentage of channel users will acquire the expertise needed to manipulate the bot, but those users will answer a disproportionately high percentage of questions because the bot enables them to respond much more efficiently.

3.5.2. Archiving IRC

Although it is possible to archive everything that happens in an IRC channel, it's not necessarily expected. IRC conversations may be nominally public, but many people think of them as informal, semi-private conversations. Users may be careless with grammar, and often express opinions (for example, about other software or other programmers) that they wouldn't want preserved forever in an online archive.

Of course, there will sometimes be excerpts that should be preserved, and that's fine. Most IRC clients can log a conversation to a file at the user's request, or failing that, one can always just cut and paste the conversation from IRC into a more permanent forum (most often the bug tracker). But indiscriminate logging may make some users uneasy. If you do archive everything, make sure you state so clearly in the channel topic, and give a URL to the archive.



Producing Open Source Software
Producing Open Source Software: How to Run a Successful Free Software Project
ISBN: 0596007590
EAN: 2147483647
Year: 2004
Pages: 137
Authors: Karl Fogel

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net