Linux开源开发社群

群体的智慧

Linux开源开发社群是一个遍布全球、分散式的程序员网络,他们共同改进一套操作系统,却没有正式组织为他们分派工作。自林纳斯·托瓦兹于1991年公开发布Linux源代码以来,这个社群让独立贡献汇聚起来,发挥共同效用——数千名程序员提供修复方案和功能,帮助Linux变得可靠而稳健,并成为微软的主要挑战者。它的标志性方法是让许多人依据本地知识各自探索独立方案,再将他们的工作纳入一个共享系统。

起源与开放参与

1991年,芬兰黑客林纳斯·托瓦兹创建了自己的Unix操作系统版本,并公开发布其源代码。他邀请了解计算机代码的人贡献可以自由分享的工作,并表示愿意将其加入系统。这一邀请很快带来实际成果——最早下载Linux的十个人中,有五个人提交了错误修复、代码改进和新功能。

早期的交流逐渐发展成持续进行的流程。数千名程序员无偿工作,贡献大小不一的改动。他们的工作不断累积,使Linux日益可靠、稳健。这个社群的基础不只是能够访问代码,更在于独立贡献有机会成为共同项目的一部分。

分散式工作方法

Linux不归任何人所有,这与归微软所有、由微软员工开发的视窗不同。出现问题时,没有老板下令让某人去修复,也没有组织架构图分派责任。贡献者从事自己感兴趣的工作,其余的则置之不理;有人独立提出好的解决方案时,问题便得到修复。

这种安排看起来可能杂乱无章,但本书将其描述为极其有效。分散式结构鼓励独立性和专业化,使贡献者能够依据自身经验所特有的知识开展工作。其挑战在于,在分散式系统某一部分发现的有用信息,可能无法传达到其他部分。Linux部分地通过为贡献提供共同去处来应对这一问题——本地自主行动可以纳入操作系统,并使其惠及所有人。

多样性、探索与浪费

与传统公司的对比,说明了Linux获得的优势。公司可以聘用熟练员工,让他们全职工作,指引他们处理特定问题,也可以迅速动员他们完成任务。但公司受到员工人数和可用时间的限制,也受组织和官僚政治的制约。Linux在潜在贡献者范围上没有类似限制——愿意自愿投入精力的程序员数量多得惊人,由此形成了极其广阔的潜在解决方案空间。

无论是需要修复错误,还是首先需要发现错误,这种多样性都很重要。程序员数量足够多、彼此差异足够大时,就更可能有人察觉问题,也更可能有其他人找到修复办法。这个社群的工作原则可由埃里克·雷蒙德的一句话概括:“只要有足够多的眼睛,所有错误都浅显易见。”

从狭义上说,这种方法并非效率最高。数百或数千名程序员可能同时调查一个问题,尽管只有少数人能找到解决方案,而他们投入的时间原本可以用在别处。本书将这种开放式探索比作蜂群派出众多采蜜者,而不是挑选一个自以为最聪明的采蜜者,或试图事先确定最佳路线。Linux接受许多尝试表面上的浪费,以换取大量备选方案,并争取找出最佳方案的机会。正如本书所说:“可以让百花齐放,再择其最芬芳者。”

分散化的意义与局限

Linux体现了分散化富有成效的一面——它让人们各自专长并独立行动,从而扩大知识和潜在解决方案的范围。然而,仅有分散化并不能确保信息在系统中传递。更广泛的组织问题在于,既要保留本地知识,又要使之发挥集体效用——情报机构和科学合作中也能看到这种平衡。

按照本书的叙述,Linux的重要意义并不在于所有组织都应放弃层级制,也不在于未经协调的努力总是足够。传统的企业指挥确有其优势,尤其是在必须动员人们解决某个具体问题时。Linux展示的则是,共同项目如何在没有老板分派各项任务的情况下协调独立贡献。它不归任何人所有的结构和共享代码,使分散的自主行动产生了实质影响——许多彼此独立的努力,能够共同打造出一个已成为微软最重要挑战者的操作系统。

相关故事流