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

GNU GPL 的销售例外

销售例外,指代码版权持有人在有效的自由软件许可证下向公众发布代码,同时另行为用户提供付费选项,使其可在不同条款(例如允许将该代码整合至专有应用中的条款)下使用同一代码。

我们必须区分“销售例外”与另一种本质上不同的做法:为自由程序开发纯专有的扩展或版本。即便同一家公司同时进行这两种活动,它们也是截然不同的问题。在销售例外时,适用于该例外的同一段代码是以自由软件的形式向公众提供的。而仅在专有许可下提供的扩展或修改版本,则纯粹是专有软件,与任何其他专有软件一样是错误的。本文仅讨论严格意义上的、纯粹的“销售例外”情况。

我们同样需要区分“销售例外”与“双重许可证”。双重许可证是指在发布程序时提供可选的许可证——用户可以自主选择遵循其中一种许可证条款使用程序,或在符合条件的情况下并行遵循两种许可证。(因此,再分发者通常会将两种许可证一并传递。)例如,Perl 语言曾多年采用双重许可证模式,用户可选择遵循 GNU 通用公共许可证(GNU GPL)或艺术(Artistic)许可证。如今这种安排已非必要,因为艺术许可证第二版已与 GNU GPL 兼容。

在销售例外的模式中,例外条款并非程序发布的第二种许可证。实际上,这些条款仅对购买例外的用户开放。程序发布的唯一许可证是 GNU GPL,因此这不属于双重许可证。

我们必须将“销售例外”与通常意义上的“GPL 例外条款”区分开来。后者是指直接赋予所有用户以某种特定方式突破 GPL 限制的许可,这类例外受 GNU GPL 第7条管辖。而销售例外在法律上独立于 GNU GPL。为避免混淆,最好不要将这类付费例外称为“GPL 例外条款”。

自20世纪90年代以来,我一直认为销售例外是可行的方式,也曾数次向企业推荐这种做法。有时,正是通过这种方式,一些重要程序得以成为自由软件。

20世纪90年代兴起的 KDE 桌面环境基于 Qt 库开发。当时的 Qt 是专有软件,其开发商 TrollTech 对将 Qt 嵌入专有应用收取授权费用。虽然 TrollTech 允许在自由软件中免费使用 Qt,但这并未使其成为自由软件。因此,完全自由的操作系统无法包含 Qt,也就无法使用 KDE 桌面环境。

1998年,TrollTech 管理层意识到,他们可以将 Qt 转为自由软件,同时继续为将其嵌入专有软件的使用权收费。我不确定这个建议是否源于我,但我确实为这一转变感到欣喜——它使得自由软件世界得以使用 Qt,进而也能使用 KDE。

起初,他们采用了自行设计的 Q 公共许可证(QPL)——它作为自由软件许可证而言限制颇多,且与 GNU GPL 不兼容。后来他们转而采用 GNU GPL;我记得曾向他们解释过,这个许可证能够满足他们的需求。

销售例外的根本前提在于,自由软件发布时需采用诸如 GNU GPL 之类的著佐权(copyleft)许可协议。著佐权许可要求:只有当整个组合程序也按该许可发布时,才允许将代码嵌入更大规模的程序中——正是通过这种方式,确保衍生版本同样保持自由。因此,希望将组合程序转为专有软件的用户需要获得特殊授权。唯有版权持有人能授予此类例外,而销售例外正是实现此目的的一种方式。其他通过 GNU GPL 或其他著佐权许可获得代码的第三方,则无权授予此类例外。

当我首次听闻销售例外的做法时,曾自问这种行为是否合乎伦理。如果有人购买例外,将某个程序嵌入更大型的专有软件中,这本身是一种错误行为(即开发专有软件)。那么,出售例外的开发者是否同样有错?

若这一推论成立,那么以非著佐权的自由软件许可证(如 X11 许可证)发布相同程序也应适用同等批评——因为这类许可同样允许专有软件的嵌入。如此一来,我们只能得出两种结论:要么认为使用 X11 许可证发布任何软件都是错误的(这种极端结论令人难以接受),要么就必须推翻最初的推论。使用非著佐权许可证是一种弱保护策略,通常 并非最优选择,但其本身并无过错。

换言之,销售例外仅允许代码在有限范围内嵌入专有软件,而 X11 许可证则更进一步,允许代码(及其修改版本)在专有软件中被无限制使用。既然这种做法没有使 X11 许可证变得不可接受,那么销售例外也不应被视为不可接受。

自由软件基金会(FSF)不采取销售例外的做法,主要基于三点考量。首先,这与 FSF 的核心目标——确保我们软件的每位用户都能享有自由——并不一致。我们编写 GNU GPL 正是为了实现这一目标,而最彻底的方式是在 GPL 第3版或更新版本下发布软件,并禁止将其嵌入专有软件。销售例外无法达成这一目标,正如采用 X11 许可证发布同样不能。因此,我们通常既不采用销售例外,也不使用 X11 许可证,而仅以 GPL 发布软件。

我们仅以 GPL 发布软件的另一个原因,是为了防止出现比我们的自由程序更具实用优势的专有扩展。那些不重视自由的用户可能会选择这些非自由版本,而不是基于自由软件的原版——从而丧失自由。我们不希望助长这种情况。

在特殊情况下,出于特定战略考量,我们认为对某些程序采用更宽松的许可证更有利于自由事业。此时,我们会直接以该宽松许可证向所有人发布该程序。

这是因为自由软件基金会遵循另一项伦理原则:平等对待所有用户。一项追求自由的理想主义运动不应存在歧视,因此 FSF 坚持向所有用户提供相同的许可。FSF 从不使用销售例外;无论我们以何种许可证发布程序,该许可证都平等地向所有人开放。

但我们不必要求企业遵循这项原则。我认为销售例外是企业可接受的做法,并会在适当时机建议将其作为推动程序自由化的一种途径。