在软件工程的全部经验中,Brooks定律占据着统治地位,它来自于Fred Brooks的经典著作《人月神话》。 Brooks推测,如果开发成员数目为N,工作量会呈N倍增长,但复杂性和bug率会以N 2增长。N 2体现着各开发者代码之间的通信路径(以及可能的代码接口)。对于一个有数以千计贡献者的项目,Brooks定律预言它必然会成为怪异不堪、难以驾驭的一团乱麻,但不知怎地,Linux社区打破了N 2效应,他们做出了质量高得惊人的OS。我决心要弄明白这是怎么回事。
(4)齐心协力 + 另类激励Weinberg引用了19世纪俄国无政府主义者Pyotr Alexeyvich Kropotkin所著《一位革命家的回忆》(Memoirs of a Revolutionist)中的一段,很好地诠释了这个问题:“我成长于一个农奴主家庭,在投入积极生活之时,像那个年代所有年轻人一样,我非常相信命令、指示、斥责、惩罚等行为的必要性。但当我早期不得不管理重要事业并和(自由)人打交道时,在任何错误都会立刻导致严重后果时,我开始感悟到按“命令与纪律原则”行事和按“共识原则”行事之间的重要区别。前者在军队检阅时的作用令人钦佩,但在真实生活中却一文不值,想要达到目标,必须要靠众人的齐心协力。”“齐心协力”正是Linux这种项目所需要的。
GNU Emacs编辑器是一个极端的、有启发性的例子,尽管该项目的人员流动率很高,从始至今持续起作用的只有一人(Emacs的作者),但15年来,仍然有数百名贡献者投入努力,他们合作造就了一个统一的架构体系,还没有哪个闭源编辑器能匹敌这样的长寿记录。
Linux黑客们致力于最大化的“效用函数”,其目的并不是经典意义上的经济价值,而是自我满足和黑客声望这些无形的东西。(有人把这种动机称为“利他”,但他们忽视了一个事实,即“利他”本身是“利他者”自我满足的外在表现。)
若论激励效果,问题自身的魅力比单纯的金钱要有效得多。
1997年首版的“大教堂与集市”文章结束于上面这个展望:由程序员和无政府主义者组成的快乐的网络部落,战胜和压倒了等级森严的传统闭源软件世界。
现在看来,开源成功的一个最重要成果,就是告诉我们,“玩”是创造性活动中最具经济效能的工作模式。
但传统开发管理是对缺乏激励的程序员们的必要补充,否则他们不会干得很好。
3、两者混合卓越程序员们有个很重要的特征是“建设性懒惰”,他们知道人们要的是结果而不是勤奋,而从一个部分可行的方案开始,明显要比从零开始容易得多。以 Linus Torvalds 为例,他并没有尝试从零开始写 Linux,而是以重用 Minix(一个用于 PC 机的迷你型 UNIX 类操作系统)的代码和理念作为开始,虽然 Linux 中所有 Minix 代码最终都被移除或重写,但它在 Linux 成长初期确实起到了类似脚手架的作用。
好的软件作品,往往源自于开发者的个人需要。
优秀的程序员知道写什么,卓越的程序员知道改写(和重用)什么。
不只是Emacs,还有其他一些软件产品也使用了两层架构和两级用户群,内核使用大教堂模式开发,工具箱(toolbox)使用集市模式开发,
三、开垦心智层 1、开源文化 (1)许可证Richard M.Stallman(RMS)创立的自由软件基金会(FSF),从20世纪80年代早期开始,支持了大量的开源项目,包括Emacs和GCC——它们至今仍然是互联网开源世界的基础,而且看起来将继续保持这个地位。多年来,FSF是开源文化唯一的最为重要的焦点,它产生的大量工具,仍然对开源文化至关重要。
FSF的许可条文“通用公共许可证”(GPL)表达了FSF的态度。
更多许可证区别可以参考我文:《MIT / BSD / Apache / LGPL / Mozilla / GPL 区别》
(2)实用派 与 纯粹派实用派更看重它是否有好的工具和玩意儿,而不太在乎是不是反商业,他们会使用高质量的商业软件而不会产生价值观上的排斥。
直到1993至1994年,由于Linux的爆发,实用派才找到一个真正有力的基础,尽管Linus Torvalds从来没有反对过RMS,但他树立了一个友好对待商业Linux成长的榜样,他公开支持在特殊用途上使用高质量的商业软件,并对黑客文化中的纯粹派和狂热人士予以适度的调侃。
完全反商业化的纯粹派,越来越发觉自己成了少数派。
开源文化的“官方”意识形态和他们的实践并不一致。文化是有适应能力的机器,开源文化会对一系列可识别的动力和压力做出反应。通常,文化对其所处环境的适应,既反映了其自觉的意识形态,也反映了其隐藏的、无意识或潜意识的认识。而无意识调适和其意识形态的不一致,是很常见的现象。
2、开源的激励动力 (1)编程乐趣精湛工艺(craftsmanship)带来的单纯快乐是黑客首要的动机。