Friday, December 4, 2009

3.5. IRC/Real-Time Chat Systems











 < Day Day Up > 







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.



















     < Day Day Up > 



    No comments: