详细介绍GPL协议
2009-12-03 17:09:09 阿炯

在自由软件所使用的各种许可证之中,最为人们注意的也许是通用性公开许可证(General Public License,简称GPL)。

GPL同其它的自由软件许可证一样,许可社会公众享有:运行、复制软件的自由,发行传播软件的自由,获得软件源码的自由,改进软件并将自己作出的改进版本向社会发行传播的自由。

GPL由斯托曼撰写,用于GNU计划。它以GNU Emacs、GDB、GCC的许可证的早期版本为蓝本。这些许可证都包含有一些GPL的版权思想,但仅只针对特定程序。斯托曼的目标就是创造出一种四海之内皆可使用的许可证,这样就能为许多源代码共享计划带来福音。GPL版本1就这样,在1989年1月诞生。

到1990年时,因为一些共享库而出现了对比GPL更宽松的许可证的需求。所以当GPL版本2在1991年6月发布时,另一许可证——库通用许可证(Library General Public License,简称LGPL)也随之发布,并记作“版本2”以示对GPL的补充。版本号在LGPL版本2.1发布时不再相同,而LGPL也被重命名为GNU宽通用公共许可证(Lesser General Public License)以体现GNU哲学观。

GPL还规定:只要这种修改文本在整体上或者其某个部分来源于遵循GPL的程序,该修改文本的整体就必须按照GPL流通,不仅该修改文本的源码必须向社会公开,而且对于这种修改文本的流通不准许附加修改者自己作出的限制。因此,一项遵循GPL流通的程序不能同非自由的软件合并。GPL所表达的这种流通规则称为copyleft,表示与copyright(版权)的概念“相左”。

GPL协议最主要的几个原则

1、确保软件自始至终都以开放源代码形式发布,保护开发成果不被窃取用作商业发售。任何一套软 件,只要其中使用了受 GPL 协议保护的第三方软件的源程序,并向非开发人员发布时,软件本身也就自动成为受 GPL 保护并且约束的实体。也就是说,此时它必须开放源代码。

2、GPL 大致就是一个左侧版权(Copyleft,或译为“反版权”、“版权属左”、“版权所无”、“版责”等)的体现。你可以去掉所有原作的版权信息,只要你保持开源,并且随源代码、二进制版附上 GPL 的许可证就行,让后人可以很明确地得知此软件的授权信息。GPL 精髓就是,只要使软件在完整开源 的情况下,尽可能使使用者得到自由发挥的空间,使软件得到更快更好的发展。

3、无论软件以何种形式发布,都必须同时附上源代码。例如在 Web 上提供下载,就必须在二进制版本(如果有的话)下载的同一个页面,清楚地提供源代码下载的链接。如果以光盘形式发布,就必须同时附上源文件的光盘。

4、开发或维护遵循 GPL 协议开发的软件的公司或个人,可以对使用者收取一定的服务费用。但还是一句老话——必须无偿提供软件的完整源代码,不得将源代码与服务做捆绑或任何变相捆绑销售。

已经发行的版本

GPLv1
GPL版本1,即最初的版本,发布于1989年一月,其目的是防止那些阻碍自由软件的行为,而这些阻碍软件开源的行为主要有两种(一种是软件发布者只发布可执行的二进制代码而不发布具体源代码,一种是软件发布者在软件许可加入限制性条款)。因此按照GPLv1,如果发布了可执行的二进制代码,就必须同时发布可读的源代码,并且在发布任何基于GPL许可的软件时,不能添加任何限制性的条款。

GPLv2
理查德·斯托曼在GPLv2中所做的最大的改动就是增加了“自由还是死亡”("Liberty or Death")这章条款,即第七章 liberty-or-death Presentation。这章中申明道,如果哪个人在发布源于GPL的软件的时候,同时添加强制的条款,以在一定程度上保障和尊重其它一些人的自由和权益(也就是说在一些国家里,人们只能以二进制代码的形式发布软件,以保护开发软件者的版权),那么他将根本无权发布该软件。

到了1990年,人们普遍认为一个限制性弱的许可证对于自由软件的发展是有战略意义上的好处的;因此,当GPL的第二个版本(GPLv2)在1991年6月发布时,与此同时第二个许可证程序库GNU通用公共许可证(LGPL,the Lesser General Public License)也被发布出来并且一开始就将其版本定为第2版本以表示其和GPLv2的互补性。这个版本一直延续到1999年,并分支出一个派生的LGPL版本号为2.1,并将其重命名为轻量级通用公共许可证(又称宽通用公共许可证)(Lesser General Public License)以反映其在整个GNU哲学中的位置。

GPLv3

到2005年,GPL版本3正由斯托曼起草,由伊本·莫格林和软件自由法律中心(Software Freedom Law Center)提供法律咨询。

斯托曼在2006年2月25日自由及开源软件开发者欧洲会议的演讲上说:

在所有的改动中,最重要的四个是:
 解决软件专利问题;
 与其他许可证的兼容性;
 源代码分区和组成的定义;
 解决数位版权管理(DRM) 问题。

2006年,自由软件基金会针对GPL的可能的修改开始了12个月的公共咨询。在公众咨询过程中,有962条评论被提交给第一稿草稿。最终总共有2,636条评论被提交。

2007年3月28日正式启用。同年6月29日,自由软件基金会正式发布了GPL第3版。

授予的权利

此GPL的条款和条件适用于任何收到GPL下的作品的人(即“许可证接受人”)。任何接受这些条款和条件的许可证接受人都有修改、复制、再发行作品或作品的演绎版本的授权。许可证接受人可以对此项服务收取费用,反之亦然。这一点是GPL与其他禁止商业用途的自由软件许可证最大的不同。Stallman认为自由软件不应限制其商业用途,同时GPL清楚地说明了这一点。

但GPL又规定发行者不能限制GPL授予的权利。例如,这禁止对软件在单纯沉默(消极默示)式协议或合同下的发行。GPL下的发行者同时也同意在软件中使用的专利可以在其它GPL软件中使用。

GPLv2 与 GPLv3

GPLv2和GPLv3是GNU公共许可证(GPL)的版本,GPL是免费软件的著名许可证。自由软件基金会(FSF)也很喜欢GPL,两种许可证的主要作者是Richard Stallman。

GPL的主要目的是促进出于任何目的和任何用户需求的软件的免费可用性和使用。任何使用免费软件的用户都可以更改该软件并与朋友和同事共享。

它是最重要且使用最广泛的开源许可证,其中大约60%的开源软件都使用该许可证,例如Linux和Busybox。它有一个称为“copyleft”的子句,该子句强制所有创建和分发修改版本的用户都必须遵守GPL的修订,并披露修改版本的来源。Copyleft确保修改后的版本在GPL之下,并公开其源代码。

GPL是所有后续GPL版本(GPLv2和GPLv3)的模板。GPLv2是GPLv3的前身,它使GPLv3成为最新版本。 GPLv2于1991年推出,而GPLv3于2007年推出。

由于GPLv2是GPLv3的较旧版本,因此许可证之间存在差异。GPLv2具有GPLv3没有的库排除项。

两种版本之间也存在显着差异:新的GPLv3的长度是GPLv2的两倍,并且涉及以前版本中的改进和澄清的主题。这些措施包括专利赔偿,内部化和许可侵权的补救措施。

GPLv3代码的另一个特征是它试图在专利许可方面提供更多的清晰度。它试图弄清分配和衍生工作的含义,撤销立即终止许可条款以支持许可机会,以及允许用户从一组固定的替代术语中进行选择以修改标准GPLv3的附加条款。

与GPLv2相比,GPLv3与更多许可证的兼容性更高。新许可证允许用户与许可证本身中没有其他要求的代码进行组合。在许可违规者方面,GPLv3为首次许可违规者提供了额外的固化时间。

总而言之,GPLv2和GPLv3不兼容。最新的许可证具有某些要求,例如前者中不存在的安装信息。将两个许可证中的代码组合在一起将违反GPLv2的第6节。

小结

1、GPLv2和GPLv3都是根据GPL发行的许可证。

2、GPLv3比GPLv2更长,因为它几乎试图涵盖与前一个许可证相同的问题。

3、GPLv3在专利许可方面更为清晰,主要是在许可的措辞上,因为它不能被解释为“太宽泛”。它也不同于GPLv2,也适用于专利保护。

4、GPLv2存在GPLv3试图修复的漏洞。漏洞获得了术语Tivoization,该术语源自数字录像机,该录像机捕获电视节目并将数据保存到内部硬盘驱动器中,以备将来查看。

5、GPLv2的许可证中增加了一个新部分,称为“保护用户的合法权利不受反规避法”。本部分的目的是防止将GPVL3包含在用于执行《数字千年版权法案》(DCMA)的技术或产品中。

6、GPLv1只适用于本软件的衍生物,不包括内嵌在其他程序的一部分;而GPLv2和v3则包括该软件在其中的一部分或全部代码,以及所有衍生物。GPLv1已经不再被广泛使用了。

与以前的许可证相比,GPLv3代码与更多许可证更兼容。BSD社区对GPLv3的观点多为负面:称GPLv3是一个可怕的许可证,它惩罚其他开源软件,因为他们可能不会分享它的“免费”愿景。其不仅伤害了专有软件,也伤害了对自由持不同观点的开源软件。


参考链接:

GNU GENERAL PUBLIC LICENSE

GNU General Public License

详细介绍LGPL协议

详细介绍AGPL协议

该文章最后由 阿炯 于 2023-09-01 17:19:56 更新,目前是第 2 版。