GPLv3 快速指南

 [GPLv3 Logo]

[本文还提供 PDFreStructuredText 格式。]


经过一年半的公开咨询、数千条评论和四稿之后,GNU 通用公共许可证(GPLv3)的第 3 版终于在 2007 年 6 月 29 日发布。虽然自第一稿出现以来,关于该许可证的讨论很多,但很少有人谈论它为开发者带来的好处。我们发布本指南是为了弥补这一空白。我们将从简要回顾自由软件、Copyleft 和 GPL 的目标开始。然后,我们将回顾许可证中的主要变更,以了解它们如何推进这些目标并使开发者受益。

GPL 的基础

任何人都不应受到他们使用的软件的限制。每个用户都应该拥有四个自由:

  • 为任何目的使用该软件的自由,
  • 根据你的需要更改软件的自由,
  • 与你的朋友和邻居分享软件的自由,以及
  • 分享你所做更改的自由。

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

编写软件的开发者可以根据 GNU GPL 的条款发布它。当他们这样做时,它将成为自由软件并保持自由软件,无论谁更改或分发该程序。我们称之为 Copyleft:该软件受版权保护,但我们不使用这些权利像专有软件那样限制用户,而是使用它们来确保每个用户都拥有自由。

我们更新 GPL 是为了保护其 Copyleft 不受法律或技术发展的影响。最新版本保护用户免受三个近期威胁:

  • Tivo 化:一些公司创建了各种不同的设备,这些设备运行 GPL 软件,然后操纵硬件,以便他们可以更改正在运行的软件,但您不能。如果设备可以运行任意软件,那么它就是一台通用计算机,其所有者应该控制它的行为。当设备阻止您这样做时,我们称之为 Tivo 化。
  • 禁止自由软件的法律:诸如《数字千年版权法案》和《欧盟版权指令》之类的立法将编写或共享可以破坏 DRM(数字限制管理;请参阅下文)的软件定为犯罪。这些法律不应干扰 GPL 授予您的权利。
  • 歧视性专利交易:微软最近开始告诉人们,他们不会因专利侵权起诉自由软件用户——只要你从向微软支付特权的供应商那里获得该软件。最终,微软试图为使用自由软件收取版税,这会干扰用户的自由。任何公司都不应该能够这样做。

第 3 版还进行了许多改进,使每个人都可以更轻松地使用和理解该许可证。但是,即使进行了所有这些更改,GPLv3 也不是一个激进的新许可证;相反,它是先前版本的演变。尽管很多文本都发生了变化,但其中很多只是澄清了 GPLv2 的含义。考虑到这一点,让我们回顾一下 GPLv3 中的主要更改,并讨论它们如何为用户和开发者改进许可证。

中和禁止自由软件的法律——但不禁止 DRM

您可能熟悉 DVD 和其他媒体上的数字限制管理 (DRM)。您可能也熟悉那些使编写您自己的工具来绕过这些限制(例如《数字千年版权法案》和《欧盟版权指令》)为非法的法律。任何人都不应该阻止您编写任何您想要的任何代码,而 GPLv3 可以保护您的这项权利。

始终可以使用 GPL 代码编写实现 DRM 的软件。但是,如果有人使用受 GPLv3 保护的代码这样做,则第 3 节规定该系统不会被视为有效的技术“保护”措施。这意味着,如果您破坏了 DRM,您将可以自由地分发您自己的软件,并且您不会受到 DMCA 或类似法律的威胁。

像往常一样,GNU GPL 不会限制人们在软件中做什么;它只是阻止他们限制他人。

保护您修改的权利

Tivo 化是对用户自由的危险尝试:如果您的任何计算机都不允许您修改软件,那么修改软件的权利将变得毫无意义。GPLv3 通过要求分发者向您提供在设备上安装修改后的软件所需的任何信息或数据来阻止 Tivo 化。这可能只是简单的一组说明,也可能包括特殊的加密密钥或有关如何绕过硬件中的完整性检查的信息。这取决于硬件的设计方式——但是无论您需要什么信息,您都必须能够获得它。

此要求范围有限。分发者仍然允许将加密密钥用于任何目的,并且仅在您需要它来修改他们给您的设备上的 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 中的这一变化将促进自由软件社区内的更多合作和共享。下图有助于说明不同自由软件许可证之间的一些常见兼容性关系

A chart illustrating compatibility relationships between different free software licenses.  For details, see the FSF's license list page.

从一个许可证指向另一个许可证的箭头表示第一个许可证与第二个许可证兼容。即使您沿着多个箭头从一个许可证到达另一个许可证,这也是正确的;因此,例如,ISC 许可证与 GPLv3 兼容。如果程序允许您选择 GPL 的“任何后续版本”(对于根据此许可证发布的大多数软件而言都是这种情况),则 GPLv2 与 GPLv3 兼容。此图表并不全面(有关与 GPLv2 和 GPLv3 兼容的许可证的更完整列表,请参阅我们的许可证页面),但清楚地说明了 GPLv3 与 GPLv2 兼容几乎所有内容,以及其他一些内容。

GNU Affero GPL 第 3 版也被纳入其中。最初的 Affero GPL 旨在确保 Web 应用程序的所有用户都能够接收其源代码。GNU Affero GPL 第 3 版扩大了这一目标:它适用于所有网络交互软件,因此它也适用于游戏服务器等程序。额外的条款也更灵活,因此如果有人在没有网络接口的应用程序中使用 AGPL 代码,他们只需要以 GPL 一直要求的方式提供源代码。通过使这两个许可证兼容,网络交互软件的开发人员将能够在成熟的 GPL 代码库之上进行构建时加强其 Copyleft。

开发人员提供源代码的更多方式

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 合规实验室和其他在全球范围内执行许可证的组织的首要任务。这些更改确保合规仍然是执法者的首要任务,并为违规者提供了合规的动力。

最新最棒的

其中一些更改对你来说可能不如其他更改重要。这没关系。每个项目都是不同的,并且对其许可证有不同的需求。但是,这些改进中的许多可能会对你和你的工作有所帮助。

总的来说,所有这些升级都代表着更多:我们做出了一个更好的著作权共享协议。它在保护用户自由方面做得更多,同时也促进了自由软件社区的更多合作。但是,更新许可证只是工作的一部分:为了让人们获得它带来的好处,开发人员也需要为他们的项目使用 GPLv3。通过在新许可证下发布你自己的软件,所有处理它的人——用户、其他开发人员、发行商,甚至律师——都将受益。我们希望你为你的下一个版本使用 GPLv3。

如果你想了解更多关于将你的项目升级到 GPLv3 的信息,FSF 合规实验室很乐意为你提供帮助。在 gnu.orgfsf.org 上,你可以找到 使用许可证的基本说明 和一个 解决人们对许可证的常见问题的常见问题解答。如果你的情况比这更复杂,请 联系我们,我们将尽力帮助你完成过渡。共同努力,我们可以帮助保护所有用户的自由。