讲述开源的起源,需要从软件和计算机的起源谈起。1949年5月6日,世界第一台完整的冯•诺依曼结构计算机在剑桥大学开始运行,因此这一天后被认为是现代计算机的诞生日。1951年,IBM开始决定开发商用电脑,聘请冯•诺依曼担任公司的科学顾问,1952年12月研制出IBM第一台存储程序计算机IBM701,这是通常意义上的电脑。此事件成为IT发展史上的一个重要里程碑。
自计算机诞生至70年代中后期,计算机主要形式是大型机,软件并不作为单独产品提供,这一时期软件的传播依附于硬件的绑定附送。在这段时间Unix源码曾向公众开放,因此开源的起源与Unix的发展息息相关。
1969年AT&T贝尔实验室研究员Ken Thompson开始编写Unix, Unix是1970年定名的,因此1970年定为Unix元年(Unix名字的由来:Uniplexed Information and Computing System,即UNICS=Unix)。
1969-1977年Unix相继推出V1-V6版本,这段时间的Unix向社会开放源代码(早于1998年在加州Palo Alto会议上首先提出开源这个概念出现之前),此时的Unix叫“前Unix”。从Unix的发展历史看:
Unix可分为“前Unix”和“后Unix”两个不同的发展阶段。“前Unix”,1969-1976年,这时Unix或叫AT&T-Unix,向社会开放源代码,是开源的;“后Unix”,1977年至今,1977年AT&T公司将Unix私有化,这时的Unix(或AT&T-Unix)是闭源的,即其源代码是不开放的。
自1977年始(即自AT&T-Unix实行私有化开始),Unix开始分支,分为AT&T-Unix和BSD-Unix,前者是闭源的,后者是开源的;1990年美国法院将Unix的商标权判给AT&T公司,从此AT&T-Unix商业版成为Unix主流,而由加州大学伯克利分校推出的BSD-Unix版本变成Unix的非主流版本,即此时伯克利推出不包括任何AT&T-Unix源代码的BSD版本(自4.4BSD-Unix版本开始);此时Unix区分为Unix(即AT&T-Unix)和BSD(即BSD-Unix,从此时开始只叫BSD,不再叫BSD-Unix)两种,前者是私有、闭源、商业化的,后者是共享、开源的;目前流行的BSD操作系统主要有6个,其中386BSD、FreeBSD、NetBSD、OpenBSD是开源的,BSD/OS和macOS是商业产品。
自1997-1983年后各家Unix商业公司先后推出各种Unix变种,如SUNOS、IBM AIX、HP-UX、DEC Ultrix、Windows与SCO Xenix、Sun Solaris等,这些Unix变种均基于“前Unix”(开源)派生发展的,而Unix变种大多是闭源的商业版。
1987年出于教学目的,Andrew S. Tanenbaum编写了一个基于“前Unix”(开源)和4.3BSD(开源)的开放源代码操作系统Minix,Linux是基于Minix发展起来的(1991年Linus Torvalds开发并发布了开放源代码操作系统Linux0.01,Richard Stallman也称之为GNU Linux)。苹果公司的iOS源自BSD及“前Unix”(BSD也源自“前Unix”),但iOS是闭源的。
1971年,Intel 4004微处理器的出现,1974年第一台个人电脑Altair8800的上市,以及1976年乔布斯的第一代苹果电脑上市,计算机发展已经开始进入PC时代,这一时期内软件业态发生了大幅变化。早期的软件不仅随硬件免费发售,且向当时的政府科研机构和高校等专业用户提供源代码,以便用户根据自己的需求来进行修改,但随着用户和使用场景的快速增加,硬件附带的软件无法满足用户日益扩大的需求,一些专业开发通用软件的公司出现了,他们需要通过软件来收费,且不愿继续向用户提供软件源代码,微软公司就是其中的典型代表。
在第一代软件公司的推动下,美国在1974年到1980年之间逐步通过一系列法律,确定了用著作权法保护软件的路径。并且在1981年,美国最高院通过一个判例确定了软件也可以受专利法保护。到1983年,几乎所有的软件公司都不再对外开放软件源代码。
然而,软件这种从免费且开源到收费且闭源的转变,令当时许多软件开发者感到愤怒和不满,其中最著名的就是Richard Stallman,他随即发起了自由软件运动,在全世界引起巨大反响。
Richard秉成所有软件都应该对所有人公开的共享哲学。对上述闭源事件感到不满的他认为解决问题的手段就是编写一个完全自由的且与Unix(当时最流行的闭源操作系统)兼容的操作系统,并将其命名为GNU(GNU’s not Unix的递归缩写)。于是Richard于1983年辞职并投入到GNU操作系统的开发当中,并于1985年在美国波士顿成立了自由软件基金会(Free Software Foundation,FSF),发表了《GNU宣言》。1989年,代表其哲学的GPL(General Pubulic License)许可证第一版发布。
该许可证是使用最广泛的自由软件许可证,其特征为:适用该许可证的代码的所有衍生代码都必须开源并且基于相同的许可证发布,具有鲜明的著佐权(copyleft)性质。此外,Richard还牵头开发了GCC编译器 、GNU Emacs文字编辑器等自由软件,吸引越来越多的Unix开发者转向自GNU软件,可以说,GNU、Linux、iOS、Open Source均源自“前Unix”。
显然,以GNU Linux为代表的自由软件的发展壮大对闭源软件公司带来了巨大冲击,1998年微软公司在法国发布了反对Linux的臭名昭著的公开信,这也是微软“FUD”战略的开端。与此同时,经过多年的发展自由软件已经逐渐暴露出难以满足大生产、大流通的需求特点。大生产是指开发、复制、修改、发行、服务、维护、升级等各环节的规模化。大流通是指缺乏商业模式的市场流通的自由软件无法形成商业规模。没有大生产和大流通就不能形成大发展,自由软件的发展瓶颈问题亟待解决。
1998年,开放源码(Open Source)应运而生,开放源码首先是在1998年2月3日在美国加州Palo Alto 召开的一次会议上提出来的,随即著名黑客Bruce Perens为其起草了“自由软件指导方针”。1998年4月7日 由18位自由软件运动领袖召开的“自由软件高层会议”通过了传播开源(Open Source)的必要性。事实上,开源软件是对自由软件的继承和发扬,没有自由软件就没有开源软件,两者都很重要,两者都很成功,都 推动了软件产业的发展,因此许多国家包括中国常常用Free Libre Open Source Software (FLOSS) 来表示两位一体的概念。
如果将开源软件和自由软件对立起来可能其效果会适得其反的。如果从开源软件的世界中删除了自由软件,就没有Linux,没有了GCC,没有了Gnome,没有了Blender等等。自由软件和开源软件均支持自由传播,开源软件的自由传播是有条件的,即 遵循不同开源许可证的开源软件具有不同的自由度,而自由软件具有最大的自由度。开源软件和自由 软件也是有差别的,主要表现在相对于自由软件开源软件更适于大规模的生产和商业流通的大发展 的需要,商业模式更适用于开源软件。