GPL 许可系列在开源许可中是独一无二的,因为该许可的过去、当前和未来版本都可能适用于软件程序。由于未完全理解这种独特的许可特性,开源软件开发人员可能会无意中造成歧义。
GPL 许可在其条款和条件中明确说明了许可版本如何应用于程序。 GPL v2(第 9 条)中的适用语言部分内容如下:
“每个版本都有一个可区分的版本号。如果程序指定了适用于它的本许可证的版本号以及‘任何后续版本’,您可以选择遵循该版本或自由软件基金会发布的任何后续版本的条款和条件。如果程序未指定本许可证的版本号,您可以选择自由软件基金会发布的任何版本。”
GPL v3 第 14 条中的条款与 GPL v2 中的条款非常相似。
多年来,我见过许多开源项目声称它们已获得 GPL 许可,但没有明确指出版本号,同时还包含了完整 GPL 许可的文本(例如 v2 或 v3)。这种潜在造成的歧义可能对您有利或不利,具体取决于您是许可方还是被许可方等因素。
歧义如何发挥作用
例如,假设某个应用程序的许可证声明:“本程序根据 GPL 许可”,并完整包含了 GPL v3 许可证的副本。由于该项目没有明确说明适用哪个许可证版本号,因此合理的解释是,自由软件基金会发布的任何和所有 GPL 版本都可能适用——v3、v2 甚至 v1!
GPL v3 第 14 条中的这句话可以证明这种解释是合理的:
“如果程序未指定 GNU 通用公共许可证的版本号,您可以选择自由软件基金会发布的任何版本。”
另一方面,包含特定 GPL 版本的完整副本(其中可能还包括许可证标题块中的 GPL 版本号)可以被解释为本质上是在传达特定版本的许可证。在本例中,是 v3 且仅是 v3,因为没有“任何后续版本”条款。
如何避免歧义
为了避免这种许可歧义,您应该非常清楚。如果您只想应用 仅 v3,请明确说明:“本程序仅根据 GPL v3 许可”并且提供完整的 GPL v3 许可证。或者,如果您希望 v3 或任何后续版本的 GPL 适用,请明确声明:“本程序根据 GPL v3 或任何后续版本许可。” 最后,如果您真的希望任何版本的 GPL 都适用,您可以提供 v3 许可证并说:“本程序根据自由软件基金会发布的任何版本的 GPL 许可。”
无论您做出哪种许可选择,都要非常清楚,以便每个人都理解您的真实含义。
2 条评论