为了清晰起见,请不要说“根据GNU GPL 2授权”!

1989年,当我编写GNU通用公共许可证(GNU GPL)时,我认识到改变可能是必要的:FSF可能有一天会发布新版本的原因。所以我把许可称为“版本1”并建立一个框架,使用户可以将程序升级到以后的版本许可证版本。

没有免费许可证的习惯做法;到目前为止据我所知,这是以前从未做过的。开发人员发布了一个使用不同许可证的程序的新版本,可能他们已经使旧版本的新版本在不同的许可证,但他们从未建立一种系统化的方法来为用户提供为已发布的版本选择使用未来的许可证版本一个程序。

我不知道开发者会如何回应这项创新,所以我决定给每个开发人员一个关于允许未来的选择版本。这意味着开发人员可以在GNU GPL下发布程序版本1只有,或在GPL版本1下发布或以后的任何时间版本。开发商陈述其选择的方式是许可证通知它位于每个源文件的开头。这就是GPL表示,这一决定是明确的。

自由软件基金会敦促开发者选择或任何更高版本,因为这意味着用户可以自由使用GNU GPL版本1或版本2下的程序(一旦有版本2)或低于版本3(曾经有过版本3)。而且他们如果我们需要创建一个版本4。

自那时起,FSF于1991年发布了GNU GPL版本2和版本2007年3次。每个版本都为开发人员提供了坚持的选择只有一个许可证版本,或允许在未来的许可证下使用版本。(GPL 3还允许“代理”选项,其中指定了网页随后可以授予使用特定未来的权限版本。)

发布具有许可证升级权限的程序对于避免不同GPL版本下发布的程序之间不兼容。

两种不同的版权许可在缺少一些明确的兼容性机制。那是因为每一个都需要修改程序的版本根据同样的许可证发布。因此,代码仅在GPL版本2下发布的不能与发布的代码合并仅在GPL版本3下。

GPL版本之间的兼容性机制是发布“N版或任何更高版本”下的程序。发布的程序GPL-2.0或以下可以与GPL-3.0或以下的代码合并,因为“3或更高版本”是“2或更高版本”的子集

一些开发人员说,“我现在只在GNU GPL版本3下发布。当我看到GPL版本4时,如果我喜欢,我会重新授权我的程序允许在版本4下使用。“如果您是唯一的作者,前提是你还活着,身体健康,可以联系并且付费当时请注意。但是版权持续的时间太长了当今;如果没有重大改革,代码的版权将在你死后70年在美国(100年墨西哥)。你有没有安排你的继承人考虑如果您没有,请将您的代码重新授权到GPL版本4考虑时间更长?

但即使在你的有生之年,麻烦也会发生。如果我们发布GNU GPL版本4从现在起十年后,到那时已有50个其他版本添加到您的程序中,仅在GPL-3.0下发布添加的代码仅仅因为你做了?你可以为你的计划批准GPL 4最初发布,但联系50人将是一项艰巨的任务当时的后续开发人员获得GPL 4的许可添加内容的使用。

避免这些问题的方法是在一开始的许可证通知。请把每个重要的文件都放上的来源发布的许可证通知,表格显示在您正在使用的GPL版本。

因为我们以这种方式处理许可证兼容性,当人们告诉你一个程序在“GNU GPL版本2”下发布,他们将离开该项目的许可不明确。是否仅根据GPL-2.0发布,还是GPL-2.0级?你能将代码与发布的包合并吗GPL-3.0或以下?

当GitHub等网站邀请开发人员选择“GPL 3”或“GPL2”以及其他许可选项,并且不要提出未来的问题版本,这导致数千名开发人员离开他们的代码许可证发放不明确。请这些用户在“仅”和“或更高版本”将引导他们明确代码的授权。还提供了一个机会来解释后一种选择是如何避免的未来的不兼容性。

“GPL-2.0”或“GPL-3.0”等缩写的许可证指标将也会导致混乱。不认可的人员和组织“2 only”和“2 or later”之间的区别很容易在这两种情况下都写“GPL-2.0”,但没有意识到制造。

因此,当您使用SPDX许可证指示器时,请使用以下各项:

  • 仅GPL-2.0或GPL-2.0级
  • 仅GPL-3.0或GPL-3.0级
  • 仅LGPL-2.0或LGPL-2.0-或更大
  • 仅LGPL-2.1或LGPL-2.1-或更高
  • 仅LGPL-3.0或LGPL-3.0-or
  • 仅AGPL-3.0或AGPL-3.0或更高版本
  • 仅限GFDL-1.3或GFDL-1.3-或更高

请不要使用旧的、模棱两可的许可证指示器已弃用:

  • GPL-2.0标准
  • GPL-3.0标准
  • LGPL-2.0型
  • LGPL-2.1型
  • LGPL-3.0标准
  • AGPL-3.0型
  • GFDL-1.3。

让开发人员可以选择GPL版本“1 only”或GPL版本”11989年“似乎是强制性的,但它已经创造了一个没有复杂性我们会过得更好。与此同时,几个无条件允许用户选择升级到的许可证后来的许可证版本已经被广泛接受。其中包括Mozilla公共许可和Eclipse公共许可。每个版本表示用户可以在更高版本下自由使用作品,如果有的话,相同许可证的。知识共享版权许可,CC BY-SA,允许用户在修改作品时升级许可证版本。

对于未来版本的GNU GPL。但这是未来需要考虑的问题。

我们感谢SPDX决定更改GNU系列许可证可做出“或更高”与“唯一”的选择明确的。即将发布的许可证SPDX许可证列表版本标识符将使用上述推荐的标识符。令人困惑的标识符(如“GPL-2.0”)将被弃用。我们要求人们尽快用新的明确的标识符替换它们。

通过使用明确的标识符只有任何时候都可以版本,我们可以让社区意识到差异鼓励开发人员清楚地陈述他们的决定。