A Brief History of Free, Open Source Software and Its Communities
Feb. 2021, pp. 75-79, vol. 54
DOI Bookmark: 10.1109/MC.2020.3041887
作者:Jesus M. Gonzalez-Barahona
关键字:公用软件,软件工程,自由及开源软件,自由软件术语,开源软件,许可证,互联网
摘要:自由及开源软件(Free and Open Source Software,FOSS)有很长的发展历史,从软件起源时就已经存在,只不过当时还没有自由软件或开源软件的说法而已。了解这段历史及其事件,有助于理解今天的自由及开源软件。
自由软件的概念可以追溯至20世纪80年代初,开源软件这一术语的出现则要稍晚一些,是在20世纪90年代末。而在自由及开源软件(FOSS)的概念出现之前,一些计算机程序本就是开源的。事实上,直到20世纪60年代末,大多数软件都是作为自由及开源软件而存在的:供计算机运行维护者相互共享软件。当时,生产制造计算机的公司不多,如IBM,曾以很大的优势成为市场领导者。对于所有计算机制造商来说,软件只是硬件的附属品:只要支付了维护费用,你就可以使用制造商的所有软件。一些由计算机用户组成的团体,如IBM用户团体SHARE和数字设备公司(DEC)用户团体DECUS都赞成软件共享。可以这么说,在1970年之前,软件完全是为了配合硬件而存在,本身并不被认为具有价值。
1969年,情况发生了变化,IBM宣布:将软件目录中一部分单独出售。从此,用户不得不购买一些他们所需要的软件。各种软件公司得到蓬勃发展,其商业模式是:专门生产软件,运行在他人生产的计算机上。这拉开了软件市场的序幕,软件的地位也随之发生了变化。软件供应商通过技术和法律手段来限制共享、修改甚至研究程序。20世纪70年代中期,专有软件(非自由软件)已经成为常态。然而,到20世纪80年代初,一些计算机程序以自由及开源软件(FOSS)的方式发布,其中包括SPICE(集成电路仿真程序)、TeX(文本排版系统)和Unix(操作系统)。
1973年,SPICE及由作者Donald O. Pederson公开其源代码。这是一个学习集成电路(IC)设计的工具,因为开源迅速被几所大学采用。之后,SPICE逐渐成为集成电路设计的首选工具,成为事实上的标准。这是基于自由及开源战略成功占据市场主导地位的第一个案例。直到20世纪60年代末,大多数软件都以自由及开源的方式运作:计算机维护者相互共享软件。
TeX是由Donald Knuth在1978年休假期间开发的一个高质量的文本排版系统。Knuth原打算用于排版他自己的书稿,开发完成后通过授权的方式将源代码公开。今天看来,这种授权与自由及开源软件许可十分类似。从此,TeX成为科学排版的标准,而且沿用至今。
Unix是由Thompson、Ritchie和AT&T贝尔实验室自1972年开始创建的。1973年以来,Unix被分发到许多大学。许可证规定:仅限学术使用,不能在许可证签署者之外传播。70年代末,形成了一个由学术机构和研究中心为主的社区,其工作方式类似于后来的自由及开源软件社区,其成员可以分享并改进代码。加利福尼亚大学伯克利分校的计算机系统研究小组(CSRG)开始生产自己的Unix发行版。
以上事件对于20世纪80年代末自由及开源软件的产生起着关键作用。在这十多年期间,以上案例为自由及开源社区运行机制积累了宝贵的经验。
20世纪80年代:GNU、伯克利软件发行和互联网
1983年,Richard Stallman发起GNU项目,其目的是生产一个完全由自由软件组成的操作系统(类似Unix)。Stallman当时是麻省理工学院(MIT)人工智能实验室的一名程序员,他辞去了工作,以确保他对自己编写的软件有完全的所有权。该项目从一个编辑器(Emacs)和其他一些工具开始,并迅速生产出各种关键组件。到1987年,它交付了一个编译器(GNU Compiler Collection)、一个调试器(GNU Debugger)和一些实用工具。1985年,Stallman发起成立自由软件基金会,以支持和促进GNU项目和所谓的自由软件。
Stallman还建立了自由软件的哲学原则,包括对自由软件概念的定义。自由软件的四项基本自由是:自由使用、自由学习和修改、自由分享、将修改后的代码再自由分享。GNU项目为它所发布的软件制定了许可证。这些许可证是这四项自由在法律上的体现。1989年,它们被统一为GNU通用公共许可证(GPL),这是最成功的自由软件许可证,也是第一个自由软件许可证。GPL是一个聪明的黑客:它通过使用版权法保护软件用户的自由。
GNU项目的工作方法是:由志愿者组成小团队,按照精心设计的计划生产不同的软件。大约在1990年,该项目已经完成了一个操作系统。只不过它的工具还是运行在专有或非自由内核之上,因此,GNU仍然缺乏自己的版本。
与此同时,在20世纪80年代,加州大学伯克利分校的计算机系统研究小组(CSRG)领导着一个庞大的社区,专门改进Unix,生产伯克利软件发行版(BSD)Unix。这个社区由加州大学伯克利分校、加州大学洛杉矶分校、麻省理工学院、斯坦福大学、卡耐基梅隆大学和其他学校的人组成。还有一些行业成员,特别是AT&T和Bolt, Beranek, and Newman,他们也是生产第一批互联网协议的公司。这些项目主要由美国政府通过DARPA提供的研发资金资助。
随着时间的推移,BSD版Unix中来自AT&T Unix的代码越来越少,而由其贡献者生产的代码越来越多。最初的AT&T代码被Unix许可所覆盖,但并非所有的代码都被新代码所覆盖。1989年,未被Unix许可证覆盖的代码在BSD许可证下作为Networking Release 1(Net/1)提供,这是免费的。Net/1仍然缺乏一些模块,无法成为一个完整的、可运行的操作系统。当时,几家公司正在使用BSD 版Unix(包括Unix许可的代码)作为他们的操作系统的基础,并且其中一些公司正在为BSD贡献特定硬件的端口、新的应用程序和错误修复。经由CSRG协调,将所有这些纳入了BSD代码库。
20世纪80年代末,另一个引人注目的项目是X视窗系统。这是一个与平台无关的图形系统,其中包含一个协议,使应用程序能够使用图形终端,甚至是远程使用。X Window于1986年在MIT许可下发布,该许可也是免费的,在许多方面与BSD许可相似。
从20世纪70年代到80年代初,出现了另一个生产软件的开发者社区:互联网(起初是Arpanet)社区。自70年代初以来,它一直在协助征求意见稿(RFC)(标准规范),作为任何人都可以访问的公开文件。这些协议得到了参考应用程序的补充,这些应用程序很容易移植到制造商的系统上。
20世纪80年代,开发互联网协议和应用程序的社区与Unix BSD小组密切联系,因为BSD Unix是通常的开发目标。后来,随着互联网在大学中的普及,其工具和协议成为支持自由软件项目的社区发展的基础。在一个通过电话和邮件进行远程协调的时代,自由软件社区已经通过电子邮件列表进行交流,并通过FTP或其穷人版本--Unix-to-Unix拷贝网络(UUCPnet)以电子方式共享软件。
这也是测试自由软件可持续发展模式的时期。这些开源项目很快就变成了由志愿者与专职人员合作的项目。一开始,专职开发者主要来自大学,比如CSRG的团队和其他BSD Unix的贡献者。一般情况下,他们的资金来自研发机构,特别是DARPA。公司参与的方式主要有两种:直接资助自由及开源软件项目,或者聘请专职人员为自由及开源软件项目工作。
由公司资助的项目最突出的例子是麻省理工学院开发的X Window,由DEC和IBM共同资助。这是第一批由专有软件(X Window的几个许可证已经售出)发展成为自由及开源软件(1986年发布)的项目之一。该项目是如此成功,以至于一些公司将其作为其GUI的基础,当时GUI是工作站的一个关键特征。其中一些公司指派了大型团队将X Windows移植到他们的系统中,并为它建立新的应用程序。其中的一些软件又被贡献给了自由及开源软件项目,开始显现出软件共享的好处。对众多供应商来说,X Window都非常重要,于是他们决定成立一个正式的中立机构来推动其发展。于是,他们于1988年发起成立了MIT X联盟。随着互联网在大学中的普及,它的工具和协议成为支持自由软件的社区发展的基础。
当时由公司派专职人员参与自由及开源软件项目的著名案例是Cygnus Support。它成立于1989年,目的是在商业上维持一些GNU工具。公司专职人员曾经领导了其中一些工具的开发,如GNU调试器、汇编器和链接器,所有这些都是GNU项目和整个自由及开源软件社区的基础。此举不仅为项目带来稳定收入和资源,而且有助于将专业知识融入项目中,有助于自由软件组件维护、获利和成长。Cygnus公司直接参与了自由及开源软件项目的生产和维护,这一事实表明这种努力对许多公司来说是多么有趣。这些组织在生产环境中使用GNU工具,而且他们准备为支持和新功能向Cygnus付费。
另一个以自由及开源软件为中心的商业模式的杰出案例是阿拉丁软件,虽然起因有所不同。自1986年以来,Aladdin开发了Ghostscript,这是一个PostScript解释器,并在GNU项目下作为GNU Ghostscript发布。但该公司采用了双重许可模式,在非自由软件的许可下维护自己的版本——Aladdin Ghostscript。这种模式是双重许可的积极探索,即如何防止其竞争对手使用该软件的最新功能,同时维持一个自由及开源软件版本,以维持该程序的流行。
在20世纪80年代末,自由软件社区还很复杂,人们和公司以共享软件这种间接或直接的方式进行合作。他们正在探索几种可持续发展的模式:公共资金(通过研发拨款)、通过非营利组织收集捐款、公司的直接资助、公司通过中立联盟直接参与、纯粹的志愿者工作,以及它们的组合。他们建立了一个法律基础设施,其核心是今天仍在使用的两个自由软件许可证系列:基于GPL原则的许可证和基于BSD和MIT原则的许可证。他们有一个坚实的哲学基础,在社区中广为人知的几个文件中得到正式确认。他们正在生产个人和公司感兴趣的软件,无论是出于道德还是商业的原因。自由软件成为一种战略工具,可以用来建立中立的联盟,在那里竞争者也可以进行合作。
公司也在学习如何从FOSS的开发中获益。一些小公司正在尝试纯自由软件的商业模式。其他公司将自由软件作为一种可行的模式。自由及开源软件作为一种战略工具出现了,它可以被用来建立中立的联盟,在那里竞争者可以合作生产他们公用的软件。一些公司在构建一个复杂系统时,大部分可以利用现有的自由及开源软件组件,只需创建一小部分模块(以很小的成本)。
这时,自由及开源软件开发社区使用了数字通信手段(邮件列表、Usenet组、FTP服务器和UUCPnet),使他们能够在大型、地理分布的网络中工作。他们探索的组织机制在某些情况下包括指定的人物(如GNU的”维护者”,他们作为其开发社区的领导者)和事实上的协调员(如CSRG人员在某种程度上是BSD的协调员)。管理项目的正式组织已经很普遍了:GNU从一开始就是这样设想的,BSD有指导委员会,X Window组织了MIT X联盟,等等。
20世纪90年代初。Linux、*BSD和公司
20世纪90年代初,经过十年的发展,第一个完全由自由及开源软件组件组成的操作系统面世:*BSD和Linux。在BSD Unix阵营中,CSRG重新构建了大部分缺失的组件,在BSD许可下生成了一个完整的类Unix系统。这是以Net/2的形式发布的。1992年,386BSD发布,实现了Net/2所需要的小部分组件,从而产生了第一个完全的自由及开源软件系统。后来,又延展出NetBSD、FreeBSD和OpenBSD等。
与此同时,Linus Torvalds于1991年宣布了他编写的操作系统内核项目,这个项目随后被命名为Linux。该项目很快得到了其他开发者的青睐和贡献。1994年,Torvalds发布了Linux 1.0,这是第一个“稳定”版本。尽管该软件在1993年就已经可以使用了,有些甚至是在1992年就开始使用了。包括GNU和BSD在内的许多工具被移植到上面,有多个组织开始生产基于Linux的发行版(如Slackware、Debian或Red Hat)。
大约是在1993年,*BSD和基于Linux的发行版是完全可用的、完整的操作系统,可以安装在PC上。随着时间的推移,Linux成为最受欢迎的,在20世纪90年代的大部分时间里,许多年轻的开发者,包括许多大学的学生,都接触到了它。大大小小的新自由软件项目在许多地方和领域启动,参与自由软件开发和维护的人数不断增加。
正是在90年代中期,互联网从学术殿堂走向了普通大众,网络成为获取信息的主要机制,后来又成为数字服务。自由及开源软件组件对互联网基础设施的重要性是显而易见的,它是这项技术扩展的推动者之一。大多数互联网协议的实现都是自由及开源软件,或者来自自由及开源软件项目。许多最受欢迎的服务都是以自由及开源软件实现的,如Sendmail和NCSA HTTPd(以及后来的Apache),它们分别在电子邮件和HTTP服务器中占主导地位。
一种新的与自由及和开源软件有关的公司出现了,它与基于Linux的发行版有联系。事实上,许多主要的基于Linux的发行版都是由公司推广的,如红帽、SuSe、曼德拉克和其他公司。他们都是从推销基于Linux的发行版开始的,然后扩展到提供各种服务,从培训到支持。一般来说,这些服务都是松散地基于他们的发行版,并在某种程度上基于他们的品牌。其他公司,如VA Linux,也加入了这个不断增长的基于自由及和开源软件的解决方案市场。
1990年代末和2000年代:基金会和公司的时代
1998年,网景公司宣布将其旗舰应用程序网景浏览器作为自由及开源软件发布。Netscape Communicator是主导市场的两个网络浏览器之一(另一个是微软的Internet Explorer),而Netscape是新的互联网时代最杰出的公司之一。正因为如此,该公告受到了媒体的广泛关注。在某种程度上,这一事件标志着自由及开源软件正在成为公司的核心,他们可以把它作为其战略的一部分。为了准备这次发布活动,开源软件这个词被创造出来作为自由软件的替代,开源倡议也随之成立。
大约在同一时间,大型自由软件社区出现了。GNU项目包括越来越多的工具和成员,人们也纷纷加入自由软件基金会。一些新的开源项目启动了,如Debian。1993年,Debian开源社区成立,任务是维护基于Debian Linux的发行版,很快就有数十个、数百个开发者加入。Debian是一个由个人组成的社区,公司并没有参与其中。在这方面,它遵循了GNU的传统,尽管从一开始,它的管理规则就很明确,导致了一个更加横向发展的组织。
另一个开发者社区是Apache,它首先是围绕着Apache HTTP服务器建立的,然后用其他自由及开源的组件来扩展。1993年,该项目作为Apache集团诞生,该集团在1999年扩大并形成了Apache软件基金会。这也是一个由个人组成的社区,尽管它的许多成员属于公司雇员。然而,Apache试图对公司保持中立,遵循一种类似于Debian的精神。
Linux内核开发者团体是20世纪90年代所形成的主要软件开发社区之一。该项目一开始就由Torvalds指导,并有一些正式的管理规则。虽然不像公司那样,但他们雇用了许多Linux开发者,明确了相互之间在系统开发中的利益关系。2000年,Linux基金会成立,开始以组织的形式管理开发者、贡献和项目,但技术决策仍保持相对独立性。后来,Linux基金会将这一模式扩展到许多其他项目,并将其纳入旗下。
1996年,Kool桌面环境(KDE)诞生,这是一个自由及开源的桌面应用程序。1997年,具有类似功能的GNU网络对象模型环境(GNOME)宣布启用,这也是对KDE使用一些非自由软件组件的反应。很快,数以百计的开发者加入了这两个组织。也出现了为开源软件提供服务的专业公司,他们雇用开发人员为这些项目工作,共同推动某些应用程序的发展。如SuSe和Red Hat:他们在Linux发行版桌面环境基础上,逐步完善和改进它。也资助孵化出一些项目,如Helix Code和Eazel,诞生出开发特定应用程序的小型初创公司。
为支持这些项目发展,GNOME和KDE分别建立了非营利组织,而且找到了让公司直接参与的方法。KDE非营利组织成立于1997年,而GNOME基金会成立于2000年。虽然他们的运行机制不同,但都吸引贡献了大量资源的公司参与项目决策。这些公司雇佣开发者贡献代码以获得影响力,并对这些项目产生了真正的影响。GNOME和KDE探索出了公司参与开源社区的道路,它从MIT X联盟开始。
网景公司推出了Mozilla,这是一个浏览器的开源版本。但是,网景公司的新主人AOL(时代华纳子公司)对此却不敢兴趣。2003年,Mozilla基金会成立,从法律上管理该项目,以独立于AOL。从那时起,Mozilla基金会开始寻找收入来源。谷歌等对开源感兴趣的公司为其提供了资助(如火狐项目)。有了这些收入,Mozilla雇用了一支庞大的开发人员队伍,它还建立了一个庞大的志愿者社区。
2001年,IBM发起Eclipse项目,并得到一些软件公司的支持,这是一个生产自由及开源软件的集成开发环境和工具,然后扩展到许多其他领域。2004年,Eclipse基金会作为一个中立的非盈利机构成立,负责管理该项目。它是由提供财政资源的公司和Eclipse开发者组成的,他们共同参与战略决策。
这些软件开发社区和非营利组织已经探索出开发者和拥有利益的公司之间的生产协作关系。从以开发者为中心的Debian和Apache到有大量公司直接参与的项目(KDE、GNOME和Eclipse),从由公司发起的项目(Mozilla和Eclipse)到个人开发者发起的项目(前面提到的其他项目),从那些有明确和详细的管理和参与规则的项目(如Apache、Debian、KDE、GNOME和Eclipse)到那些更基于实践和一些个人魅力的项目(GNU和Linux),他们都产生了感兴趣的自由软件组件。它们均被证明是可持续的,对开发者(无论是来自公司雇员还是社区志愿者)保持着吸引力,并设计出高效的组织管理方式来运营富有成效的自由软件社区。目前自由及开源软件的发展状况就是这一历史的结果。这里有进步,也有矛盾。有合作,但也有模式、目标和机制之间的激烈竞争。
今天的自由及开源软件是这一切的产物。
Jesus M. Gonzalez-Barahona is with the Universidad Rey Juan Carlos, Fuenlabrada, 28943, Spain. Contact him at
jesus.gonzalez.barahona@urjc.es.
翻译 | 张国锋