1997 年 5 月 27 日,开源运动的领导者之一 Eric S·Raymond 发表文章,阐述了两种不同的自由软件开发模式,并将其比喻为「大教堂模式」与「集市模式」。文章一经发表便引起轰动,随后在 1999 年出版成书,这就是被称为「开源圣经」的《大教堂与集市》。
作为开源运动的独立宣言,《大教堂与集市》是当代技术领域最重要的著作之一。但此书多年来与国内读者无缘,2012 年,卫剑钒在出版社的邀请下,翻译了《大教堂与集市》的中文版,将该书正式带到国内。
十年过去,我们有幸邀请到卫剑钒,分享翻译和创作的故事,交流对《大教堂与集市》和开源的理解。本期 WeOpen Talk 栏目嘉宾——《大教堂与集市》中文版译者卫剑钒。以下为他的讲述:
《大教堂和集市》是 Eric S·Raymond 五篇文章的合集,最主要的是「大教堂与集市」这篇文章。这篇文章 1997 年就写出来了,非常风靡,也非常经典,我很早就看过,但没有特别留意。2011 年,重读《大教堂与集市》后,我写了篇读后感,发布在网络上,也没当回事。2012 年,机械工业出版社的吴怡编辑通过这篇读后感找到我,问我能不能翻译这本书,很快我就答应了。这件事给我的启发是,把自己的一些感悟写作并发表出来,是一件好事,而且会让有趣的事情找到你。翻译《大教堂与集市》并不容易。我并不是英语专业出身,以前也没有翻译过书,而 Raymond 写的文章,有很多又长又难的句子,读起来很费力。好在我有多年开发程序的背景,能比较容易理解他的思想,加上网上已经有一些片段式译文,我还是有信心的。遇到实在挠头的地方,我会在一些翻译论坛上寻找帮助,并常常受益匪浅,而那些帮助过我的高手们,也都放进了「译者序」中。遇到那些感觉只有 Raymond 才会明白的问题,就给他写信请教,前后差不多有 20 多封。当年翻译的时候,我对精准性非常看重,力图完整对应原文,不愿意略过任何一个实词,这带来了一个难题:中英文在语言结构上有明显差异,过于追求对应会束手束脚,即便勉强做到,语言也会变味。比如这句:But I am not doing moral philosophy or psychology here, so I will simply observe one minor kind of harm done by the belief that ego is evil, which is this: it has made it emotionally difficult for many hackers to consciously understand the social dynamics of their own culture!
我并不是在这里谈伦理学或心理学,我只是观察到「自我有害」这种信念带来的一种较轻的危害,那就是它使一些黑客在有意理解他们自己文化的社会动力学时产生了情绪上的障碍。
这种译法精准地对应了原文,但翻译的时候,会觉得费劲,读者看的时候,也会吃力。如果再翻的话,我要让读者读起来更舒服自然,而不是字字句句完全对应,不再追求表现原作者的文风,而更在意传达作者的本意。如果只能在「精准性」和「通俗易懂」之间选择其一,我宁愿选择后者。这里不我想谈伦理学和心理学,我只是想说,如果一个黑客认为「自私是不好的」,那么,他在理解黑客文化的社会动力学时,就会难以接受。
上面这种译法,原文中的 observe、minor kind of harm、emotionally、consciously 不见了,但作者要表达的意思没有缺失。这样,就把 Raymond 的那种学术腔给剥除了,读者在阅读理解上,就会更省力一些。字句都是表面的东西,真正需要读者动脑的,是文章在理念上的新颖之处。
有人问我,《大教堂与集市》是否被过誉了?这很难用一两句话回答。《大教堂与集市》之所以能有今天这么高的地位,一方面,它提出了「大教堂模式」和「集市模式」这个新颖的理念;另一方面,文章对开源运动进行了纲领性的阐释,将技术活动上升到了政治檄文的高度,说出了每个开源开发者的心声。《大教堂与集市》出版于上世纪 90 年代后期互联网风靡全球的时代,以 Linux 为代表的开源软件风头正劲,互联网和开源首次获得了公众的极大关注,互联网从业者和开源开发者人人热情高涨,前途一片光明。《大教堂与集市》在当时起到的激励作用,直到今天,仍然能够感受到。这本书的地位是毋庸置疑的,如果说有什么可以探讨的地方,那就是大教堂模式和集市模式是否真的对立?集市模式是否一定优于大教堂模式?一般读者会认为「大教堂模式」指代闭源,「集市模式」指代开源,但仔细读这本书会发现,前者更多指「强有力管理」或「高手精心打造」,后者更多指「基于兴趣」的去中心化协作。大教堂模式:在与世隔绝的环境下,(软件)由天才式专家或几个行家里手精心打造。
集市模式:在 Linux 社区里,没有建筑大教堂那样的安静和虔诚,倒更像是一个乱糟糟的大集市,充满了各种不同的计划和方法。
我认为,「大教堂」和「集市」并不是对立的,虽然对立起来,给人的印象会更深刻一些。软件开发往往是介于二者之间或者并存。在很多场境下,不管开源还是闭源,大教堂模式仍然是需要的,而且是必要的。在我的经验中,现象级软件石破天惊的第一版,几乎都是用大教堂模式构建的,都是高手独处一隅、潜心打造的结果。Linux 这个划时代的操作系统,其首版(0.01版)就是 Linus 闷在屋里数月潜心打造的成果。虽然 Raymond 认为 Linux 现在是典型的集市模式,但要参与 Linux 内核的代码贡献, 也需要严格的人工审核和版本管理,并不是随便一个人就能提交代码并被接受的。Linux 内核的最高权限在 Linus 那里,内核代码的最终版本由他说了算,他被人们称为「仁慈的独裁者」。而且很多人认为,正是 Linus 的「独裁」管理,才造就了 Linux 内核的稳定发展。Linux 的开发是很有组织的,我们可以把 Linux 项目贡献者看作成一个个远程办公的团队成员,Linus 是最高领导,之下有很多部门领导,每人负责具体的领域(或曰子系统、模块),他们手下又有很多高手,提出设计、编写代码、审核代码,最底下则是庞大的贡献者、使用者。
这正是一个金字塔结构,一个典型的大教堂模式。人们只不过通过互联网组织了起来,以乱哄哄的表象,实施着层级分明、严谨有序的开发。他们和传统公司里程序员的不同在于,他们的参与是自发的,他们的贡献是自愿的,他们并不从 Linus 那里领取薪水,驱动他们的,是造福人类的情怀,是对技术的痴迷喜爱,是锻炼自己的心态,或是其他种种我们不知道的动机。但不管他们贡献多少,他们必须遵循严格的管理流程,所有的代码都要经过审核才能纳入,所有人都需要得到能力认可后才能有相应的权限。这和人类的很多组织都是一样的,在我看来,任何一个多人参与的团队都需要有管理,帮助成员克服懒惰、疏忽、拖延这些人性中的弱点。如果没有集中式管理,没有规章流程,完全靠个人的自觉和兴趣,很难合力做出真正有分量的东西。Raymond 所说的「大教堂模式」和「集市模式」,与其说是在类比「闭源」和「开源」,倒不如说是在类比「传统开发模式」和「敏捷开发模式」。人们之所以喜爱后者,是因为它更能激发人们在编程中的主动性和趣味性,而不是像前者那么乏味、死板和缺乏人性。无论什么开发模式,人们并不排斥管理,而是排斥无情的管理。程序员不愿意成为开发过程中的机器,而希望更像一个人,这才是这本书的要义。
2017 年底,我通过了国际信息安全专家认证 CISSP(Certification for Information System Security Professional)考试,这个考试很难,通过率很低,很多人考前都是心惊胆颤的。为了帮助其他备考者,我在公众号上分享了备考方法和我的学习笔记,并将对信息安全的理解写成《信息安全管理的 9 大思维》,从此开始了技术博客的写作。我写作比较注重「讲人话」,公众号原名叫「微月人话」,一方面是致敬《人月神话》,一方面是想突出「讲人话」。之所以突出这点,因为在我的学习经历中,见过太多不说人话的文章。这里面有两种可能。一种是能力问题,作者一知半解、不严谨、不会表达,他自己也没有弄懂,或者弄懂了但写不好;还有一种是态度问题,作者故意要弄的很高大上,整很多不明就里的大词,对于内容,他可能不懂,也可能很懂,但就是要弄得很玄乎。比如我当年看的一些论文,论文中直接给你一个公式,公式里面的符号并不解释,然后就在那里开始推导,中间还故意省略一些步骤,给人一种很不好的感觉:他似乎有意不想让你看懂。不明白的人,看到这种文章,可能会觉得作者很牛,学问很深。但我看了这种,往往是不满的,我不仅没有学到,反而浪费了精力,耽误了时间。明明能用人话说清楚的事,为什么非要整得让人看不明白呢,难道真的是故意的?所以我就想写一些让人一看就懂的东西,让大家学习东西不用那么费劲。我本人也是这种写作风格的受益者,我很佩服的一些技术作家,他们教了我很多,他们无一例外具备这个能力:把一个很复杂很难懂的东西,用很浅显的语言,很清晰,很有条理地给人讲明白。比如写出《精通区块链编程》的 Andreas M. Antonopoulos,写出《UNIX 环境高级编程》的 W. Richard Steven,写出很多技术文章的阮一峰(《黑客与画家》的译者)。看他们写的东西,真是一种享受,不仅收获了知识,还体验了美感。有人问我写代码和写作的相同和不同之处。我想,相同之处是,二者都需要专注的投入,需要精巧的设计,需要严谨的思维、需要清晰的表达,需要反复的修改,需要具备价值。不同的地方在于,写代码比写作更严谨,代码重构的收益更大、复用的概率也更高。文字可以流行,而代码可以运行;文字让人脑运转,代码让机器运转。代码高手,应该都是文章高手,因为二者在底层是相通的。这里说的文章不是虚构类文章,而是知识类文章,这类文章看重的是怎么把一个事情讲得清楚、简洁、有逻辑。如果你想提高写代码或文章的水平,把自己设想成一个并不了解背景知识的小白,故意忘掉一些东西,不带任何成见,看看自己写的东西,自己能读懂吗?如果自己读着都很舒服,那就可以。
我最早接触计算机编程是在上世纪 80 年代末,简直是一见钟情,可能是 80 年代初看了很多科幻作品的缘故,见到这类似乎是未来世界的东西,就喜欢的不得了。真正接触开源主要还是从 Linux 开始。大约在 2001 年,当时安装完 Redhat,只有一个感觉,就是开源世界的力量,终于强大到可以和闭源巨头匹敌了。在《大教堂和集市》中,Raymond 也说过类似这样的感受:看到这些精彩绝伦能组成可工作系统的代码盛宴展现于面前,其震撼体验远远超过仅在理智上知道这些比特的存在。就好比多年来我一直在整理成堆的汽车零配件——突然间,面前出现一辆由同样元件组装起来的闪闪发亮的红色法拉利,门开着,钥匙在锁上摇摆,引擎温柔地轰鸣,承诺着它将给予的能量……
但在我的学习和工作生涯里,并没有机会参与贡献开源项目,只是开源项目的使用者和观察者而已。之所以还算是开源圈子里的人,就是因为花时间翻译了一本书,写了一些开源许可证相关的文章。开源对我在认识上的最大影响是:不要吝惜自己知道的那点东西,如果你花时间弄明白了一个别人不明白而又想弄明白的东西,就把它公开出来,让别人可以免费、便捷地得到它。不要担心这会削弱你的竞争力,因为绝大多数情况下,你不共享,你也得不到什么;你共享出来,你的竞争者也未必能超过你。输出作品背后的能力,才是你真正的竞争力。你贡献出来,别人会受益,而你,更会受益。 「WeOpen Talk」是腾源会全新上线的「对话开源」内容专栏,每周为读者呈现一期与尖峰开源人物的精彩对话内容。在「WeOpen Talk」栏目中,我们将深刻诠释开源先锋者们的开源精神、开源理念及其眼中的开源世界,深度挖掘开源领军者们在实践、参与开源过程中的有效方法论和最佳经验。
腾源会是腾讯云成立的汇聚开源项目、开源爱好者、开源领导者的开放社区,致力于帮助开源项目健康成长、开源爱好者能交流协助、开源领导者能发挥领袖价值,让全球开源生态变得更加繁荣。