1.7 GNU通用公共许可证和3个版本简介
GNU计划,又称“革奴计划”,是由Richard Stallman在1983年9月27日公开发起的,目标是创建一套完全自由的操作系统。Richard Stallman最早是在net.unix-wizards新闻组上公布该消息的,并附带一份《GNU宣言》等解释为何发起该计划的文章,其中一个理由就是要“重现当年软件界合作互助的团结精神”。GNU是“GNU's Not UNIX”的递归缩写,所表达的意思是开发出一套与UNIX相似而不是UNIX的系统。在读音方面,为避免与gnu(非洲牛羚,发音与“new”相同)这个单词混淆,Stallman宣布GNU应当发音为“Guh-NOO”(/'gnu:/),与“canoe”发音相同,以矫正世界各地对GNU的发音。UNIX是一种广泛使用的商业操作系统名称。由于GNU将要实现UNIX系统的接口标准,所以GNU计划可以分别开发不同的操作系统部件。GNU计划采用了部分当时已经可自由使用的软件,例如TeX排版系统和X Window视窗系统等。不过GNU计划也开发了大批其他的自由软件,这些软件也被移植到其他操作系统平台上,例如Microsoft Windows、BSD家族、Solaris及Mac OS。这都为Linux的诞生提供了环境。为保证GNU软件可以自由地“使用、复制、修改和发布”,所有的GNU软件都包含一份在禁止其他人添加任何限制的情况下,将所有权利授予给任何人的协议条款——GNU通用公共许可证(GNU General Public License,GPL)。这个就是被称为“反版权”(或称著佐权Copyleft)的概念。GNU也针对不同场合,提供GNU宽通用公共许可证(GNU Lesser General Public License,LGPL)与GNU自由文档许可证(GNU Free Documentation License,GFDL)这两种协议条款。1985年,为了向GNU计划提供技术和经济上的援助,Stallman创建了自由软件基金会(Free Software Foundation)。到1990年,GNU计划开发出不少功能强大的软件,如Emacs、gcc,这些工具后来都应用到Linux系统中。1991年,Linus按照GPL条款发布了Linux,这使得Linux很快就获得了专业人士的加入,促进了Linux的快速发展。GNU GPL的精神就是开放、自由,为优秀的程序员提供展现自己才能的平台,也使他们能够编写出自由的、高质量、易理解的软件。
GNU通用公共许可证,通常以GNU GPL称呼或直接称为GPL。GPL给予了计算机程序自由软件的定义,并且使用了所谓的“Copyleft”来确保程序的自由被完善地保留。GPL目前主要有以下3个版本。
1.7.1 GPL v1
GPL版本1,即最初的版本,发布于1989年1月,其目的是防止那些阻碍自由软件的行为,而阻碍软件开源的行为主要有两种:一种是软件发布者只发布可执行的二进制代码,而不发布源代码;一种是软件发布者在软件许可中加入限制性条款。因此按照GPL v1,如果发布了可执行的二进制代码,就必须同时发布可读的源代码,并且在发布任何基于GPL许可的软件时,不能添加任何限制性条款。
1.7.2 GPL v2
Richard Stallman在GPL v2中所做的最大改动就是增加了“自由还是死亡”条款,即第七章“liberty-or-death Presentation”。在这章中声明:如果哪个人在发布基于GPL的软件时,同时添加了强制性条款,以在一定程度上保障和尊重其他一些人的自由和权益(也就是说,在一些国家里,人们只能以二进制代码的形式发布软件,以保护开发软件者的版权),那么他将根本无权发布该软件。到了1990年,人们普遍认为一个限制性弱的许可证对于自由软件的发展是有战略意义的,因此当GPL的第2个版本(GPL v2)在1991年6月发布时,第2个许可证程序库GNU通用公共许可证(the Library General Public License,LGPL)也被同时发布出来,并且一开始就将其版本定为第2版,以表示其和GPL v2的互补性。这个版本一直延续到1999年,并分支出一个派生的LGPL,版本号为2.1,并将其重命名为轻量级通用公共许可证,又称宽通用公共许可证(Lesser General Public License),以反映其在整个GNU哲学中的位置。
1.7.3 GPL v3
2005年,GPL版本3由Richard Stallman起草,由伊本·莫格林和软件自由法律中心(Software Freedom Law Center)提供法律咨询,2007年3月28日正式启用。Richard Stallman在2006年2月25日的自由及开源软件开发者欧洲会议的演讲上说,在GPL所有的改动中,最重要的包括以下4点。
- 解决软件专利问题。
- 与其他许可证的兼容性。
- 源代码分割和组成的定义。
- 解决数字版权(DRM)管理问题。
DRM是Digital Rights Management(数字版权管理)的缩写,DRM指的是出版者用来控制被保护对象的使用权的一些技术,这些技术保护的有数字化内容(如软件、音乐、电影)及硬件,处理数字化产品的某个实例的使用限制。本术语容易和版权保护混淆。版权保护指的是应用在消费电子产品的数字化媒体内容上的技术,版权保护技术使用以后可以控制和限制这些数字化媒体内容的使用权。