为什么要升级到 GPLv3
作者:Richard StallmanGNU 通用公共许可证(GNU GPL)的第 3 版已经发布,允许自由软件包从 GPL 第 2 版升级。本文解释了为什么升级许可证很重要。
首先,需要注意的是升级是一种选择。GPL 第 2 版仍然是一个有效的许可证,如果一些程序仍然使用 GPLv2,而另一些程序升级到 GPLv3,也不会发生灾难。这两种许可证是不兼容的,但这并不是一个根本性的问题。
当我们说 GPLv2 和 GPLv3 不兼容时,这意味着没有合法的办法可以将 GPLv2 下的代码与 GPLv3 下的代码合并到一个程序中。这是因为 GPLv2 和 GPLv3 都是著作权保留许可证:它们都声明,“如果在一个更大的程序中包含此许可证下的代码,则该更大的程序也必须使用此许可证。” 没有办法使它们兼容。我们可以在 GPLv3 中添加一个与 GPLv2 兼容的条款,但这不起作用,因为 GPLv2 也需要类似的条款。
幸运的是,许可证不兼容只有在您想将两个不同程序中的代码链接、合并或组合到一个程序中时才重要。在操作系统中并排存在 GPLv3 覆盖的程序和 GPLv2 覆盖的程序没有问题。例如,TeX 许可证和 Apache 许可证与 GPLv2 不兼容,但这并不能阻止我们在同一系统中与 Linux、Bash 和 GCC 一起运行 TeX 和 Apache。这是因为它们都是独立的程序。同样,如果 Bash 和 GCC 迁移到 GPLv3,而 Linux 仍然使用 GPLv2,则不会发生冲突。
将程序保留在 GPLv2 下不会产生问题。迁移的原因是 GPLv3 将要解决的现有问题。
GPLv3 将要阻止的一个主要危险是 Tivo 化。Tivo 化是指某些“电器”(内部有计算机)包含 GPL 覆盖的软件,您无法有效地更改这些软件,因为如果电器检测到修改过的软件,就会关闭。Tivo 化的通常动机是,该软件具有制造商知道人们会想要更改的功能,并旨在阻止人们更改这些功能。这些计算机的制造商利用自由软件提供的自由,但不允许您这样做。
有些人认为,自由市场上电器之间的竞争应该足以将令人讨厌的功能保持在较低水平。也许仅靠竞争就可以避免任意的、毫无意义的错误功能,例如“必须在每周二下午 1 点到 5 点之间关闭”,但即便如此,选择主人也不是自由。自由意味着您控制您的软件的功能,而不仅仅是您可以乞求或威胁其他为您决定的人。
在数字限制管理(DRM)的关键领域——旨在限制您在计算机中使用数据的令人讨厌的功能——竞争无济于事,因为相关的竞争是被禁止的。根据《数字千年版权法》和类似法律,在美国和许多其他国家/地区,除非 DVD 播放器按照 DVD 阴谋的官方规则限制用户(其网站是 www.dvdcca.org/,但这些规则似乎没有在那里公布),否则分发 DVD 播放器是非法的。公众无法通过购买非 DRM 播放器来拒绝 DRM,因为没有可用的非 DRM 播放器。无论您可以选择多少种产品,它们都具有同等的数字手铐。
GPLv3 确保您可以自由地移除手铐。它不禁止 DRM 或任何类型的功能。它不对您可以添加到程序或从中删除的实质性功能施加任何限制。相反,它确保您可以像您的副本的分发者添加令人讨厌的功能一样自由地删除它们。Tivo 化是他们剥夺您自由的方式;为了保护您的自由,GPLv3 禁止 Tivo 化。
禁止 Tivo 化适用于任何预期消费者会使用的产品,即使只是偶尔使用。GPLv3 仅允许几乎完全面向企业和组织的产品进行 Tivo 化。
GPLv3 抵制的另一个威胁是像 Novell-Microsoft 协议这样的专利协议。微软希望利用其数千项专利让用户为运行 GNU/Linux 的特权向微软付费,并达成这项协议以试图实现这一目标。该协议为 Novell 的客户提供了相当有限的 Microsoft 专利保护。
微软在 Novell-Microsoft 协议中犯了一些错误,而 GPLv3 的设计目的是利用这些错误来对抗微软,将这种有限的专利保护扩展到整个社区。为了利用这种保护,程序需要使用 GPLv3。
微软的律师并不愚蠢,下次他们可能会设法避免这些错误。因此,GPLv3 表示他们不会有“下一次”。根据 GPL 第 3 版发布程序可以保护它免受微软未来试图让重新分发者从该程序的用户那里收取微软专利费用的尝试。
GPLv3 还为用户提供了来自程序贡献者和重新分发者的明确专利保护。在 GPLv2 中,用户依赖于隐式专利许可,以确保向他们提供副本的公司不会因专利侵权而起诉他们或他们重新分发副本的人。
GPLv3 中的明确专利许可并没有达到我们可能希望的程度。理想情况下,我们会让每个重新分发 GPL 覆盖的代码的人都放弃所有软件专利,以及每个不重新分发 GPL 覆盖的代码的人,因为不应该有软件专利。软件专利是一个恶性而荒谬的系统,它使所有软件开发人员都面临被他们从未听说过的公司以及该领域的所有大型公司起诉的危险。大型程序通常结合了数千种想法,因此如果它们实现了数百项专利所涵盖的想法,也就不足为奇了。大型公司收集了数千项专利,并利用这些专利来欺负规模较小的开发人员。专利已经阻碍了自由软件的开发。
使软件开发安全的唯一方法是废除软件专利,我们的目标是有一天实现这一目标。但是,我们无法通过软件许可证来实现这一点。任何程序,无论是自由的还是非自由的,都可能被不相关方手中的软件专利扼杀,并且程序的许可证无法阻止这种情况。只有法院判决或专利法的修改才能使软件开发免受专利的侵害。如果我们试图使用 GPLv3 来实现这一点,它将会失败。
因此,GPLv3 试图限制和引导这种危险。特别是,我们试图将自由软件从比死亡更糟糕的命运中拯救出来:通过专利使其实际上成为专有的。GPLv3 的明确专利许可确保使用 GPL 向用户提供四种自由的公司不能转过头来利用其专利告诉某些用户,“这不包括你”。它还阻止他们与其他专利持有人勾结来做到这一点。
GPLv3 的其他优点包括更好的国际化、更温和的终止、对 BitTorrent 的支持以及与 Apache 许可证的兼容性。总而言之,有很多理由升级。
一旦 GPLv3 发布,变化不太可能停止。如果用户的自由面临新的威胁,我们将不得不开发 GPL 第 4 版。重要的是要确保如果和当我们编写 GPL 第 4 版时,程序可以顺利升级到 GPLv4。
一种方法是以“GPL 第 3 版或任何更高版本”的形式发布程序。另一种方法是让程序的所有贡献者声明一个可以决定升级到未来 GPL 版本的代理人。第三种方法是让所有贡献者将版权分配给一个指定的版权持有人,该持有人将有权升级许可证版本。无论如何,程序都应为未来的 GPL 版本提供这种灵活性。