林纳斯·托瓦兹
群体的智慧林纳斯·托瓦兹创建了Linux,作为他自己编写的Unix版本,并向公众发布其源代码。他的关键之举不只是让软件变得人人可用,而是邀请其他程序员加以改进。此后,这个系统在全球各地数千人的无偿贡献下不断发展,而托瓦兹仍是审查拟议改动的少数人之一。因此,他体现了本书中的一个核心张力——去中心化能够汇集更多知识并产生更多解决方案,但仍需要一种评估和汇总成果的方式。
创建Linux并开放其源代码
1991年,托瓦兹编写了一个Unix操作系统版本,并将其命名为Linux。他没有把代码留给自己,而是将其发布,让任何能够阅读计算机代码的人都可以查看他的作品。他在发布时还发出邀请:“如果你愿意自由发布自己的成果,我希望听听你的想法,这样我就能把它们加入系统。”这则留言将个人项目变成了公开的协作邀请,也为Linux的开发确立了一项原则——有用的成果可以来自项目发起者之外,并能够纳入共享系统。
几乎立刻就有了回应。最初下载Linux的十个人中,有五人回传了错误修复、代码改进或新功能。最初的邀请逐渐成为一套成熟流程——随着时间推移,数千名程序员无偿参与,贡献大小不一的改动。他们持续不断的工作使操作系统更加可靠、稳健。因此,Linux的发展并非依靠某个人一时的创作热情;托瓦兹最初发布代码,使不断扩大的群体能够持续改进系统。
去中心化系统
Linux与微软拥有并由微软员工开发的Windows不同。按照本书的说法,Linux不属于任何人。问题出现时,只有在某人独立提出良好解决方案的情况下,问题才会得到修复。没有老板指挥贡献者,也没有组织架构图为每个人分派明确职责。程序员自行选择感兴趣的工作,把其他问题留在一旁。这种安排看似杂乱无章,却已证明行之有效——Linux成了微软最重要的挑战者。
缺乏正式组织也使Linux能够汇聚散布在世界各地的贡献者。在传统公司里,高层管理者雇用员工,支付全职薪酬,并对他们应当处理哪些问题作出一定指引。这种结构能够为特定任务调动人员,帮助公司擅长既有工作。但公司能够提出的解决方案,受到员工人数和可用时间的限制,也受组织政治与官僚政治的制约。Linux较少受到这些限制。愿意贡献的程序员为数众多,他们各不相同,也扩大了可能的应对方式——对于任何一个错误,都可能有人设计出修复办法,也可能有人首先发现这个错误。
审查、权威与汇总
去中心化参与并不意味着所有拟议改动都会自动进入Linux。包括托瓦兹在内的少数程序员会审查操作系统源代码的改动。程序员可以从世界各地贡献代码,但正如本书所说:“最终,所有道路都会通向林纳斯。”因此,他并非一位在最初发布后便不再贡献的遥远创始人。他仍在评估新代码是否应纳入系统的人之列。
本书将这种审查职能视为必要的汇总方式。如果自主贡献者没有办法综合或评估各自的判断,最终结果就会局限于最聪明的人提出的解决方案,而它未必是最好的。有了汇集不同意见的方法,一个群体就可能提出优于任何个人方案的解决方案。这种安排颇具悖论——汇总可能看起来像是集权,却能让去中心化得以运作。这并非由中央规划者自上而下分派生产,而是让独立贡献继续广泛分散,同时通过某种流程决定保留哪些成果。
本书没有断言,Linux的代码决策是否必须始终由如此小的群体作出。人数更多的程序员群体,即便成员的技术水平不如托瓦兹及其亲密合作者,也可能有效地评估代码。但书中的论点坚持认为,决定纳入哪些内容的某种机制,对Linux的成功至关重要。托瓦兹兼具双重角色——既参与开放、分散的协作,又是审查者之一——使这一区别清晰可见——分散工作与汇总成果是不同的任务,二者都很重要。
集体协作及其意义
Linux的开发体现了开放性和多样性如何帮助发现并修复缺陷。本书引用埃里克·雷蒙德的说法:“只要有足够多的眼睛,所有错误都浅显易见。”这句话概括了贡献者群体广泛所带来的实际效果——众多程序员能够以不同视角审视一个系统,使缺陷更有可能被发现,也更有可能有人提出补救办法。这并不意味着每位贡献者的角色都相同,也不意味着无人评估代码。Linux的发展史将分散的主动性与审查结合在一起。
本书还将Linux放在一个更广泛的问题背景下探讨——知识如何既保留其本地性,又能在集体层面发挥作用。群体两者都需要——个人知识必须能为整体所用,同时又不能抹去这些知识所源自的具体贡献。Linux的开放源代码让程序员能够检查并改进共享系统;其审查流程则有助于决定纳入哪些贡献。托瓦兹的重要性在于他参与确立了这种模式。他让项目向自身之外的贡献开放,同时仍是能够将系统中众多贡献汇集为一个可运行整体的人之一。
