这是针对英文原版页面的中文翻译。

GPLv3 快速指导

[GPLv3 标识]

[本文还有 PDFreStructuredText 格式。]


经过一年半的公开咨询、数以千计的评论和四个草案,GNU 通用公共许可证版本 3(GPLv3)终于在 2007 年 6 月 29 日最后发布。虽然从第一个草案开始,该许可证就带来大量的讨论,但是对其给开发者带来的好处并没有太多人论及。这个指导就是为了补足这块。我们将简要地回顾一下自由软件、copyleft 和 GPL 的目标。然后,我们审阅此版许可证的主要修改,看看它们如何推进这些目标并给开发者带来什么好处。

GPL 的基础

软件不应限制其用户。每个用户都应该有四项基本自由:

  • 有自由按自己的意愿使用软件,
  • 有自由按自己的需要修改软件,
  • 有自由把软件分享给友邻,以及
  • 有自由分享自己对软件的修改。

当一个程序为其用户提供所有这些自由时,我们称之为 自由软件

软件的开发者可以使用 GNU GPL 发布自己的软件。当他们这样做了之后,该软件就是自由软件,并且一直是自由软件,无论是谁修改或发布该软件。我们称之为 copyleft:该软件有版权,但是该版权不是象专有软件那样用来限制用户,我们用它来保证所有用户的自由。

我们会升级 GPL 以免法律或技术的发展对其造成逐步的削弱。最新版许可证保护用户不再受三个新到威胁的侵害:

  • Tivoization:有些公司制造了许多不同的运行 GPL 软件的设备,然后他们操纵这些硬件使之可以运行他们的软件,而你的却不行。如果一个设备可以运行任何软件,那么它是通用计算机,而其所有者应该控制计算机的所作所为。如果一个设备不让你这么做,我们就称之为 tivoization。
  • 禁止自由软件的法律:诸如数字千禧版权法案(Digital Millennium Copyright Act)和欧盟版权命令(European Union Copyright Directive)等法律使编写或分享破解 DRM(数字限制管理;参看 下文)的软件非法。这些法律不应当干扰 GPL 赋予你的权利。
  • 歧视性专利交易:微软最近开始宣传他们不会因为专利侵害而控告自由软件用户——只要你是从向微软付费的供应商那里获得的软件。最终,微软试图为使用自由软件收取版税,这个干预了用户的自由。任何公司都不应该这么做。

版本 3 也做一些改进,使之更容易理解和使用。但是即使加上这些改进,GPLv3 也不是一个全新许可证;它是以前版本的演进。虽然文本改了很多,但是大多数只是澄清 GPLv2 的内容。考虑到这些之后,我们来审阅一下 GPLv3 的主要改进,探讨一下它们如何为用户和开发者改善了许可证。

中立化禁止自由软件的法律——但不是禁止DRM

你也许熟悉和 DVD 等多媒体有关的数字限制管理(DRM)。你也许还熟悉与之相关的法律,比如数字千禧版权法案和欧盟版权命令,它们使自己编写软件跳过 DRM 限制变得非法。没有人能够阻止你编写任何软件,GPLv3 保护你的权利。

你可以使用 GPL 代码来实现 DRM。不过,如果有人编写了受 GPLv3 保护的代码,其第 3 节说这个代码并不构成一个有效的技术 "保护" 措施。这就意味着如果你破解了 DRM,那么你有权发布你的软件,而且你不会受到数字千禧版权法案(DMCA)或类似法律的威胁。

一直以来,GNU GPL 不限制人们用软件做什么;它只是阻止人们限制其他人。

保护你修改的权利

Tivoization 是剥夺用户自由的危险行为:如果计算机不能运行你修改的软件,那么修改的权利就没有意义。GPLv3 通过要求发布者提供安装和运行修改版本的信息或数据来阻止 tivoization。这可以是一些简单的指令,或者包括一些帮助跳过硬件检查的密钥数据和信息。它依赖于硬件设计——但无论你需要的是什么信息,你都应该得到。

这个要求是有范围限制的。发布者还是可以使用密钥,他们只是在你需要修改他们提供的 GPL 软件时被要求公布一个密钥。GNU 工程本身也使用 GnuPG 来证明它放在 FTP 站点的软件是正确的。GPLv3 并不阻止人们使用加密;这个我们想都没想过。它只是要阻止人们剥夺该许可证赋予你的权利——不管他们是通过专利法剥夺、通过技术剥夺,还是通过其他手段剥夺。

针对专利威胁的更强保护

从 GPLv2 发布依赖的 17 年来,软件专利的版图已经发生了很大的变化,自由软件许可证也发展了对应的新策略。GPLv3 也反映了这些改变。无论何时,只要有人输送了自写或修改版的 GPLv3 软件,他们就必须为每个接收者提供他们实际操作需要的、GPL 赋予他们的任何专利许可证。此外,如果有专利授权者想要通过专利诉讼阻止其他用户实现他们的权利,那么她的许可证就会被中止。

这个对于用户和开发者来说,就是他们能够从事 GPLv3 的工作而无需担心有孤注一掷的发行者想要通过专利侵权来告他们。有了这些改变,GPLv3 给用户提供了比其他自由软件许可证更多的对付专利攻击的保护。

澄清许可证兼容性

如果你想把某个代码组合到一个 GPL 项目中,GPLv2 说该代码的许可证不允许有任何 GPLv2 还没有包含的限制。如果是这样,那么我们说该许可证兼容 GPL。

不过,有些许可证的要求其实并不是限制,因为这些要求非常容易满足。例如,有些许可证不允许你使用某些商标。这个并不是一个额外的限制:即使没有这个要求,你也没有获得使用这些商标的授权。你还是不能使用这些商标。我们说这种许可证也兼容 GPLv2。

现在,GPLv3 明确授权每个人都可以使用带有此类要求的代码。这些条款应该可以帮助澄清许可证兼容 GPL 的问题,为什么兼容,以及你可以如何处理兼容 GPL 的代码。

新的兼容许可证

除了澄清已经兼容 GPL 的许可证,GPLv3 还新增一些兼容许可证。Apache 许可证 2.0 就是一个重要的例子。许多伟大的软件是基于该许可证的,而且其社区也很强大。我们希望 GPLv3 的这个改变能够支持自由软件社区之间更多的合作和分享。下面的表格用来帮助讲解不同自由软件许可证之间的一些通用兼容性关系。

这是一个讲解不同自由软件许可证之间的兼容关系的表格。更多细节,请参看 FSF 的许可证列表页面。

从一个许可证指向另一个许可证的箭头表示第一个许可证兼容第二个许可证。这个对从一个许可证指向多个许可证的情况也适用;因此,比如,ISC 许可证兼容 GPLv3。如果某个 GPLv2 程序允许你选择 GPL 的 "任何以后版本",那么 GPLv2 就兼容 GPLv3,使用 GPLv2 的大多数软件都是这样做的。这个图并不详尽(参看 我们的许可证页面 了解兼容 GPLv2 和 GPLv3 的更全面的许可证列表),但是它表达了 GPLv3 兼容 GPLv2 的所有,并更多。

GNU Affero GPL 版本 3 被加了进来。初始 Affero GPL 的设计是用来保证网络应用的用户可以获得源代码。GNU Affero GPL 版本 3 拓宽了这个目标:它可以用于所有网络交互软件,所以它也适用于诸如游戏服务器之类的程序。其增加的条款也更灵活,如果某人要在没有网络接口的程序里使用 AGPL 源代码,那么她只需按照 GPL 的要求提供源代码。通过使这两个许可证兼容,网络交互软件的开发者能够增强 copyleft,同时能够在成熟的 GPL 代码基础之上进行发展。

开发者有更多提供源代码的途径

GPL 的一个基本要求就是当你向用户提供目标代码时,你也必须提供获取源代码的方法。GPLv2 提供了几个方法,而 GPLv3 维持这些方法并做了澄清。它还为你通过网络输送目标代码时提供了给出源代码的新方法。例如,当你在网络或 FTP 服务器上托管目标代码时,你可以简要地向访问者提供如何从第三方服务器获取源代码地指令。感谢这个新的选项,它让众多只对代码做出少许改动的微小发布者更容易达成提供源代码的要求。

新许可证还让大家通过 BitTorrent 输送目标代码更容易。首先,仅在 torrent 下载或播种的人被排除在许可证的输送软件要求之外。其次,发起 torrent 的人可以通过告知其他 torrent 用户源代码在哪个公共网络服务器上的方式提供源代码。

新选项既保持了 GPL 提供源代码的社区标准,也没有让用户获得源代码变得更困难。

发布更少的源代码:新的系统库例外

这两个版本的 GPL 都要求你提供构建软件所必须的全部源代码,包括支持库、编译脚本等等。它们也都对系统库做了区分:你无需提供操作系统相关的某些核心部件的源代码,比如 C 库。

GPLv3 对系统库的定义做了调整,使之包含了操作系统不一定直接带有、但是全体软件用户都合理期待的软件。比如,它现在也包含了象 Python 和 Ruby 等通用编程语言的标准库。

新的定义还澄清了你可以组合 GPL 软件与不兼容 GPL 的系统库,比如 OpenSolaris 的 C 库,并合在一起发布。这大大方便了想为用户提供此类组合的自由软件发布者。

成为一个全球许可证

GPLv2 很多次使用 “发布” 一词——当你和他人分享软件时,你是在发布。但该许可证没有说明发布是什么,因为这个词是从美国版权法里借用过来的。我们原本想法官会到美国版权法里查找这个定义。后来我们发现其他国家的法律也使用这个词,但是意义不同。因此,在这个国家的法官对 GPLv2 的分析可能就会和美国法官不同。

GPLv3 使用了新的术语,“输送”,并提供了定义。“输送” 和我们使用的 “发布,” 意思一样,但是它在许可证里有直接的解释,这样任何地方的人都容易理解我们的意思。整个许可证还有一些小的改动,它们也有助于在全球范围内使用该许可证。

当发生违规时:走向合规的坦途

在 GPLv2,如果你违反任何许可证的要求,你将自动永久失去许可证权利。恢复权利的唯一办法是请求版权持有者。虽然对违规的有力防御有其价值,但是这个政策在有人不经意犯错时就可能导致很多麻烦。请求所有版权持有者正式恢复许可证权利会是代价昂贵的负担:一个典型的 GNU/Linux 发行版会是数千人工作的集合。

GPLv3 为悔过自新提供了缓期执行:如果你违反了许可证,一旦你停止违反,你就立即重新获得许可证权利,除非有版权所有者在 60 天内和你联系。在你收到通知之后,如果你是初犯并且在 30 天内修正了错误,那么你可以恢复权利。否则,你要和与你联系的版权所有者具体问题具体解决,完成之后再恢复权利。

维护 GPL 合规一直是 FSF 合规实验室和世界上其他许可证执法组织的首要任务。这些改变保证了维护合规仍然是执法者的首要任务,并且给予违反者愿意悔过自新的理由。

压轴好戏

这些改变可能对你不如对其他人那么重要。不要紧。项目五花八门,每个都需要许可证里面的不同营养。但是这里的改进大概率会帮到你和你的项目。

整体来看,所有这些升级代表:我们做出了一个更好的 copyleft。它对用户自由的保护更多,但是也会促进更多的自由软件社区合作。升级许可证只是部分工作:为了让人们受益 GPLv3,开发者应该在项目中使用它。使用此新许可证发布你的软件,所有收到软件的人——用户、其他开发者、发布者、甚至是律师——都会受益。我们期待你的下一个发布使用的是 GPLv3。

如果你想要把你的项目升级到 GPLv3,FSF 合规实验室很高兴帮助你。在 gnu.orgfsf.org,你可以找到 使用此许可证的基本指导,以及人们提出的 常见问题的解答。如果你的情况比较复杂,请 联系我们,我们会努力帮助你进行升级。在一起,我们保护所有用户的自由。