5.2 超越Brooks定律
1993年底,通过最早的CD-ROM发行版Yggdrasil,我第一次接触到Linux。那时我已经被卷入黑客文化15年了,早在20世纪70年代末,我就开始接触早期的ARPAnet,我甚至还简单地见识过ITS机器。在我开始写自由软件并将其发布到Usenet上时,自由软件基金会(FSF)还未成立,1984年FSF成立后,我是它的首批贡献者之一。最近我刚发布了“新黑客词典”的第二版,我想我懂黑客文化(包括它的局限性),而且很懂。
正如我在别处所写的那样,Linux让我大吃一惊。虽然那时我在黑客文化中已经活跃多年,我仍然抱有一个未经检验的假定,认为黑客尽管可能很有天赋,但若要制作一个可用的多任务操作系统,他们没有能力调动所需的资源或技术。HURD开发者历经十年来的努力,最终证明了这一点。
但就在他们失败的地方,Linus Torvalds和他的社区成功了,他们不仅实现了稳定运行UNIX接口的最低需求,而且完全超越了那个标准,他们用自己的活力和才华,提供了数百兆的程序、文档以及其他资源。他们贡献了整套的互联网工具、桌面出版软件、图形支持、编辑器、游戏……乃至所有你能想到的东西。
看到这些精彩绝伦并能组成可工作系统的代码盛宴,其震撼体验远远超过仅在理智上知道这些比特的存在。就好比多年来我一直在整理成堆的汽车零配件,突然间,面前出现一辆由同样元件组装起来的闪闪发亮的红色法拉利,门开着,钥匙在锁上摇摆,引擎温柔地轰鸣,承诺着它将给予的能量……
20多年来我所观察到的黑客传统,似乎瞬间有了一种充满能量的新活法。在某种意义上,我已经成为这个社区的一部分,因为我的若干个人作品已经作为自由软件加入其中,但我想更深入一些,因为我每次感受到惊喜时,都又一次加深了我的困惑:它怎么会这么棒。
在软件工程的全部经验中,Brooks定律占据着统治地位,它来自于Fred Brooks的经典著作《人月神话》。
Brooks推测,如果开发成员数目为N,工作量会呈N倍增长,但复杂性和bug率会以N 2增长。N 2体现着各开发者代码之间的通信路径(以及可能的代码接口)。
对于一个有数以千计贡献者的项目,Brooks定律预言它必然会成为怪异不堪、难以驾驭的一团乱麻,但不知怎地,Linux社区打破了N 2效应,他们做出了质量高得惊人的OS。我决心要弄明白这是怎么回事。
我花了三年时间亲自参与和近距离观察,最终得出一个理论,并用另外一年去实际检验它。然后我坐下来,写下了“大教堂与集市”,来说明我所看到的一切。