就像大部分科技企业一样,大部分软件要冒失败的危险。正如Bob Young所说的,编制成功的开源软件与编制成功的专有软件没有什么不同。在两种情况下,成功的例子是罕见的,而最好的创新者是那些能从错误中吸取教训的人。 在科学和软件中,导致创新的创造都会需要一些代价。保持对现行的开源软件工程是很困难的。对失去控制的担心将会让一些个人或企业失去积极友爱加的兴趣。特别要关注的是,当决定加入一个开源软件项目时,有较大的竞争者或一组人也会加入,并在代码中加入公支。如同道路上的分叉,一段代码有时也会分成两段独立的互不兼容的公支。这个问题是不容忽视的,比如说,在BSD这基础的操作系统上,又分出NetBSD,OpenNBSD,FreeBSD等其他操作系统,如何使这种情况不在Linux中出现呢? 防止这种现象发生的一种方法是,采用Linux内核开发时使用的开放方法。Linux Torvalds,Alan Cox以及其他人有权存取内核并向其添加内容。Linux工程被称为良性专政,Linus是它的专政者,目前为止,该模型产生了一个较为紧凑的内核,没有太多的冗余代码。 具有讽刺意味的是,Linux只经历过很少的实际上的分支,而有很多大的补丁程序将Linux内核黄素转化为一个实时内核,以适用于关键的设备控制,同时也存在在非常怪异的结构下运行的Linux的版本。这些补丁程序可以被看作分支,因为它们基于一个内核并从中扩展出去,但是因为它们是为特殊情况而编制的,所以它们对Linux整体发展并未造成分裂性的影响。 作为对比,可以想一想用于特殊情况的科学理论。在多数情况下,牛顿的运动定律是适用于这个世界的。只有在特殊情况下,如超大质量或超高速时,我们必须使用爱因斯坦的相对论。爱因斯坦理论的成长并扩展而不会影响牛顿的理论体系的在实际中的应用。 但是竞争中的软件就像相互竞争的科学理论一样会发生冲突。我们可以参考Lucid的历史。Lucid是一个开发了广受程序员欢迎的Emacs编辑器改进版本的公司,并将该产品卖给其它开发机构以替代早年由Richard Stallman编写的GNU Emacs。Lucid版本被称做Lucid Emacs之后,又被叫做Xemacs。当Lucid把Xemacs的解决方案定位到不同的公司时,他们发现无法把Xemacs与Emacs的结果做出足够的区分。再加上当时计算机市场的不景气,Lucid很快就销声匿迹了。 有趣的是,在Lucid退出市场时,他们对Xemacs的代码签发了GPL许可证。这家失败的企业仍然产生了一个长寿命的开源软件。只要人们觉得软件还有用处,他们就会想办法让它在新的系统中工作。直到现在,Xemacs仍为极多的人所喜爱,而且当你向那些Emacs黑客问他们喜爱哪种版本的Emacs时,通常会引起很有趣的争执。仍有一些人在使用Xemacs仍然是很重要的先进产品,并不断得到改进,使得它可以适应新的时代和硬件结构。 |