1.1.2 什么是开源软件

谈到开源软件,就不得不从自由软件(free software)说起。开源软件的发展史有三个重要的时间点,即1970年、1985年和1991年,分别对应UNIX、GNU和Linux的发展。

1. UNIX

最初用于科学计算的计算机和我们今天看到的计算机有很大的区别,当时需要一次性地把指令、数据输入计算机中,然后等待处理结果,这种计算机在每个时刻只能专注处理一件事情。20世纪60年代,贝尔实验室、麻省理工学院和美国通用电气公司为了解决实时计算问题,合作开发了一个多任务、多用户的操作系统Multics,为UNIX操作系统的诞生创造了条件。20世纪70年代,UNIX相继推出V1~V6版本,并向社会开放源代码。

贝尔实验室的母公司AT&T意识到UNIX的商业价值后,不再将UNIX源码授权给学术机构。1977年开始进入“后UNIX”时代,UNIX演化为UNIX(闭源,即AT&T UNIX)和BSD(开源,即BSD UNIX)。想要获取UNIX的源代码,需要与AT&T达成协议才能获得许可,AIX、Solaris、HP-UX、IRIX、OSF、Ultrix等知名商业UNIX都是由AT&T授权的UNIX System V发展而来的。而另外一个分支BSD也有众多衍生版,主流的开源BSD操作系统有386BSD、FreeBSD、NetBSD、OpenBSD,苹果公司的Mac OS和iOS均是BSD衍生产品,采用了BSD的内核。

2. GNU

1984年,麻省理工学院的研究员Richard Stallman提出了自由软件的概念,并于1985年10月成立了自由软件基金会(Free Software Foundation,FSF)。如果一个软件提供了以下4项自由,它就是自由软件:使用者可以自由地运行该软件;使用者有研究和修改该软件的自由;使用者有分发副本使其他人共享该软件的自由;使用者有改进程序使他人受益的自由。Richard接下来开始实施GNU计划,以挑战UNIX的封闭性,GNU的设计类似UNIX,但它不包含享有著作权的UNIX代码。

与GNU的发展模式不同,BSD中原本就存在大量的UNIX代码,所以BSD在初期发展非常迅猛,但是这也造成了在20世纪90年代初UNIX系统实验室(UNIX System Laboratories,USL)和加州大学伯克利分校之间有关BSD中UNIX专有代码的诉讼,虽然这一诉讼最后由于USL被Novell收购,在Novell CEO的主导下达成和解,但是也在一定程度上延误了BSD的发展速度。

自由软件在20世纪80年代虽然得到了发展,但主要还是围绕着破除UNIX操作系统上的垄断。《大教堂与集市》的作者Eric Steven Raymond受到网景(Netscape)公司的启示,认为可以将自由软件引入商业世界中。但自由软件容易令人联想到免费软件,在商业上很难被接受。Eric等人引入了开源软件(open source software)这一新的概念,并获得了成功。1998年2月,旨在推广开源软件的开放源代码促进会(Open Source Initiative,OSI)在美国加州成立。

自由软件与开源软件有时被合称为自由开源软件(Free and Open Source Software,FOSS)。这虽然并不严谨,但是可以粗略地认为自由软件适用的是著佐权(copyleft)许可证,而除此之外,开源软件还可以适用宽松许可证。

3. Linux

GNU项目一直想打破UNIX的垄断,开发了大量类UNIX OS的程序,但是始终缺少一个能够有效运作的UNIX内核。使用BSD不但仍需获得AT&T的许可,而且用户不得随意修改并重新发布BSD中AT&T拥有产权的代码部分。对GNU项目所开发的类UNIX OS来说,只差一个内核,就可以成为真正意义上的自由软件。

1991年,芬兰赫尔辛基大学的学生Linus Torvalds在学习中接触到一款小型的类UNIX的OS内核——Minix。Minix的开发者是荷兰大学的一位教授,他为了教学将Minix连同源码完全开放。数月后,Torvalds开发出一个UNIX内核“雏形”,可以编译并运行各种GNU程序。为求得其他程序员的帮助,Torvalds在网上公布了系统的源码并且一呼百应,建立起第一个以开源社区方式开发的操作系统——Linux。

Linux在发展过程中同样受到了来自闭源世界的诉讼,并且时间更持久。2003年3月,SCO公司控告IBM非法将MONTEREY项目中的UNIX代码贡献到Linux发行版中,这场官司在2021年4月落下帷幕,以1425万美元达成和解。可以说,开源软件从诞生的第一天起,既备受关注,又充满挑战,但是随着时间的推移,它已经成为越来越主流的基础软件发展模式。开源不仅存在于软件领域,在硬件领域有开源嵌入式系统、开源呼吸机,在专利领域有特斯拉的开源专利,在指令方面有RISC-V开源指令集,下一步还会出现开源算法,随着云计算的普及和世界格局的变化,人们对开源模式的接受度上升到了一个新的高度。