开源软件协议GPL及协议隔离
引言
开源软件目前在软件市场上占有相当大的比重,各种开源社区对于软件的开发和推广起着至关重要的作用。尤其是一些非常重要的基础软件,也都是开源软件,如编译器中的GCC、Clang等。几乎可以说,没有开源软件的话我们将寸步难行。
开源软件一般都会遵循一些开源软件协议,如GPL、BSD、MIT、Apache等。这其中,GNU社区的GPL协议又是其中最广泛使用的,但是由于GPL协议对版权的一些特殊要求,使得在商业软件和商业产品中使用GPL协议的开源软件要十分小心,要避免被它的传染性所误伤。
本文从GNU社区创立的历史原因和创始人的性格开始,详细剖析GPL的概念的起源和发展,分析其Copyleft版权要求的独特性,提出一些避免GPL过度保护的方法和样例,以利于在商业产品中合理合法的使用遵循GPL协议的开源软件。
- 自由软件和GNU
自由软件的源起
提起自由软件,首先要介绍一下自由软件的创始人理查德·马修·斯托曼(Richard Matthew Stallman, RMS),他是个美国人,于1971年(16岁)进入哈佛大学学习,也是在这一年进入麻省理工学院人工智能实验室工作和学习。当时他们的实验室使用DEC的PDP-1小型机,他们在这个机器上开发了一个叫ITS的分时操作系统,他的工作就是开发维护ITS。当时ITS的开发人员学习很有激情,成立了一个软件共享的社区组织,任何人只要想要他们的程序,他们都会无偿的提供,他们非常享受这种开放的学习和工作气氛。
到了上世纪的80年代,DEC公司的PDP-10架构发生了大的变化,ITS不能继续工作,而且人工智能实验室的程序员们也几乎都离开了,因此只能使用DEC公司提供的商用操作系统,但这个操作系统是受商业版权保护的。并且在80年代后,几乎所有新出现的计算机架构上都是类似这种受保护的操作系统。
这使得Stallman极大的不舒服,他感受到了强烈的不自由。他想要改变这个情况。他想重新建立一个自由软件的环境,因此他开始着手建立一个自由软件的社区。
GNU系统
建立一个自由软件环境,首先需要一个操作系统,因为操作系统是最基础的软件。当时最流行的操作系统是UNIX,他想将该系统做成与 Unix 兼容,这样的话它容易被移植,并且 Unix 用户可以容易地转换到它。 他给起了GNU 这个名字,依照黑客的传统,这个名字是递归的「GNU's Not Unix」首字母缩写。[1]
一个操作系统不能只包括一个操作系统内核,它还需要包括像编辑器,编译器,汇编器,shell等许多应用程序。因此,GNU操作系统需要包括很多软件。
因此,完成一个gnu操作系统是一个庞大的工程。因此,开始的时候很多软件尽量使用现有的自由软件来做。
1984年,Stallman从MIT辞职了,为了gnu的项目,他也必须辞职,因为如果他还在MIT的话,他写的软件的版权人将会是MIT,MIT可能将软件变为私有软件。这与他的初衷就是不匹配的。
为了整个系统的逐步开发,Stallman首先需要写出编辑器和编译器,于是Emacs和GCC诞生了。后来FSF(Free Software Foundation)建立后,又开发了Glibc,BASH等一系列享誉软件世界的软件。
1990年,GNU 系统几乎都已经快完成,唯一主要遗漏的部件是操作系统内核。于是gnu决定基于Mach微内核架构开发新操作系统Hurd。
目前GNU 自己的内核 Hurd 仍在开发中,离实用还有一定的距离。因此,现在的 GNU 通常使用 Linux 内核(1991年,Linus Torvalds在GPL条款下发布)。这样的组合即为 GNU/Linux 操作系统。因此不能单独将整个操作系统环境通称为“Linux”。[2]
虽然GNU还没有发布出成熟的操作系统内核,但是其现有的成绩已经可以标榜史册了。
自由软件
