# IRC / 实时聊天系统
许多项目使用*互联网多线交谈*(*IRC*)提供实时聊天室,作为用户和开发者互相提问并得到及时答复的讨论场所。即使你*可以*在你的服务器运行IRC服务器时,也不必为此事麻烦。而应该象其他人一样:在Freenode([http://freenode.net/](http://freenode.net/))运行你的IRC频道。Freenode给了你足够的权利来管理你项目的IRC频道,[[17](#)]可以让你摆脱维护IRC服务器这类无意义的麻烦。
首先要选择一个频道名称。最明显的选择是你的项目名—如果在Freenode存在,就使用它。如果不存在,可以选择一个与项目名接近的名称,尽可能的易于记忆。在你的项目网站上将频道广而告之,这样期望快速提问的访问者可以立刻看到它。例如,Subversion主页上显著放置的方框中所出现的:
> *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`.
一些项目有多个频道,每个子主题一个。例如,一个频道关注安装问题,另一个是使用问题,还有一个是开发聊天,等等。 ([Chapter 6, *交流*](# "Chapter 6. 交流")的[the section called “处理成长”](# "处理成长")讨论了如何划分多个频道)。当你的项目还年轻时,应该只有一个频道,所有人在一起讨论。之后,随着用户到开发者比率增加,也就有必要分开单独的频道。
人们如何知道所有的已有频道,以及在哪个频道讨论?他们何时交谈,如何知道当地的习惯?
答案是通过设定*频道主题*告诉他们。[[18](#)]频道主题是每个用户在进入频道时看到的一些信息。可以给每个新人一份快速指南,指出更进一步的信息。例如:
~~~
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.
~~~
内容很扼要,但是它告诉新人所必需知道的东西。它精确的说明频道的目的,提供了项目的主页(如果某人是游荡近来,而并非从项目网页过来),提及相关的频道,并给出一些指导。
**粘贴站点**
一个IRC频道是一个共享空间:任何人可以看到每个人的谈话。通常情况下,这是一个好事情,这允许人们在感到能做出贡献时跳入谈话,也可以通过观察学习。但如果某人希望一次提供一大段信息时,例如调试会话脚本,因为会输出很多行,会扰乱其他人的对话。
解决办法是使用*pastebin*或*pastebot*站点。当向某人要求一大块数据时,告知他们不要粘贴到频道中,而是去(例如)[http://pastebin.ca/](http://pastebin.ca/),将数据粘到那里的表单中,并在IRC频道中告知结果的URL。任何人可以访问这个URL并察看数据。
现在有许多免费的粘贴站点,完整地例子太多了,这里是我曾经用过的:[http://www.nomorepasting.com/](http://www.nomorepasting.com/)、[http://pastebin.ca/](http://pastebin.ca/)、[http://nopaste.php.cd/](http://nopaste.php.cd/)、[http://rafb.net/paste/](http://rafb.net/paste/)、[http://sourcepost.sytes.net/](http://sourcepost.sytes.net/)、[http://extraball.sunsite.dk/notepad.php](http://extraball.sunsite.dk/notepad.php)、和[http://www.pastebin.com/](http://www.pastebin.com/)。
### 机器人(Bots)
许多面向技术的IRC频道有一个非人的成员,叫做*机器人(bot)*,它可以对特定的命令返回信息。通常情况下,这个机器人就像频道中的其它成员一样,命令是通过谈话传递给的机器人。例如:
~~~
<kfogel> ayita: learn diff-cmd = http://subversion.tigris.org/faq.html#diff-cmd
<ayita> Thanks!
~~~
这是告诉机器人(以ayita登入了频道)记住以特定的URL回答“diff-cmd”的提问,现在其他用户可以向ayita讯问,并获取diff-cmd的信息:
~~~
<kfogel> ayita: tell jrandom about diff-cmd
<ayita> jrandom: http://subversion.tigris.org/faq.html#diff-cmd
~~~
通过速记法可以得到同样的结果:
~~~
<kfogel> !a jrandom diff-cmd
<ayita> jrandom: http://subversion.tigris.org/faq.html#diff-cmd
~~~
准确的命令集和行为方式各不相同。以上的例子来自`ayita`([http://hix.nu/svn-public/alexis/trunk/](http://hix.nu/svn-public/alexis/trunk/)),通常在freenode的`#svn`运行着一个实例。其它机器人包括Dancer([http://dancer.sourceforge.net/](http://dancer.sourceforge.net/))和Supybot([http://supybot.com/](http://supybot.com/))。请注意,运行机器人无需服务器的权限。一个机器人就是一个客户端程序;任何人可以设置一个并监听特定的服务器/频道。
如果你的频道一次次的得到同样的问题,我强烈推荐你设置一个机器人。只有一小部分频道用户会获得需要处理机器人的专业技能,而这些用户会回答不成比例的大部分问题,因为机器人可以帮助他们有效率的回复。
### 归档IRC
尽管可以将IRC频道发生的任何事情都归档,但这不是必要的。IRC对话名义上是公开的,但是许多用户认为这是非正式的,半私密的对话。用户会对语法不是很在意,而且经常会表达意见(例如,关于其它软件或其他程序员),这些都不是他们希望永久保存归档的。
当然,有时候*摘要*必须能够保存。大多数IRC客户端可以在用户要求的情况下记录对话到一个文件,如果不能,人们也可以仅仅是将对华拷贝和粘贴到固定的论坛(经常是bug跟踪系统)中。但是不加区分的归档所有内容会让某些用户不悦。如果你需要归档所有的事情,请确认你已经在频道主题明确说明,并给出了归档的URL。
[[17](#)] 没有要求或期望你能够为Freenode捐献,但是如果你或你的项目能够负担,请考虑贡献一下。他们在美国有一个免税的慈善团体,提供有价值的服务。
[[18](#)] 使用`/topic`命令设定频道主题。IRC频道中的所有的命令以“`/`”开头。如果你不熟悉IRC的使用和管理,可以看[http://www.irchelp.org/](http://www.irchelp.org/);而[http://www.irchelp.org/irchelp/irctutorial.html](http://www.irchelp.org/irchelp/irctutorial.html)是一份完美的教程。
- 前言
- 为什么写这本书?
- 谁应该读本书?
- 资料来源
- 致谢
- 免责声明
- 1. 介绍
- 历史
- 现状
- 2. 起步
- 从你拥有的开始
- 选择许可证并应用
- 设置风格
- 通告
- 3. 技术基础设施
- 一个项目需要什么
- 邮件列表
- 版本控制
- Bug跟踪
- IRC / 实时聊天系统
- RSS供稿
- Wikis
- 网站
- 4. 社会和政治的基础架构
- 慈善独裁者
- 共识为基础的民主(Consensus-based Democracy)
- 写下所有的内容
- 5. 金钱
- 参与的类型
- 长期雇佣
- 作为一些个体出现,而不是一个整体
- 公开你的动机
- 钱不能让你可爱
- 契约
- 资助非编程活动
- 市场营销
- 6. 交流
- 人如其文
- 避免常见的陷阱
- 刺儿头
- 处理成长
- Bug跟踪系统中无对话
- 公开性
- 7. 打包、发布和日常开发
- 版本号
- 发布分支
- 稳定发布版本
- 打包
- 测试和发布
- 维护多发布线
- 发布和日常开发
- 8. 管理志愿者
- 从志愿者中获取最多
- 像分担技术任务一样分担管理任务
- 转化
- 提交者
- 荣誉
- 分叉
- 9. 许可证,版权和专利
- 术语
- 许可证的方面
- GPL和许可证兼容性
- 选择一个许可证
- 版权分配和所有权
- 双许可证模式
- 专利
- 深入资源
- A. 自由版本控制系统
- B. 自由Bug跟踪系统
- C. 为什么我要关注车棚的颜色?
- D. 报告bug的样例指导
- E. 版权