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

为什么要升级到 GPLv3

GNU 通用公共许可证第三版(GNU GPL)发布了,它使自由软件包可以从 GPL 版本 2 升级到版本 3。本文解释为什么这次许可证升级是重要的。

首先,重点要说明的是升级是一个选择。GPL 版本 2 仍然是一个有效的许可证,如果有的程序还使用 GPLv2 而另外一些程序升级到 GPLv3 并不会造成灾难。虽然这两个许可证不兼容,但这不是根本性问题。

当我们说 GPLv2 和 GPLv3 不兼容,我们的意思是没有合法的手段把 GPLv2 代码和 GPLv3 代码合并成一个程序。因为 GPLv2 和 GPLv3 都是 copyleft 许可证:它们都表达了,“如果你在较大的程序里包含了本许可证的代码,那么这个较大的程序必须也使用本许可证。”没有办法使它们兼容。虽然我们可以在 GPLv3 里加一条兼容 GPLv2 的条款,但是也不能解决问题,因为 GPLv2 里也需要类似的条款。

所幸的是,许可证的兼容性只在你想链接、混合或合并两个不同程序为一个程序时才有影响。在一个操作系统中同时有 GPLv3 和 GPLv2 的程序是没有问题的。比如,TeX 许可证和 Apache 许可证都不兼容 GPLv2,但是这个并不影响我们在同一个 Linux、Bash 和 GCC 下运行 TeX 和 Apache。因为它们是单独的程序。同样,Bash 和 GCC 升级到 GPLv3,而 Linux 保留在 GPLv2,也没有冲突。

一个程序保留在 GPLv2 不会制造麻烦。升级的原因在于 GPLv3 要解决的已知问题。

GPLv3 阻止的一个主要危险是 tivoization。Tivoization 是指有些 “设备”(其中带有计算机)包含 GPL 软件,但是你无法有效更改,因为该设备检测到软件修改后会关机。Tivoization 的动机通常是供应商知道其中一些软件功能人们想要修改,而他们的目的就是不让人修改。这些供应商利用了自由软件提供的自由,但是却不想给别人同样的自由。

有人会争辩说自由市场的竞争会使设备上较差的功能降到很低的水平。竞争本身也许会避免诸如,“每周二下午一点到五点必须关机” 之类随意的、无厘头的差劲功能,但即便如此,由别人来主导也不是自由。自由意味着 来控制你的软件做什么,而不仅仅是你能够祈求或者胁迫别人为你做决定。

在数字限制管理(DRM)——这是限制你使用自己电脑上的数据的恶劣功能——等严酷的领域,竞争没有用,因为相关的竞争被禁止了。在诸如数字千禧版权法案之类的法律中,在美国和许多其他国家,如果你没有按照“DVD 阴谋”的官方规则(网站 www.dvdcca.org/,但是规则看来并没有放上去)发布限制用户的 DVD 播放器,那么你是非法的。公众无法通过购买非 DRM 的播放器来拒绝 DRM,因为没有这样的播放器。无论有多少种产品供你选择,它们都是带有数字枷锁的。

GPLv3 保证你有删除枷锁的自由。它不禁止 DRM,也不禁止任何功能。它不限制你为程序添加或删除重大的功能。反过来,它保证你有同样的自由发布删除差劲功能的版本和添加差劲功能的版本。Tivoization 正是要剥夺这种自由;为了保护自由,GPLv3 禁止 tivoization。

对 tivoization 的禁止适用于任何有消费者的产品,即使只是偶尔用到。GPLv3 可以容忍那些几乎专门用于商业和组织的产品上的 tivoization。

GPLv3 要反抗的另一个威胁是诸如 Novell-Microsoft 协议之类的专利交易。Microsoft 想用其拥有的成千上万的专利来迫使用户付费来运行 GNU/Linux,并且企图通过此类专利交易达到目的。该交易对 Novell 用户使用 Microsoft 专利的保护非常有限。

Microsoft 在此交易中犯了一些错误,GPLv3 反过来以其人之道来对付 Microsoft,将这个有限的专利保护扩展到整个社区。为了利用这个保护,程序应该使用 GPLv3。

Microsoft 的律师不是傻子,下次他们就可能不会再犯这样的错误了。因此,GPLv3 说他们不会再有 “下一次”。按照 GPL 版本 3 发布的程序禁止 Microsoft 将来企图通过再发布来向该程序的用户收取 Microsoft 版税。

GPLv3 还为用户提供了来自程序贡献者和发布者的明确专利保护。使用 GPLv2,用户依赖潜在的专利许可证来保证不会因专利侵犯被为他们提供拷贝的公司或他们分发拷贝的人们起诉。

我们并不想要 GPLv3 的明确专利许可证发挥到极致。理想情况是,我们希望每个 GPL 代码的再发布者都放弃全部的软件专利,同时每个非 GPL 代码的发布者也放弃全部的软件专利,因为本来就不应该有软件专利。软件专利是一个恶毒而可笑的体系,它让所有开发者都面临被素昧平生的公司起诉的风险,当然更包括被超级大公司起诉的风险。大型程序一般都集成了成千上万个想法,这些想法已有数百个专利并不意外。超级大公司掌握上万个专利,并使用这些专利来霸凌弱小的开发者。专利已然在阻挠自由软件的开发。

让软件开发安全的唯一出路是废除软件专利,我们希望将来这个目标能够实现。但是我们不能通过软件许可证实现这个目标。一个程序,无论自由与否,都会被不相干的软件专利持有者干掉,而该程序的许可证不能阻止这个。只有法庭命令或专利法的变革才能让软件开发免除专利之危险。如果我们寄希望于 GPLv3,那么不会成功。

因此,GPLv3 是在寻求限制和疏导这种危险的方法。具体来看,我们是在尽力挽救自由软件,使之不要落入生不如死的境地:通过专利变成了专有软件。GPLv3 的明确专利许可证确保使用 GPL 的公司给予用户四项基本自由,不能反悔,不能使用专利告诉某些用户,“这个不包括你们。”它也阻止大公司和其他专利持有者串通起来这么干。

GPLv3 的其他优势还包括更好的国际化、更温和的中止条款、支持 BitTorrent 以及兼容 Apache 许可证。总之,升级的理由很充分。

GPLv3 发布之后还可能会有变化。如果用户自由有了新的威胁,那么我们还会开发 GPL 版本 4。如果我们要撰写 GPLv4,那么保证程序的许可证升级没有问题是重要的。

其中一个方法是让程序按照 “GPL 版本 3 或任何以后版本” 发布。另一个方法是程序的所有贡献者声明一个能够决定升级 GPL 将来版本的代理。第三个方法是所有贡献者将版权转让给一个指定的版权持有者,该版权持有者将处理许可证版本升级的问题。无论采取哪一种方法,程序都应该提供应对将来版本的 GPL 许可证的灵活性。