55. 开源很伟大,但它并不能点石成金

这是《大教堂与集市》一书中讲到 Mozilla 项目开源遇到问题时的一句名言。

读着书中的黑客圈简史,部分层面上来说,就是一部开源运动史,难怪对该书的评价是开源运动的“圣经”。对开源的概念,更多的时候是从Linux系统开始的,而这或许也正是开源最成功的项目,受益者众。

记得几年前,读着一份Gentoo 手册 (2004.2, x86),被开源这种思绪和新奇折服着。感谢开源世界,给了我们这么多优秀的操作系统和完美的软件,让普通的我们,也能使用。

书中提到 Mozilla 项目开源后,“JamieZawinski离职,作为Mozilla的共同创始人和Mozilla项目的公众面孔,Zawinski在源代码发布一年零一天后辞职,并抱怨糟糕的项目管理导致很多机会丧失。”

‘但 Mozilla 的麻烦并没有明显减缓公众认同开源的步伐,这无疑表明开源此时已经拥有了巨大的动能。行业刊物很明显对开源也有了更正确的认识,正如Zawinski那句名言所说的:“开源(很伟大,但它)并不能点石成金。”’

那时候的浏览器市场被微软垄断着,垄断不可怕,可怕的是垄断着我们的是糟糕的产品。我真的不敢想象,如果今天每个人的电脑上都是IE的样子,那将会是一个可怕的世界。曾经看一些闲散文章,说IE觉得他们做的已经足够完美,并且都已经拆散开发团队,谁知后来谷歌赶上了。只有在这种不断的更新和创造中,软件才会有持续不断的提升和进步。

有个老师提到,他很喜欢一个开源黑客的一句名言,大意是足够多的眼睛能让问题浮现。那时候还不知道埃里克·史蒂文·雷蒙德就是《大教堂与集市》一书的作者。

大教堂与集市封面

或许每一个对开源感兴趣的读者都想过一个类似的问题,“Linux是颠覆性的,就在5年前(1991年),谁能想到,几千名散布在全球各地的开发者们,利用业余时间,仅仅是通过Internet这种脆弱的合作,就鬼斧神工般地造就了一个世界级的操作系统?”

还不会编程时的我,就曾经有过这样的疑惑。遗憾学习环境没有提供这样的机会,大学时我唯一学过跟计算机相关的,只有大学计算机基础这样的通识课。直到毕业时才选修了VB这门编程语言,应该说学校就提供这些,别无选择。自己看过C++,可想而知,只能以失望而终。

前段时间去新疆甘肃一带,遇见同学,说起我的工作时,他都知道芬兰的赫尔辛基大学。一开始还很突兀,毕竟我们离芬兰真的很遥远,不管是地域上还是观念上。还是后来才知道他打算不久后去芬兰留学,去学习芬兰的教育。这样就不奇怪了,不过在大家之间,交流不多,能知道几个名词,已经足够亲近和不容易。

大教堂与集市版权

“在Linux社区里,没有建筑大教堂那样的安静和虔诚,倒更像是一个乱糟糟的大集市,充满了各种不同的计划和方法(Linux的文件服务器就是个很好的例子,这里可以接受任何人的代码和文档提交),而既稳定又一致的一个操作系统就这么诞生了,这真是奇迹中的奇迹。”

从事软件开发后,才知道要写出哪怕是一个简单的网页,都要如此之难,各种流程走下来,连自己都忘记了最初要做的功能是什么。

“Linus定律道出了大教堂模式和集市模式最关键的区别:在大教堂建筑者看来,bug是棘手的、难以发现的、隐藏在深处的,要经过几个人数月的全心投入和仔细检查,才能有点信心说已经剔除了所有错误而发布间隔越长,倘若等待已久的发布版本并不完美,人们的失望就越发不可避免。”

“对集市模式而言则完全不同,在上千名合作开发者热切钻研每个新发布版本的情况下,你可以假定bug是浅显易找的,或者至少可以很快变得浅显易找。所以你会频繁发布以获取更多的修正,其副作用是良性的:即便发布中有些小问题,你也不会损失太多。”

作者自己也说大教堂和集市最大的区别就是对待问题的态度,这也道出了那句足够多的眼睛能让问题浮现,这同时也是Linux社区不言自明的道理。

“20多年来我所观察到的黑客传统,似乎瞬间有了一种充满能量的新活法。在某种意义上,我已经成为这个社区的一部分,因为我的若干个人作品已经作为自由软件加入其中,但我想更深入一些,因为我每次感受到惊喜时,都又一次加深了我的困惑:它怎么会这么棒。”

“电脑是人类的工具。因此,硬件设计和软件设计最终要回归到为人类设计,而且是为全人类设计。这条路是漫长的,而且并不容易走。但我认为,黑客社区联合企业界的新朋友,必将完成这一任务。”

我没有读过《人月神话》这本书,《大教堂与集市》引用了其中很多观点,这两本书都是关于项目管理的。对于没参与过开源项目的人,也只能当做一本著作来读了。但是这种对开源项目管理的介绍和说明,的确能给项目管理提供一定的思考。

并不是每个人都有这样的机会来参与项目开发,有人就评价如今的软件开发中的管理权限“有很多不但视源代码如生命,而且视员工为窃贼的公司,会在版本控制系统里设置一套完善的权限控制,每个人是否有读写权限会精确到每个分支甚至每个目录下。因为Git是为Linux源代码托管而开发的,所以Git也继承了开源社区的精神,不支持权限控制。”