《开源软件文集:开源革命之声》绪论

Linux的创造者Linus Torvalds说,他的父母之所以会为他选择“Linus”这个名字,是因为他们景仰和钦慕诺贝尔奖获得者Linus Pauling。Pauling是罕见的人中豪杰,他摘取了不只一次而是两次诺贝尔奖的桂冠。正是Pauling的基础性工作使得发现DNA结构成为可能,我们觉得这段故事中的曲折对于开源软件团体来讲具有一定的警示作用。

实际上,DNA结构是由Francis Crick和James Watson发现的,并且Watson在他所著的《双螺旋》(The Double Helix)一书中按照编年史的体例记载了这一过程。Watson的书对科研实际遵循的方式做了非常直率的说明。他不仅叙述了才气和洞察力,而且还叙述了政治、竞争和运气。当时,对DNA奥秘的探索在Watson、位于Cambridge的Crick的实验室、位于Cal Tech的Pauling的实验室等众人之间形成了激烈竞争。

Watson明显不安地写道,当Pauling了解到Watson和Crick已经拨开DNA的神秘面纱,并创建DNA的螺旋结构模型时的情形。这个故事集中在Max Delbruk身上,他往返于Cambridge和Cal Tech之间,而且是这两个实验室人员的共同朋友。虽然他赞成Watson和Crick的意愿,即直到结果被证实以前一直为他们保持秘密,然而最终Delbruk对科学本身的忠诚占了上风。在下面这段文字中,Watson描述了他如何知道Pauling已经听说了这个消息的:

Linus Pauling最初从Max Delbruk那里了解到双螺旋结构。在信件底部的补充性附言中,我要求他不要告诉Linus。我们仍然担心一些事情可能会搞错,所以不想让Pauling在我们再多花几天的时间来整理我们的研究工作之前,不会去考虑Hydrogen-bonded base pairs。但是,他忽略了我的请求。Delbruk想告诉他实验室的每一个人,而且他也知道不用几个小时,传言就会从他的生物实验室流传到那些为Linus工作的朋友耳中。而且,Pauling要Delbruk保证让他知道什么时刻Delbruk收到我的信。更为重要的因素是,Delbruk讨厌对科学问题任何形式的保密,并且不想让此悬念史长时间地挂在Pauling心上。

保密的需要显然使Watson觉得不安。贯穿此书的一个尖锐主题是Watson认识到:竞争使得各当事人避免公开所知的一切东西,科学的进步将因保密阻碍,即便这种保密程度是很轻微的。

科学毕竟是一种开源事业。科学方法依赖于发现和证实的过程。对于要证明的科学结果而言,它们必须是可以重复的。除非共享资料(假设、测试环境、结果),否则重复是不可能的。发现的过程可以遵循许多路线,有时科学发明的确可以独立完成。但是发明过程最终必须成为共享信息:使得其他科学家可以从一个人无法做到地方沿着既定道路和方向前进;汲取他人的思想以产生一些新事物。如果这一点得不到保证的话,新思想将不会产生。

什么是自由软件?它与开源软件是什么关系?

1984年,麻省理工学院(MIT)人工智能实验室的研究员Richard Stallman启动了GNU工程。简单地讲,GNU工程的目标就是让人不必为软件付钱。Stallman发起GNU工程实质上是因为他觉得构成运行程序的知识(计算机产业称之为source code,即“源代码”)应该是自由的。如果不是自由的话,按照Stallman的推理,则会出现由极少数强力人物统治计算工业的局面。

“专有商业软件”(proprietary commercial software,或者简称“专有软件”,即proprietary software)的卖主看到的是工业界必须对商业秘密守口如瓶,而Stallman看到的则是必须被共享和发布的科学知识。GNU工程(GNU Project)和自由软件基金会(Free Software Foundation,FSF启动GNU工程的组织)的根本原则是:源代码是计算机科学进一步深入发展的基础,而且对于持续的革新而言,可以自由地得到的源代码确实是必要的。

Stallman担心的是 会将对自由软件作出何种不同的反应。科学知识经常处在公共领域,学术出版的一个作用就是把它置于公共领域。然而对于软件而言,单单让源代码进入公共领域,将会很明显地诱使商业公司为了它们自己的利益而选择代码去牟利。对于这种威胁,Stallman的解决方案利用GNU通用公共许可证,即GPL(参阅本书的附录二)。

GPL的基本意思是说,你可以随意拷贝和散发根据GPL许可证授权的软件,并且要求你不阻止其他人做同样的事情。你既不能向他人就软件本身收费,也不能通过进一步的授权来限制他们这样做。另外,GPL还要求从GPL作品衍生出来的作品也必须同样遵循GPL条款的约束。

在这本书中,当Stallman和其他人谈论自由软件时,他们真正谈论的东西是自由言论。英语在处理这里的文字区别时的确显得苍白乏力,但是在“免费”(gratis)和“自由”(liberty)之间的确存在天壤之别,如同“言论是free(自由的)”与“啤酒是free(免费的)”之间两个“free”的区别。这条基本原则(言论中的自由部分,不是指啤酒的免费)导致许多软件公司公然抵制自由软件。他们目的毕竟是要在市场上赚钱,而不是为了给我们增加知识。对于Stallman来说,计算机工业和计算机科学的不和是可以接受的,甚至可能是他所期望的。

什么是开源软件?

1997春天,自由软件 团的一些领导者聚集到加利福尼亚。这个 团包括Eric Raymod,Tim O’Reilly,VA Research的总裁Larry Augustin等人。他们所关心的是寻找一种方式,来向以前躲避自由软件思想的人们推广这种思想。他们担心,自由软件基金会的反商业信条会让人们对自由软件敬而远之。

在Eric Raymond的坚持下,这群人同意他们所缺乏的是市场营销活动,这个活动的目的是赢得思想,而不仅仅是市场份额。最后讨论的结果产生了一个新的术语来描述他们所推进的软件:Open Source(开源软件)。他们制定了一系列的指导原则,用来描述哪些软件可以有资格被称为开源软件。

Bruce Perens为制订开源软件的定义做了很多基础性的工作。GNU工程的正式目标之一就是创造一个自由可用的操作系统,以作为平台来运行GNU软件。从软件引导(software bootstrapping)的传统观点来看,Linux已经成为那个平台,Linux是在GNU工具的帮助下创造出来的。Perens曾经是Debian工程的领导者,它所管理的Linux发行版本,只包括那些符合GNU精神的软件。Perens已经在“Debian 会契约”(Debian Social Contract)中明确地阐明了这一立场。开源软件的定义是“Debian 会契约”的直接产物,因此开源软件是与GNU的精神一脉相承的。

与GPL相比,开源软件的定义允许更大授权自由。特别是当软件中混合了专有软件和开源软件时,开源软件的定义允许在它们的基础上生成更大的混合。

结果是,开源软件许可证能令人信服地允许使用和再分发开源软件,而不必考虑补偿或者信用的问题。举例来讲,你可以得到伟大的Netscape浏览器的源代码,并且把它作为连同另一个软件(可能是专有软件)一起发布出去,而用不着去通知 景(Netscape)公司。 景为什么会希望如此呢?原因很多,最引人注目的是,这样做可以为他们的客户端代码赢得更大的市场份额。这些代码与他们的商业软件一起工作得的非常好。从这个角度来说,奉送源代码是建立平台的一个很好的方式。这也是 景的人不使用GPL的原因之一。

这在 团中可不是小事一桩。1998年下半年,曾经有一场重要的争论对Linux威胁极大,几乎使Linux 团破裂。裂痕是因出现了两个软件系统GNOME和KDE而引发的,它们两者都试图建立一个面向对象的桌面界面。一方面,KDE利用了Troll Technology公司的Qt库,其中的一部分属于专有代码,但是很稳定、很成熟。另一方面,GNOME决定使用GTK+库。尽管它不如Qt成熟,但是它是完全自由的库。

过去,Troll Technology不得不在使用GPL和维持他们的专有软件立场之间进行选择。GNOME和KDE的裂痕本来会持续下去。然而,在开源软件的出现后,虽然Troll仍然控制他们想耍的技术,但是Troll可以为希望Qt符合开源软件定义的人改变他们的许可证。Linux 团两个被要部分的裂痕看来要弥合了。

力量的黑暗面

尽管Watson当时可能没有意识到,他处于一个生物科学新时代的开端。当双螺旋结构被发现时,生物和化学科学本来是一个工艺,一种实践工艺。它是由在一些小团体内工作的人来开展的,最初是由学术研究资助的。然而变化的种子已经撒播。随着许多医学突破的出现,尤其是脊髓灰质炎疫苗和盘尼西林(即青霉素)的发明,生物科学将变成一个产业。

今天的有机化学、分子化学,以及基础医学研究都不是由一小部分参与者作为一种工艺来实施的,而是作为一个产业来运作的。学术研究的继续,绝大多数的研究者和极大量的研究经费都是属于医药产业的。科学和产业的联合是最不稳定的。医药公司可以以一种意想不到的标准来资助学术研究,他们也可以为了既得利益来资助研究。请你想一想:医药公司宁愿将主要的资金投入到基于治疗的研究中,还是宁愿将资金投入到基于药物的疾病治疗研究中呢?

计算机科学同样必须存在于与产业的不稳定联合中。以前新的思想最初从学院派的计算机科学家中产生,而现在计算机产业推动着创新的发展。虽然开源软件程序员仍然是遍布世界的许多计算机科学界尚未毕业和已经毕业的学生,但是越来越多的开源软件程序员是工作在业界中而不是在学术机构里了。

业界已经产生了许多非凡的创新:以太 、鼠标和图形用户界面(GUI)——全部来自于施乐公司的PARC(帕罗·阿尔托研究中心)。但是计算机产业也有一个不好的预兆。让微软来操纵桌面计算机工业,让它看起来像什么就是什么——除了位于Redmond的人以外,没有人会真的认为那是一个好主意。

业界会对创新施加负面的影响。图形图像操作程序(GIMP)beta测试版0.9版本不到一年就夭折了。它的发明者,伯克利的两个学生,离开学校到业界工作,而把他们的创新丢在了一边。

使用源代码,老兄!

开源软件不是从天而降的思想。开源软件运动是一场真正根本的革命。虽然像Eric Raymond和Bruce Perens这样的传道者已经在改变自由软件方面的术语方面取得了巨大的成功,但是如果没有合适的条件,这个变化将是不可能出现的。我们已经达到了这样一个层次,整个在GNU的影响下学习计算机科学的这代学生正在业界工作,并且多年来暗地里给向业界引进自由软件。他们这样做不是出于私心,而是为了给他们的作品带来更好的代码。

这些革命者身逢其时。他们是 络工程师、系统管理员以及程序员,开源软件贯穿他们的接受教育培养过程的始终,而且他们也想使开源软件朝着专业化的方向的发展。自由软件已经变成了许多公司的关键部分,这经常是无意的,但有时候也是有意的。开源软件已经成年了:它已经有了类似开源软件商业模式的东西。

Bob Young的Red Hat软件有限公司因奉送它的核心代码Red Hat Linux而得到繁荣。将详细手册的附加在全套产品中并打包销售是发布自由软件的好办法。Young主要是在出售了“方便”,因为多数人不想费力去从Internet下载构成全套Linux系统的所有部件。

但是并不仅仅只有他这么做。为什么Red Hat在美国市场上占据了支配地位呢?为什么SuSE Linux支配了欧洲市场呢?开源软件构成了一个商品市场。在任何商品市场里,消费者会估计一个他们可以信任的品牌。Red Hat的实力来自于他们对品牌的管理:一贯坚持的市场营销并且招揽 团,这样使得当 团的朋友被问及使用何种产品时,他们会推荐Red Hat。对于SuSE 也是一样的道理,这两个公司拥有他们各自的市场的最大原因在于:他们最初都认真对待品牌管理。

对 团的支持是根本。Red Hat、SuSE以及其它Linux世界里的公司明白,仅仅通过Linux挣钱而不做任何回 会导致两个问题。首先,人们会认为这样的公司是揩油者,而推荐其它的竞争者来取代它们。其次,一个公司必须能够区分于其他竞争者。其他公司比如CheapBytes和Linux Central仅仅提供了低价的分发品,以一美元的价格来卖光盘。因为Red Hat提供比发行预算多出很多的价值,因此市场将会察觉到并认可他们,所以Red Hat一定会得到回 。对于开源软件模式而言,极具有讽刺意味的是,Red Hat能够为他们的发行品负担49.95美元的费用,仅仅是因为支持了新代码的开发,并像开源软件一样将代码返还给整个开源软件 团。

这种品牌管理对于开源软件而言是全新的概念,但是长期以来仅仅提供优质服务的老模式也已经成为开源软件商业模式的一部分。Michael Tiemann帮助建立起了Cygnus思想,他认为,尽管世界最好的编译器GCC是可以免费使用的,但是公司仍然希望为编译器的技术支持和加强版本而付费。Cygnus的创始人之一John Gilmore将此描述为“让自由软件可以负担得起”。

事实上,现在这种奉送产品而出售技术支持的模式正在开源软件世界里迅速地扩散开来。VA Research研究从1993年后期就开始生产和支持高性能的Linux系统。Penguin Computing提供了简单的产品和服务。LinuxCare为Linux提供了全面的技术支持。现在Sendmail的创建者Eric Allman建立了Sendmail Inc.公司来为电子邮件服务器软件提供服务和增强版本,你也许知道,世界上80%的电子邮件是靠sendmail程序来投递的,也就是说,他们占领了80%的电子邮件服务器的市场份额。Sendmail是个比较有趣的例子,因为他们拥有两条途径来扩展市场。它拥有专有软件Sendmail Pro的所有权,以及自由软件的Sendmail,Sendmail的开发周期比Sendmail Pro要迟后一年的时间。

科学方法的创新

今天,开源软件运动发展最迷人的不是诸如Red Hat以及Sendmail之类公司的成功。令人着迷的是看到像IBM和Oracle这样计算机产业的大公司将注意力转到开源软件上来,并视之为一个商业机会。他们在开源软件中寻找什么呢?

创新

科学本质上而言是一种开源事业。科学方法依赖于发现和证实的过程。对干要证明的科学结果而言,它们必须是可以重复的。除非资料(假设、测试环境、结果等)能被共事,否则重复是不可能的。发现的过程可以遭循许多路线,有时科学发明的确可以独自完成。但是发明过程最终必须借助共享信息:使得其它科学家可以沿着一个人不能做到的道路前进;吸取他人的思想以产生一些新事物,否则将不会产生。

科学家讨论重复或者复制(replication),开源软件程序员则讨论调试(debugging)。科学家讨论发明(discovering),开源软件程序员谈论创造(creating)。最终,开源软件运动是科学方法的延伸,因为计算机产业的核心在于计算机科学。想想编译器发明者Grace Hopper在60年代初期说过的话:

对我来讲,编程不仅仅是一个重要的实践艺术。它还是承担巨量知识的基础。

不过,计算机科学和所有其他科学有根本的不同。计算机科学仅有一种方式使得人们能够复制结果:共享源代码。为了让一些人论证程序的有效性,你必须提供给他们编译和运行程序的方法。

复制使得科学结果变得具有健壮性。科学家不能期望说明所有的测试条件,也没有必要具有测试环境来完全测试一个假设的每一方面。通过 团内共享假设和结果,科学家使得多双眼睛可以看到一双眼睛所可能错过的东西。对于开源软件开发模式,同样的原则被表示为“有足够的眼睛,所有的错误都可以查得水落石出”。通过共享源代码,开源软件开发者使得软件更具有健壮性。与一个程序员可以达到的范国相比,程序可以在更为广泛和不同范围来使用和测试,在程序中的错误可以被发现,或者程序根本就没有错误。因为提供了源代码,错误通常可以被开发过程之外的人删除掉,而不是仅仅发现它而已。

科学结果的开放共享推动了发明。科学方法减少了重复的努力,因为如果同样的人在做同样的项目,那么他将了解到这一点。进步不会仅仅因为一个科学家停止做一个项目而停止。如果结果有价值,其他科学家将会继续。同样,在开源软件开发模式下,共享源代码推动了创新。为某个开源软件项目工作的程序员可以对于其他人的工作起到杠杆作用,或者开源资源被合并成为一个工程。一个开源工程可以给另一个开源工程提供创造灵感,如果没有原来的开源工程,新的开源工程就不会产生。而且真正有价值的工程在一个程序员离开后也不会夭折。因为有了可用的源代码,其他人可以继续并接管这个工程。GIMP虽然被闲置了一年,但是最终开发工作还是继续了下去,而且当今天开源软件开发者考虑在一个新领域内可以做些什么的时候,GIMP总是被自豪地提及。

位于Fortune前500名的公司想为创新而采用这个有力模式。IBM愿意花费相当数目的资金将Apache集成到MIS系统中。对于IBM而言,这是纯粹的胜利;他们可以安装一个格外稳定的平台,这将降低支持平台的花费,并且真正地通过提供服务来帮助他们的客户解决问题。重要的是,IBM工程师可从Apache的开发队伍中以及其他独立开发人员的思想中获益。

这是Netscape决定让它的浏览器成为开源软件的准确原因。其部分目的是为了稳定和增加市场份额。但是更重要的,Netscape期望由独立开发者的 团来推动创新,并帮助他们建立一个优秀产品。

IBM很快发现紧凑地集成软件的技术,比如集成Apache到服务器平台AS400以及RS600,可以帮助他们赢得合同,并卖出更多的IBM硬件。IBM将此作为下个步骤,并且正在将他们流行的DB2数据库加到Linux操作系统上。许多人把这当成是对Oracle在Linux上移植Oracle 8的反应,IBM认真承担它在 团中的任务,并且为了开源软件贡献资源。通过将Apache加到AS400平台,IBM将它作为最流行的主机,并且以IBM独特的方式使开放技术合法化。

看看Coleman(属于Thermo-electron)、SAIC、BDM和IBM这样的公司在竞争试图获得联邦政府和企业招标时将会发生什么事情将会是有趣的。你可以比较一下安装1000个NT或者是Solaris的软件花费并且同安装1000个Linux的代价。当你的竞标价格降到到25万美元时,你仍然可以为这种投标进行有效的竞争。像CSC公司,它可以为了获得更多的合同而放弃一到两个百分点的利益差额,它可能仅会努力考虑怎样像Linux一样来完善技术。

虽然像IBM、Oracle和Netscape这些公司已经开始用开源软件来集成他们的商业模式,但是许多传统的软件公司继续采用纯粹的专有方案。他们这样做是在冒险。

然而更加具有讽刺意味的是,根据QUESO和WTF的调查,事实上29%的Web现在运行的是基于Linux的服务器。QUESO是一个工具,它可以通过发送TCP/IP分组包到一个机器来判断它运行的是何种操作系统,并分析响应这些分组包的服务器。通过与类似于Netcraft查询引擎之类的东西(它可以分析服务器响应的鉴别标志)连接运行,就可以通过操作系统和服务器类型得到关于Web的生动描述。

事实上,专有软件卖主已经承受了大量的损失。Linux和FreeBSD确实使他们损失了很多机会来成功地出售一个用于PC硬件的专有Unix。这样的公司之一Coherent,已经破产了。独领风骚许多年后,Santa Cruz Operation(SCO)公司已由第一位的Unix卖主变成了人们追忆的风景。SCO公司可能会找到一种生存方式,但它的旗舰产品SCO Unix也会成为开源软件的另一个牺牲品吗?

多年来Sun公司为开源软件开发提供多方面的支持,或者通过捐献硬件和资料来帮助Linux移植到SPARC平台上,或者通过支持John Ousterhout的脚本语言(Tel)的开发。具有讽刺意味的是,Kirk McKusick描述的那些从伯克利自由软件中成长起来的公司,在理解开源软件现象的重要性上却很吃力。

让我们花一些时间来在SCO和Sun之间做一些比较和对照。

Sun的主要收入是来自于对他们操作系统和硬件的支持和服务。Sun的产品系列分布于从相对PC具有竞争性价格的桌面工作站,到竞争主机市场的大型企业级服务器群组。他们在硬件领域的收益不是来自于他们的低端Ultra系列,那不如他们对他们专门设计和定制的E和A系列服务器的服务、出售和技术支持赚得多。据估计Sun的50%收益来自于支持、培训和咨询服务。

另一方面,SCO通过出售SCO Unix操作系统、出售诸如编译器和服务器之类的程序以及对使用SCO产品的培训和教育来赚钱。所以虽然SCO有精密的组织,但是它同样有危险,因为仅有一种作物的农场很容易会因一种场枯萎病而颗粒无收。

Sun看到了Linux的发展,可能因为更关心他们所提供产品中的低端产品。Sun的策略是确保Linux可以在Sun硬件上运行,以便人们可以选择在Sun硬件去运行Linux。这很有趣,因为Sun可以继续为他们的机器提供硬件支持。将来,我们不必因为看到Sun为运行在他们低端机器上的Linux提供软件支持而感到吃惊。

某些方面上,这对Sun而言是一个小步骤。事实上,如果你现在打电话给一个Sun的系统管理员问他(或她):当他收到一个新Sun产品包装箱时要做的第一件事情是什么,他会告诉你“下载GNU工具和编译器,并安装我想要的Shell”。Sun可能最终从客户中得到这个信息,并且仅作为招揽顾客的方法来为人们做这些事情。然而,如果Sun通过吸取基于发行源代码思想的创新,那么Sun就会看到他们的用户群,并可以为他们提供服务。从而克服服务上的缺点。

另一方面,SCO的模式弹性较小。SCO的定价模式是首先卖操作系统,工具(比如编译器和文本处理语言)需要额外收费,而Linux用户则认为这些东西理应与操作系统一起提供。在健壮的自由操作系统的竞争面前,SCO的这种模式简直难以为继。Sun可在多种硬件系列里加入价值,与Sun不同,SCO没有可以捆绑收益的硬件。他们所拥有的一切本来就只有操作系统,对于SCO而言那是不够的。SCO将做些什么呢?

他们的反应迄今仍不够开明。1998年初,SCO给它的庞大用户群体发了一封信来抨击诸如Linux和FreeBSD,说这些Unix不稳定并且不专业,同时提供了降低价格的基本SCO操作系统。他们的这个行动受到了广泛的谴责,不得不进行很大的修正。这封信对Linux可信度的无耻谎言侮辱了很多人。SCO不相信它的用户足够聪明,可以识破FUD。最终SCO在他们的Web站点上发布了撤回公开信的公告。

1998年后期,SCO发布了一个印刷发行品,说什么SCO Unix现在有了Linux兼容层,这样你的Linux程序就可以在SCO Unix上运行了。干吗要在一个反应相当冷淡的操作系统上花钱呢,仅仅是为了要使之与免费竞争产品兼容?

在从开源软件获益的运动中,SCO处于特殊的位置上。SCO有一些非常有价值的优秀特性,他们可以在开源软件的未来中处于真正有力的位置。然而,他们必须做到信念的飞跃。不是将开源软件视为损害SCO的优秀特性的威胁,而是他们必须意识到开源软件可以为那种优秀特性带来创新的机会。

就开源软件而言,相比微软的行为,SCO甚至Sun这样的公司的机动性显得苍白无力。这今为止,微软仍然固守它的专有模式,而且看起来至少在Windows 2000的发行过程中将固守那个模式。

我们猜想Windows 2000将会在2000年晚期或是2001年早期上市大放光彩。毕竟这合并了Windows NT和Windows 98。合并的某个时候,或者六个月之前,将会发布一个新的微软Windows操作系统。微软总是垂诞于“有利可图的企业市场”,在此机器上运行着与公司的性命攸关的服务。然而迄今为止,没有证据表明微软能够发布一个具有市场所需极高稳定性的Windows NT系统或是Windows 2000系统。所以这个新系统将作为有前途的解决方法来发布。

让我们把这个象征平台改变的产品叫做“Windows Enterprise”或者是Went。本来微软会查看NT,并说我们怎样能使得它变得更可靠和稳定。就像Linus Torvalds所指出的,操作系统理论在最近二十年里面真的改变甚多,所以微软工程师将反驳并说,一个完美的、在执行级别没有污染的紧凑内核是完成可靠性和速度的最好途径。这样修改Windows NT内核的主要错误,即包括错误检测和错误选择的第三驱动层,并且将GUI作为内核的一部分,微软将不得不写一个异常缓慢的模拟层,或者削弱许多老的应用。微软确实可以做任何一个。但是开源程序将会很成熟,那时那些买软件的公司会问自己,他们是否信任微软能够给他们提供叫做稳定内核的东西,像在Linux下可以一样的好。

到时答案当然会自现。没有人真的知道微软是否能够在这一级别上写出可靠稳定的软件。Eric Raymond提到的“万圣节前文档”暗示,即使在微软对此也有严重怀疑。

开源的危险

就像大部分科技企业一样,大部分软件要冒失败的危险。正如Bob Young所说的。编制成功的开源软件与编制成功的专有软件没有什么不同。在两种情况下,成功的例子是罕见的,而最好的创新者是那些能从错误中吸取教训的人。在科学和软件中,导致创新的创造都会需要一些代价。保持对现行的开源软件工程的控制是很困难的。对失去控制的担心将会让一些个人或企业失去积极参加的兴趣。特别要关注的是,当决定加入一个开源软件项目时,有较大的竞争者或一组人也会加入,并在代码中加入分支。如同道路上的分叉,一段代码有时也会分成两段独立的互不兼容的分支。这个问题是不容忽视的,比如说,在BSD为基础的操作系统上,又分出NetBSD,OpenNBSD,FreeBSD等其他操作系统,如何使这种情况不在Linux中出现呢?

防止这种现象发生的一种方法是,采用Linux内核开发时使用的开放方法。Linux Torvalds,Alan Cox以及其他人有权存取内核并向其添加内容。Linux工程被称为良性专政,Linus是它的专政者,目前为止,该模型产生了一个较为紧凑的内核,没有太多的冗余代码。

具有讽刺意味的是,Linux只经历过很少的实际上的分支,而有很多大的补丁程序将Linux内核转化为一个实时内核,以适用于关键的设备控制,同时也存在在非常怪异的结构下运行的Linux的版本。这些补丁程序可以被看作分支,因为它们基于一个内核并从中扩展出去,但是因为它们是为特殊情况而编制的,所以它们对Linux的整体发展并未造成分裂性的影响。

作为对比,可以想一想用于特殊情况的科学理论。在多数情况下,牛顿的运动定律是适用于这个世界的。只有在特殊情况下,如超大质量或超高速时,我们必须使用爱因斯坦的相对论。爱因斯坦理论的成长并扩展而不会影响牛顿的理论体系的在实际中的应用。

有趣的是,在Lucid退出市场时,他们对Xemacs的代码签发了GPL许可证。这家失败的企业仍然生产了一个长寿命的开源软件。只要人们觉得软件还有用处,他们就会想办法让它在新的系统中工作。直到现在,Xemacs仍为极多的人所喜爱,而且当你向那些Emacs黑客问他们喜爱哪种版本的Emacs时,通常会引起很有趣的争执。仍有一些人在使用的Xemacs仍然是很重要的先进产品,并不断得到改进,使得它可以适应新的时代和硬件结构。

鼓励开源软件黑客

Lucid的经历表明程序员对工程的忠诚度常常超过工程本身给他们的补偿。为什么有人编写自由软件?为什么他们会把可以每小时收费几百美元的软件无偿赠送他人?他们从中可以得到什么好处呢?

其动机不单纯是利他主义。这些人也许没有微软的股票,但每个人都是有足够能力养活家人的。在外人看来这似乎是个矛盾;你毕竟不能靠自由软件生存。其答案部分在于要超越传统的对工作和 酬的理解的局限性。我们正经历一个新经济模式的塑造,而不是新的文化。

记住,那些编程人员大部已工作多年,而且不会视编程为负担或工作。像Apache或Linux这样的复杂工程会给人带来智力活动所能带来的最高满足感。这有点像短跑运动员冲刺时的感觉,一个真正的程序员在写出一段完美或紧凑的代码后也会有同样的快感。那种工作了好几天才将一个复杂的代码完成或调试成功的喜悦心情是无法用语言来表达的。

事实上许多程序员编写代码是因为他们喜欢做,这也是他们才能的体现。一个程序员不编写代码就会感觉不自在,这就像运动员被剥夺了竞赛的权利。要程序员遵守纪律就象让运动员遵守纪律一样难;许多程序员确实不喜欢在掌握了一段代码后还要继续维护它。

对编程的共同认识就是强调名声。编程是一种天赋:程序员工作的价值在于与他人分享。当他的工作成果被越多的人分享时,其价值也就越高;假如公开源代码,而不是预编译的二进制文件,那么价值更大。

编程也是一种获得一种权力的过程,这被Eric Raymond称做“搔痒”(scratching an itch)。大部分开源软件工程以各种挫折开始:或者是想寻找合适的工作工具却找不到,或者是找到一个工具,但是又破又无法维护。Eric Raymond就是这样开始编写fetchmail的;Larry Wall是这样设计Perl的;Linus Torvalds是这样创造Linux的。从很多方面来看,Stallman发起GNU工程的潜在动机的最重要观念就是权力感。

Linux未来的风险和投资

一个黑客的动机也许是纯智力的,但结果不必是牺牲自身利益。越来越多的人和企业正以一种全新的实用和机会主义精神加入到开源软件的阵营中来。

在我们生活和工作的硅谷中,有用风险投资剌激区域经济发展的历史。这可以追溯到晶体管第一次被用于商业目的,用芯片和晶体管代替复杂的逻辑电路板,微处理器变成一种工业动力。

在任何特定时期,都会有吸引风险投资的热门技术。虽然他们不会忽视其他的公司或商业机会,但是他们深知要使他们的商业成绩达到他们的标准,他们不仅需要成功的企业,还需要那些在投资后的三年之内可以IPO的公司,或者是那些可以用上亿元成交的公司,如Oracle或Cisco。

1998年,互联 的热潮开始消退;那些以Netscape的壮观登场为开始的IPO冲动开始减退。一个具有象征意义的行动就是美国在线(AOL)收购了Netscape,这标志了一个时代的结束。投资界对互联 股票更加小心了,普通互联 公司与一般公司也被一视同仁,他们必须有较为可信的盈利可能。因此,投资去向如何?我们预测Linux及与开源软件相关的公司将成为下一个投资热点。在1999年已经由Red Hat软件引发了Linux及开源软件IPO的热潮。所投资金已经非常惊人了,而且像Scriptics、Sendmail和Vix.com这样的公司已经开始借助适宜的市场环境来构建他们的梦想。

问题的关键不在于风险投资是否流向开源软件业,而是为什么仅向那个方向发展。要知道自由软件并不是新事物;Richard Stallman在1984年就创建了FSF,为什么这么多年之后才开始变热呢?

在计算机行业,大公司控制了商业市场的大部分份额。在硅谷,那些希望天使降临和寻找风险资本投资的有成功希望的应用软件公司很快就发现,如果和微软这样的大公司对抗是不可能获得资金的。每个起步要么按微软的游戏规则进行,要么彻底退出不玩。

这种具有创造性的压力环境就是自由软件生根的条件。任何一个为微软视窗编写程序的程序员都会告诉你,那些令人畏缩的笨重的接口集合就是为了使程序彻底依赖于视窗系统库而设计的。微软为程序员提供的接口使得原始程序很难移植到其它操作系统上去。

而在微软尚未占领的最大论坛——Internet——上则没有这样的限制。如同Scott Brandnet所描述的那样,Internet是建立在一组强大的开放标准之上的,它是由个人参与维护的,而不是由公司控制的。Internet从许多方面讲是开源软件的肇端。Internet稳定的、基于开放标准使得它适合各种程序员在Internet上开发程序。Internet的显著增长是这个开放标准的产物。

从Internet的成功中所继承下来的结构在开源软件运动中也得到了体现。Linux经销商。如Red Hat;f日SuSE血在竞争,但他们的竞争是基于开放标准和共享代码的。他们都用Red Hat Package Manager(RPM)作为他们的包管理工具,而不是让开发人员局限于只能使用特殊的包管理工具系统。Debian使用另一种包管理工具,但由于Debian和Red Hat都是基于源代码开放的软件,两者的兼容性已经实现。

因此,使得Internet技术成为风险资本金的诱人乐园的基础在于开源软件,这个基础将使得开源软件技术同样诱人。

最为重要的是Internet创造了一种开源软件技术可以发挥杠杆作用的基础。我们正从Tim O’Reilly所描述的从软件(software)时代向讯件(infoware)时代过渡。要使这种过渡成为可能,发布信息的障碍和成本必须大规模地降低。Internet已经降低了这种障碍。

科学和新的复兴

现今的开源软件发展模式在多年以前就在学院计算机界产生了。然而,今天开源软件技术得以获得巨大成功的原因是Internet使信息的快速传播成为可能。当Watson和Cricket发现双螺旋结构时,他们很希望其结果可以在几天之内从Cambridge传到Cal Tech。现在这样的传送几乎是在瞬间完成的。就像现代科学由于印刷术的发明而进入文艺复兴时代一样,借助Internet技术,开源软件技术进入了数字复兴时代。

中世纪时,由于缺少廉价的信息载体。书面作品不得不用手抄来实现,代价高昂,因此信息必须有即时利益才行。交易记录、银行交易、外交通信等,这些信息比较简洁,而且有即时利益,才会被传播。而化学家、牧师及哲学家——之后被称做科学家的投机性作品的优先权比较低,因此信息传播也比较慢。通过极大的降低通向信息基础门槛的阻碍,印刷术极大的改变了这一切。从前只能独自工作的学者,第一次可以实现与其他所有的欧洲学者进行交流。但是这样的活动是建立在完全的信息共享基础之上的。

从这样的 团所继承的思想就是学术自由,以及我们现在称之为科学方法的步骤。没有形成团体的需要,那么什么都是不可能的,几个世纪以来信息共享是使科学团体团结一敢的核心力量。

想像一下,如果牛顿保留自己的运动定律,而是在以后的三十年里去做一个军火承包商:“我不能告诉你我是怎样知道弹道的抛物线的。但我可以为你的火炮测量数据,但要收费。”这听起来太荒唐了。这样做,不仅科学得不到发展,而且它也不能这样发展。如果那成为科研的趋势,那么这种保密性将阻碍科学的任何发展。

Internet是数字时代的印刷术。进入信息基础门槛的障碍再一次戏剧性地降低了。不用再像早年的DOS,或者把UNIX源代码打印到纸带上,或软盘上,甚至CD-ROM上。任何FTP或Web服务器现在都可以作为一个廉价迅捷有效的发布点。

在这种复兴带来希望的同时,我们不能忘记几个世纪以来的科学遗产,那就是开源软件发展模式的基础所在。现在的计算机科学和计算机产业是一种不稳定的联姻。来自微软这样的产业巨头的压力想让新的发展保持专有以获取短期的商业利益。但因为越来越多的计算机科学的发展工作源于计算机产业而非学术机构,业界必须小心使计算机科学通过共享思想——即开源软件——保证繁荣。工业界如此做不是出于利他主义,而是为了现实原因:扩大自身利益。

首先,如果计算机业界认为金钱回 是开源软件程序员的首要目的,那么他们的目光是短浅的。要使这些人加入进来必须尊重他们的优先权。这些人在参与一场声誉游戏,而且历史证明,科学的成功比商业的成功更为持久。过去几百年,我们能记住最大的工业家只有卡耐基、洛克菲勒等几个。但是我们却能记住更多的科学家和发明家:爱因斯坦、爱迪生、Pauling等。当百年之后,历史记录现在的情况时,人们也许会记住Bill Gates或其他少数几个计算机工业家。他们可能更会记住Richard Stallman和Linus Torvalds。

其次,更为重要的是,产业需要科学提供的创新。开源软件可以用科学的创造性和速度来开发和调试新的程序。计算机产业需要从开源软件的发展中得到新一代的思想。

再来考虑一下Linux这个例子。Linux是一项在微软决定发展Windows NT的五年之后才开始的工程。微软在Windows NT的开发上花费了几万人小时和数百万美元。而今天,Linux被看作是NT的可替代者,它被作为基于PC的服务器系统,并作为Oracle、IBM和其他主要企业软件提供商移植主要中间件和后台软件的选择。开源软件的发展模式创造了只有像微软这样有足够财力和资源的公司才能制造出的软件。

为了保持数字复兴,我们需要开源软件的发展。开源软件的发展不仅会促进计算机科学的发展,同样也会促进计算机产业的发展。

Chris DiBona

Chris DiBona自从1995年开始使用Linux。他在Linux 团中非常活跃。他志愿做过Linux International的Webmaster并作为Linux国际授权开发基金会的协调人。作为VA研究Linux系统(http://www.varesearch.com)的市场主管,Chris深感自豪。同时他也是Silicaon Valley Linux Users Group(全球最大的Linux用户组, 址是http://www.svlug.org)的副总裁。

他的个人 页见http://www.dibona.com,电子邮件地址是chris@dibona.com。

Sam Ockman

Mark Stone

Mark Stone自Linux内核1.0.8版发布后,就将其作为主要的操作系统使用。他在20世纪70年代末开始写他的第一个大规模的程序:一个用于PDP-1170的Algo1编译器。目前他更愿意使用脚本语言编程。他最喜欢的脚本语言是Tcl。


i4CN(工业4.0中国-简称),是中国最系统化、最全面的工业4.0、工业互联 、智能制造、无人工厂领域的第三方咨询公司。公司整合华为、博世、腾讯、美的等专家,首家提供工业4.0整合方案,包括i4技术项目、i4四大管理体系、十大思想变革的三层金字塔式咨询架构;能够指导企业实施专业化的工业4.0变革和无人工厂规划建设与运营管理。助力国家实现中国制造2025的宏伟蓝图。

梁卓业 i4CN首席咨询顾问中国工业4.0、智能制造、无人工厂、工业互联 专家,华为ISC、IPD体系专家华为ISC+项目组成员,智能制造标杆车间项目经理工业4.0十大思想变革、无人工厂建设体系首创人中山大学麻省理工学院双MBA,广东工业大学机电学院本科欢迎需要导入华为ISC、IPD体系,实施工业4.0无人工厂的企业与i4CN合作。

(请搜索i4CN梁卓业老师相关课程视频并进一步了解)

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年2月15日
下一篇 2019年2月15日

相关推荐