IRC / Real-Time Chat Systems (sistemas de bate-papo em tempo real)

Muitos projetos oferecem salas de bate-papo em tempo real using Internet Relay Chat (IRC), fóruns onde usuários e desenvolvedores podem trocar perguntas entre si e conseguir respostas instantâneas. Apesar de você poder rodar um servidor IRC do seu proprio website, isto geralmente não vale a pena. Ao invés disto, faça o que todo mundo faz: rode os seus canais IRC no Freenode (http://freenode.net/). Freenode garante a você o controle necessário para administrar os canais IRC do seu projeto,[19] enquanto também lhe poupa do não-insignificante trabalho de manter, você proprio, um server IRC.

A primeira coisa a se fazer é escolher o nome do canal. A escolha mais obvia é o nome do seu projeto—se estivver disponível no Freenode, então use-o. Caso contrário, tente escolher algo parecido com o nome do seu projeto e fácil de lembrar. Anuncie a disponibilidade do projeto no website. Por exemplo, isto aqui aparece proeminentemente na home page do Subversion:

Se você está usando Subversion, nós recomendamos que você participe da lista de emails users@subversion.tigris.org , e leia o Subversion Book e o FAQ. Você também pode fazer perguntas no IRC no canal irc.freenode.net  #svn.

Alguns projetos têm múltiplos canais, um por subtópico. Por exemplo, um canal para problemas de instalação, outro para questões, outro para desenvolveimento, etc. (“Handling Growth” em Capítulo 6, Communications discute e explica como dividir múltiplos canais). Quando o seu projeto é jovem, o ideal é que haja apenas um canal, com todos conversando em conjunto. Mais tarde, quando a relação usuário-por-desenvolvedor aumentar, separar os canais pode se tornar necessário.

Como as pessoas saberão de todos os canais disponíveis, e em qual canal falarem? E quando falarem, como irão saber quais são as convenções locais?

A resposta é avisar as pessoas configurando o tópico do canal.[20] O tópico do canal é uma curta mensagem que cada usuário vê assim que entra no canal. Esta mensagem dá uma pequena orientação para novatos, e também aponta para mais informações. Por exemplo:

Você está falando agora em #svn

O tópico para #svn é: Fórum para questões de usuário do Subversion - veja também 
http://subversion.tigris.org/. || Discussões sobre desenvolvimento 
acontecem em #svn-dev. || Por favor não cole longas mensagens aqui; ao invés disto, 
use um serviço como http://pastebin.ca/ . || NOVIDADES: Subversion 1.1.0
foi lançado, veja http://svn110.notlong.com/ para detalhes.

Isto é conciso, no entanto informa aos novatos o que eles precisam saber. Esclarece exatamente para quê existe o canal, assim como também a página do projeto (caso alguém passe pelo canal sem antes ter visto a página do projeto), menciona um canal relacionado, e dá alguma orientação sobre colar mensagens.

Bots (robôs)

Muitos canais IRC tecnicamente-orientados têm um membro não-humano, também conhecido como bot, que é capaz de guardar e devolver informações em respostas a comandos específicos. Tipicamente, o bot é endereçado como qualquer outro membro do canal, ou seja, os comandos são enviados a ele como se você estivesse "falando" com ele. Por exemplo:

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

Com isto, o bot (que está logado no canal com o nome de ayita) a lembrar uma URL como resposta ao pedido "diff-cmd". Agora nós podemos nos endereçar ao ayita, pedindo-o que avise outro usuário sobre diff-cmd:

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

A mesma coisa pode ser realizada através de um conveniente atalho:

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

O comando exato e o comportamento gerado varia de bot para bot. O exemplo acima é com o ayita (http://hix.nu/svn-public/alexis/trunk/), o qual normalmente é uma instância rodando em #svn no freenode. Outros bots incluem o Dancer (http://dancer.sourceforge.net/) e o Supybot (http://supybot.com/). Note que nenhum privilégio especial é necessário para rodar um bot. Um bot é um programa cliente; qualquer um pode iniciar um e o configurar para ouvir a um canal/servidor em particular.

Se o seu canal tende a receber as mesmas perguntas vez após vez, eu recomendo fortemente que um bot seja configurado. Apenas uma pequena porcentagem dos usuários do canal vão adquirir a experiência necessária para manipular o bot, mas estes usuários irão responder a uma porcentagem desproporcionalmente alta de questões, já que o bot permite-os que respondam de modo muito mais eficiente.

Arquivando o IRC

Apesar de ser possível arquivar tudo que acontece em um canal IRC, isto não é necessariamente comum. Conversas em IRC podem ser nominalmente públicas, mas muitas pessoas as consideram como conversas informais, semi-privadas. Usuários podem se importar menos com gramática, e muitas vezes expressar opiniões (por exemplo, sobre outro programa ou outros programadores) que eles não gostariam que fossem arquivado para sempre em um diretório online.

Claro, haverão momentos em que trechos que serão guardados, e isto é ok. Muitos clientes IRC podem fazer log de uma conversa a partir desde que o usuário peça, ou, além disso, é possível também apenas copiar e colar a conversa do IRC para um forum permanente (sendo comum o bug tracker). Mas criar logs indiscriminadamente pode deixar alguns usuários receosos. Se você for arquivar tudo, tenha certeza de avisar isto no tópico do canal, assim como passar a URL para o diretório onde serão guardados os arquivos.



[19] Não há exigências ou expectativas que você doe para o Freenode, mas se você ou o seu projeto puderem fazê-lo, por favor considere uma doação. Ele é uma instituição filantrópica isenta de impostos nos Estados Unidos e realizam um serviço valioso.

[20] Para configurar o tópico do canal, use o comando /topic. Todos os comandos no IRC começam com "/". Veja http://www.irchelp.org/ se se você não está familiarizado com o uso e a administração do IRC; em particular, http://www.irchelp.org/irchelp/irctutorial.html é um excelente tutorial.