前言

一个不太好的常见问题列表(FAQ),常常并不是由人们实际上的问题组成,而经常是由作者期待的问题组成。或许你曾经见过这种类型的问题:

这样的FAQ并不是其字面意义上的FAQ,没有人会这样询问支持者,“怎样提高生产率?”相反,人们经常询问一些更具体的问题,像“怎样修改日程系统提前两天而不是提前一天去提醒被提醒人?”等等。但是通过想象比去发现一个这样的问题列表更容易,编辑一个真实的问题列表需要持续的,有组织的工作,覆盖软件的整个生命周期,提出的问题必须被追踪,要监控反馈,所有问题要收集为一个一致的,可查询的整体,并且能够反映所有用户的经验。这需要耐心,像实地博物学家一样严谨的态度,不应该有浮华的假设,虚幻的断言—而需要开放的视野和精确的记录。

之所以会喜欢这本书,是因为这本书非凡的成长过程,这体现在每一页里,这是作者与用户直接交流的结果。这一切的基础是Ben Collins-Sussman's关于Subversion常见问题邮件列表的研究:使用subversion通常的流程是怎样的?分支与标签同其它版本控制系统的工作方式是一样的吗?我怎样知道某一处修改是谁做的?

由于每天看到相同问题的失落,Ben在2002年夏天努力工作了一个月,撰写了一本Subversion手册,一本六十页,涵盖了所有基础使用知识的手册。这本手册没有说明什么时候要结束,伴随着Subversion的版本,帮助用户开始最初的学习。当O'Reilly决定出版一本完备的Subversion图书的时候,最快捷的方式很明显,就是扩充这本书。

三个联合作者因而面临了一个不寻常的机会。从职责上讲,他们的任务是以一些原始内容为基础,从头到尾写一个草稿。但实际上他们正在使用着一些丰富的自下而上的原材料,像一条稳定的河流,也可能是一口不可预料的间歇泉。Subversion被数以千计的用户采用,这些用户提供了大量的反馈,不仅仅针对Subversion,还包括业已存在的文档。

在写这本书的过程里,Ben,Mike 和 Brian想鬼魂一样一直游荡在Subversion邮件列表和聊天室中,仔细的研究用户实际遇到的问题。监视这些反馈是他们在CollabNet工作的一部分,这给他们开始写这本书时提供了巨大的便利。这本书建立在丰富经验的根基之上,并不是在流沙一样的想象之上;它结合了用户手册和FAQ最好的一面,在第一次阅读时,这种二元性并不明显,按照顺序,从前到后,这本书只是简单的从头到尾的关于软件细节的描述。有一个总的看法,有一个教程,有一章关于管理配置,还有一些高级主题,当然也有一个命令参考和故障指南。只有当你过一段时间之后,返回来找一些特定问题的解决方案时,这种二元性才得以显现:这些生动的细节一定来自不可预料的实际用例的提炼,大多是源于用户的需要和视点。

当然,没人可以承诺这本书可以回答所有问题。尽管有时候一些前人提问的惊人一致性让你感觉是心灵感应;你仍有可能在社区的知识库里摔跤,空手而归。如果有这种情况,最好的办法是写明问题发送email到,作者还在那里关注着社区,不仅仅封面提到的三位,还包括许多曾经作出修正与提供原始材料的人。从社区的视角,帮你解决问题只是逐步的调整这本书,进一步调整Subversion本身以更合理的适合用户使用这样一个大工程的一个有趣的额外效用。他们渴望你的信息,不仅仅可以帮助你,也因为可以帮助他们。与Subversion这样活跃的自由软件项目一起,你并不孤单

让这本书将成为你的第一个伙伴。

Karl Fogel,芝加哥,2004年3月15日