GPLv3 的 “程序” 指的是什么?
总结
在 GNU 通用公共许可证的第三版(GPLv3),“程序” 一词表示一个具体的按照 GPLv3 授权的作品,该作品已由某个被授权方从上游的授权方或发行者处接收。程序就是你按照一个 GPLv3 许可证的实例接收到的一个具体的软件作品。
“程序” 不可能是指 “所有按照 GPLv3 授权的作品”;这种解释毫无意义,因为 “程序” 是单一的:那么多的不同程序并不组成一个单独的程序。
具体来说,这个解释符合 GPLv3 第 10 节第 3 段的陈述:
你不能声称由于制作、使用、销售、提供或引进该程序或其某部分而导致某个专利侵权,并由此发起诉讼(包括交叉诉讼或反诉讼)。
该条件限制 GPLv3 接受者就其接收到的某个 GPLv3 软件提起有关专利侵权的诉讼。它并没有谈及一个是 A 程序的 GPLv3 接受者,但不是无关程序 B 的 GPLv3 接受者提起针对程序 B 的专利侵权的情况。如果同时是程序 A 和 B 的接受者,那么她有可能失去对程序 B 的权利,但不失去对程序 A 的权利。
由于软件专利对所有软件开发者、软件发行者和软件用户都造成不公正的威胁,所以我们希望努力废除软件专利。事实上,我们在为此举办活动。但是我们认为如果把一个 GPL 程序的授权条件搞成是要求其承诺永远也不攻击其他 GPL 程序会适得其反。
进一步分析
GPLv3 这样定义 “程序”:
“程序” 是指任何使用此许可证授权的版权作品。
有些人认为在给定的授权上下文中,这个定义可以按照是指所有 GPLv3 作品,而不是按照由接受者收到的单个 GPLv3 作品来解读。这些读者表达了对 GPLv3 中新的专利规定带来后果的特别担忧,尤其是对第 10 节第 3 段中专利中止条件和第 11 节第 3 段中由上游发行者作出的快速专利授权。这种对 “程序” 的过度宽泛的解读是错误的,这违背我们作为 GPLv3 起草者的意图。
“任何”一词在英语中有多个、微妙的意义。在某些语境中,“任何”意味着“每一个”或者“全部”;在其他情况,包括在 GPLv3 的“程序”的定义中,它是指“许多可能性中选出的一个特定案例”。这种解释必须在特定的语境中得以澄清。语境可以澄清,但是也需要认真思考。
我们可以对 “程序” 的定义使用不同的措辞,比如使用 “一个特定” 代替 “任何”,但是这并不能消除多种思考。“按照该许可证授权的一个特定作品”这个说法,就隔离而言,并不一定表示 *该* 特定作品在某个特定的授权活动中被特定的 “你” 接收。我们对其他自由软件许可证的审查也揭示了类似的解读问题,都是关于为促进许可证复用而使用常规词汇的问题。
既然我们不能明确地拒绝所有的解释,“任何”就有一定的优势。在某种程度上,它比其他的词汇更不正式并且更少在法律层面使用,是开发者阅读和应用许可证的合适词汇。另外,“任何”的用法,既然是在多个可能性中作出的选择,那么它就有强调 GPLv3 对多个软件作品和在多重许可证条件下具有可重用性的效果。GNU GPL 就是要让许多开发者在他们的程序中使用,我们必须清楚这一点。
GPLv3 中 “任何” 的用法引起的担忧在 GPLv2 中也一样存在。GPLv2 的第 0 节说:
本许可证适用于所有程序或作品,只要该程序或作品的版权持有者在程序或作品中声明它可以按照该公共通用许可证来发布。以下的 “程序” 一词,是指这种程序或作品,以及 “基于这种程序的作品”,即该程序或任何其版权法意义下的衍生作品…
然而,正如 FSF 和其他使用 GPL 的社区所一直理解的那样, “程序” 在 GPLv2 中的意思是特指你收到的 GPL 作品,在你作出任何修改之前的作品。GPLv3 中 “程序” 还是要保留这个定义。
在 GPLv3 中并没有任何条款可以使 “程序”(及其 “涵盖作品”)的更广泛的延伸意义显得有道理或者有实际效果,这些都和条款的措辞与修订历史保持一致。GPLv3 的专利条款正是一个恰当的例子。
第 11 节的第三段说:
每个贡献者都按照其基本专利主张授权你拥有非独占的、全球性的、无版税的专利许可,你可以制造、使用、销售、出售、进口和运行、修改以及传播这些贡献者版本的内容。
“贡献者” 的定义是 “授权该程序或基于该程序的作品按照此许可证使用的版权持有者。”
对 “程序” 的宽泛解读,正如建议,把专利许可授权提高到了一个不合理的广度。原因是,对一个给定的 GPLv3 许可证接受方来说,授权专利许可证的贡献者的集合变成全世界的全部 GPLv3 作品的全部 GPLv3 授权方,而不只是针对特定许可证接受方的特定作品的授权方。
不过,仔细研究专利许可证授权的措辞,并不能找到这些担忧。为了实践专利许可证授权,GPLv3 许可证接受方必须拥有 “贡献者版本的内容”。如果是这样,那么他就是一个内容接收方,按照 GPLv3 许可证被授权。
因此,贡献者一直是专利许可授权资料的实际版权授权方。从专利许可授权获益的用户最后是直接从这些贡献者收到这些资料。如果不是这样,那么专利许可授权就变得毫无意义,因为授权活动要和贡献者的 “实际版本” 绑定的。贡献者和第 11 节中的专利许可证有直接或间接的发布关系。所以,第 11 节第 3 段并不要求你授予专利许可证给那些不同时是版权接受方的人。(非贡献者类的发布者仍然受制于专利许可证条款和第 11 节第 6 段中具体的 “自动扩展” 条款。)
当人们考虑第 10 节第 3 段中的专利相关条款时,同样也没有对 “程序” 进行广义理解的基础。该条款说:
你不能声称由于制作、使用、销售、提供或引进该程序或其某部分而导致某个专利侵权,并由此发起诉讼(包括交叉诉讼或反诉讼)。
结合第 11 节第 3 段的专利许可授权和第 8 节的中止条款,第 10 节对中止专利条款的提升和 Apache 许可证 2.0 中的范围类似。
FSF 同情某些自由软件许可证带有宽泛专利报复条款的意图,因为废弃软件专利是一个伟大的愿望。然而,我们认为软件许可证中的宽泛专利报复条款并不大可能使社区受益,特别是有些条款会触发一些专利诉讼——这些诉讼涉及的程序和中止许可证授权的软件并没有关系。我们对在 GPLv3 中引入专利报复条款非常谨慎,而且第 10 节第 3 段里的条款是有意做得比一些知名许可证中的专利报复条款更局限,其中包括著名的 Mozilla 公共许可证版本 1.1,针对其中的专利许可证中止条款而言。
如果把 “程序” 的建议解释应用到第 10 节第 3 段的条款上,那么其结果就会和许可证前面对专利报复的陈述和政策大相径庭,这明显不是我们的意思。
GPL 版本 3 的政策也是一样。第 10 节的专利报复条款是为替换草案 2 的 7(b)(5) 条款而引入草案 3 的。7(b)(5) 条款允许 GPLv3 作品有两类专利中止:
完全及部分中止,或者中止对用户使用材料的许可——这些用户发起了软件专利诉讼(宣称某个软件侵犯某个专利的诉讼),而不是发起针对已有软件专利诉讼的报复或辩护或者在宣称的软件侵权中包含了所使用的材料(可能和其他软件一起)…
第 7 节没有陈述 GPL 的政策;只是描述了其他兼容许可证可以做到怎样的程度。因此,第 7 节的文字并没有建立宽泛的专利报复;它可能只是允许兼容许可证对组合有 GPL 代码的作品可以使用宽泛的专利报复。
尽管如此,正如草案 3 原理解释所述,这种宽泛的报复应该受到批评,因为它会应用到和此许可证无关的软件的专利诉讼上。考虑到并没有常用许可证在这一点上可以保持兼容性,我们在草案 3 中把宽泛专利报复排除在 GPL 兼容性之外。
我们通过用第 10 节替换 7(b)(5) 达到这一目的,因为其中我们只保留了和第 2 类专利中止相关的内容。第 1 类专利中止的内容因此在草案 3 中变成 GPL 不兼容的 “进一步限制”,在实际公开的 GPL v3 中也是如此。