序言
本文解释了有关该法的含义和实施的一些问题 GNU通用公共许可证。 这个特殊的场合 文章是Linux与ZFS结合的违规行为 特别关注GNU GPL版本2; 然而,大多数要点 适用于所有版本的GNU GPL和GNU Affero GPL 好。 “GPL”或“GNU GPL”是指其中任何一个版本。
在陈述我们对许可证含义的理解时 我们必须指出,这不是法律建议。
背景
2005年1月,我们在 许可证列表声明 解释说,“通用开发和分销许可证, 版本1.0 (CDDL)与GNU的所有版本都不兼容 通用公共许可证(GPL)。 “我们解释说” GNU GPL和CDDL涵盖的模块不能合法链接 我们敦促开发人员“不要为此使用CDDL 原因。 "
虽然CDDL不常用,但它是 分发由Sun Microsystems开发的文件系统ZFS。 ZFS是 最初是为Solaris编写的,但从那时起 使其作为模块与其他操作系统协同工作的项目 果仁。 尝试将ZFS版本与Linux版本结合在一起快速运行 CDDL与GNU GPL的不兼容。
版权所有和增强版本
更改免费程序通常需要更改预先存在的代码 但有时更改纯粹是添加新的 模块。 添加的模块不必专门针对 这种用法——它们可能包括从其他开发人员那里获得的代码。 我们 可以调用纯粹通过添加模块“增强”版本生成的版本, 以将它们与其他类型的变化区分开来。 的更改版本 该程序需要获得原件版权的许可 程序。
自由软件许可证的关键问题是它需要什么 关于增强版本的许可。 宽松的许可证, 包括Expat许可证、X11许可证和Apache 2.0 许可证,允许程序的扩展版本是非免费的。 每个文件的版权许可证,如Mozilla公共许可证(MPL) 同样允许这样做。 结果是,任何中介都可以 直接将程序转换为非自由软件 增强它。
版权许可,包括GNU GPL或GNU AGPL的任何版本, 需要在同一许可证下免费提供增强版本-- 同样的要求也适用于代码的修改。 1 我写了一个 GNU程序的copyleft许可证,确保所有用户 他们的版本将获得我想要给予他们的自由。
仅仅要求组合程序是自由软件是不够的 不知怎么的。 它必须作为一个整体在原版权下发布 许可,以确保:(1)后续用户获得完全相同的许可 自由和(2)后续中介机构获得的机会不会超过 第一阶段的中介机构使该计划成为非免费的。
此copyleft要求适用于添加到 程序,无论谁是该代码的版权所有者 你补充道。 2 如果不这样做,中介机构将有一个简单的借口 无视这些要求,剥夺一些用户应有的自由: 只需添加其他人编写的代码。
私下里,你可以随心所欲
GNU GPL对您在 私有; 当您将工作提供给 其他。 三 , 4
扩充作品作为源代码的分发
GNU GPL,在任何版本中,只允许以以下形式重新分发 根据相同版本的GPL授权的作品。 这意味着 当您分发包含来自覆盖的GPL的材料的作品时 程序,则必须在 GPL适当版本的条件。 例如,GPL 版本2声明:
“基于项目的工作”是指项目或任何 著作权法下的衍生作品:也就是说,作品 包含程序或程序的一部分,可以是逐字的,也可以是带有 修改和/或翻译成另一种语言。
这不仅限于您对 GPL涵盖了你开始的工作。 你添加的任何材料都属于 同样的要求,这样的补充就不会成为拒绝的借口 用户的自由。 5 如果你想要的材料 add不允许以这种方式使用,您不能将其添加到GPL覆盖的 为使他人可用而工作。
二进制(非源)增强作品的分布
使二进制(非源)工作可用的唯一允许方法 包括GPL的材料在GPL下。 GPL的许可 这种二进制形式的要求基本上取决于 对GPL下相同作品来源的要求。 因此,您可以 仅通过授权整个作品来遵守二进制文件的GPL (二进制版本和完整的相应源代码 版本)。 这就是copyleft的基本点 适用于二进制文件。 GPL不兼容许可证下的代码不能 添加了,既不以源代码形式也不以二进制形式添加,并且不违反GPL。
关于分发或提供,GPL首先声明 以源代码形式分发修改作品的条件, 然后声明可以以非源形式分发相同的工作 此外 到源窗体。 6
GPL允许分发修改的或 根据GPL的条款,以及分发(在一个 几种认可的方式)的完整对应源代码, 它必须包含非源工作中的所有模块和所有代码 除了特定的系统库之外 特定条件。 7 相应的 源代码必须作为一个整体在GNU GPL下发布。
整个作品由什么构成?
组合程序的一种常见方法是“链接”它们,以便 程序可以使用其他程序的例程。 开发人员通常会说话 关于“静态”链接,当来自不同源程序的代码 复制到一个组合的可执行文件中,然后生成 当一个程序不可用时,用户可以使用和“动态”链接 链接到另一个,直到在用户的 系统。
使用静态链接,代码是 整个程序的源代码。 它至少包括 二进制中链接在一起的所有模块的源代码。
开发人员经常发现这一点并不十分明显 动态链接,但情况同样清楚:如果您分发 用户将要链接在一起的模块,您已经创建了它们 合并成一个作品,您必须发布整个合并作品 在GNU GPL下。
换句话说:动态链接与静态链接 从未 制造任何 分析结果的差异。 8 FSF的顾问 多年来,几位美国律师都在处理这件事,答案是 总是这个。 不出所料,一些律师愿意 为适合客户的不同解释辩护,但 他们的论点站不住脚,受到大多数专家的质疑。
版权持有人可以明确授权其他用途
在法律上,在GNU General Public下发布作品 许可或任何其他免费许可是版权声明 授权用户做某些事情的持有者。 版权相同 持有者在法律上可以自由授予使用 如果版权持有人根据 然后他们宣布总部位于 允许Kalamazoo在MPL下发布相同的程序 第1版1600bpi磁带放在绿色盒子里,时间是13号星期五, 这个许可是有效的。 根据 GPL也仍然有效。
因此,Linux的版权所有者可以允许使用Linux 以GPL版本2未授权的方式。 但没有人能这样设想 除非版权所有者给予许可。
同样,ZFS的版权所有者(实际上是 used)可以在GNU GPL版本2或 之后,除了任何其他许可之外。 这将使它成为可能 在不违反许可证的情况下将该版本与Linux结合 Linux。 这将是理想的解决方案,我们敦促版权 ZFS的持有者这样做。
一些版权所有者选择不在 具体情况。 9 这使用户可以像权限一样操作 被授予。 然而,这并不会改变GNU的含义 GPL,并且不会导致GPL突然禁止的使用 或慢慢被GPL许可。 这种默许并不是 Linux和ZFS链接案例; 实际上,一些Linux版权 持有者表示,他们认为这侵犯了版权。 我们有 上面解释了为什么会这样。
当某些GPL条件过于严格时
我们不时得出结论,GPL中的某些条件是 过于严格,其措辞排除了某些使用方式 就用户的自由而言,在道德上应该被允许。 通常是这样 是由于技术环境的变化。
例如,在1991年,我们发现在一些系统上 SunOS没有随内核和大部分系统一起发布, 而是使用C编译器。 (在此之前,每个Unix变体 系统包括一个C编译器。) 结果是“系统 GPL版本1中的“library”异常不适用于此情况-- 然而,这是该例外计划允许的一部分。
FSF决定不对这些人强制执行GPL的条件 为SunOS分发二进制文件。 然而,这只适用于代码 FSF版权所有。 FSF无法决定其他版权 持有人是否在这种情况下执行GPL。
所以我编写了GPL版本2,但有一个修改过的系统库例外 应用于随编译器分发的库以及 那些与基础系统一起分发的。 这就产生了 立即授权“GNU GPL”下发布的所有程序 版本1或任何更高版本”,编译二进制文件的分发 用于SunOS。
同样,在2006年,我们通过GPL版本3的评论了解到 下载GPL覆盖程序二进制文件的过程 BitTorrent违反了GPL版本2,因为使用BitTortrent每 下载程序也会重新发布。 我将GPL版本3中的术语包括到 明确允许这样做,从而授权BitTorrent分发 GNU GPL版本2或任何版本下发布的所有程序的二进制文件 更高版本”。
自GPL版本3发布以来的九年中,我们没有发现 这个缺陷需要一个新版本,但世界确实在改变。 在 1991年,当我们发布GPL版本2时,BitTorrent还没有 发明。 明年,我们可能会了解到一项新的实践,要求 GPL版本4,或者更确切地说是3.1。 这就是为什么 在“GPL版本N或更高版本”下发布--这样我们就可以修复 他们面临的问题,即使他们有很多版权持有者。
GPL版本2和GPL版本3中的许可证终止
以违反以下规定的方式分发GPL覆盖程序的任何人 GPL立即失去分发权限。 这是怎么回事 在GPL版本2和GPL版本3之间进行了更改。
1991年出版的GPL第2版自动成为违规者, 立即永久性地失去发布该信息的许可 程序。 没有例外。 为了收回权利,违规者 必须要求版权所有者恢复权利。 10
1991年,一个免费项目不太可能有数百个 版权所有者,但现在Linux和许多其他软件都是这样 免费程序。 大型GNU/Linux发行版的版权所有者 肯定有几十万甚至更多。
因此,在GPL版本3中,我决定使治愈 违反。 一旦你停止违规行为,你的分配 权利暂时恢复。 版权持有人则有60人 多抱怨几天; 只有那些在那天之前投诉过的人 可以取消此临时恢复。 如果你让他们满意,他们 可以宣布你是清白的,这样你的分配权 已永久还原。 11
Linux仍处于GPL版本2下,因此GPL的终止更加严格 版本2仍然适用于Linux。 FSF敦促版权所有者 出于这个和其他原因,Linux将其移动到GPL版本3。
Linux的GPL强制
自由软件基金会在 Linux。 我们开发的是GNU操作系统,它是 Linux在台式机、笔记本电脑和 服务器计算机。
FSF不是Linux的版权所有者,除了小部件 从我们根据较低GPL或GPL发布的程序中复制 加上异常,也许还有一个模糊的处理器端口。我们没有 根据这些代码的强度告诉开发人员 如何在Linux上实施GPL,我们 不会像我们有发言权一样主张选择。 然而,我们 积极鼓励在Linux上一致实施GPL 根据面向社区的GPL实施原则,我们希望 执法人员成功地使违规者遵守了法律,因此 维护GPL的完整性,以保护用户的自由。
与几位FSF代表一起,卡伦·桑德勒和布雷特·史密斯 在以下方面提供了宝贵的评论、建议和编辑帮助 这份声明的准备。 结果仅表示 金融稳定论坛。
脚注
我们谈论GPL涵盖的程序,但请注意,我们设计了 GPL版本3适用于任何类型的工作,包括 实例硬件设计。 相比之下,GPL版本2是编写的 专门用于程序。
这并不意味着你做的每一件工作 必须明确且仅在GNU下发布可用 GPL。 如果工作的一部分在不同的 与GPL兼容的许可证。
GNU GPL在允许其他人获得 您的副本。 GNU Affero GPL对 将工作提供给其他人。
在GNU GPL和其他一些免费许可下 以一种形式提供给其他人的工作可以触发以下需求 以其他形式提供给其他人。
如果您以前使用的GPL覆盖材料的数量为“de 最小值”,因此对版权来说不重要,那么就没有 关于使用它的要求。
GPL对非源表单的规则对所有人都是一样的 自动转换作品的形式,无论是什么 转换完成。 这包括编译、缩小、, 解析器生成,在另一个编程中生成代码 语言或其他什么。
“系统库”有一个特定的狭义例外,可能 包含在作品的二进制版本中,但从其 源代码。 “系统库”的典型示例是 专有操作系统的专有C库,但 例外情况包括以类似方式分发的其他库。 我们 已经更改了每个GPL版本中的精确异常标准,但 基本思想没有改变。
此外,在某些情况下,我们会维护这些模块 在单独的地址空间中执行,而不是逐字链接 一起紧密沟通,构成一个整体 程序。
如果您想允许某些GPL覆盖的其他用途 工作时,我们建议使用一个明确的语句 其他权限。 对于GPL版本3, 第7节 解释了这些功能。 FSF可以帮助您编写 如果您愿意,可以使用异常语句。
Linux和其他GPL版本2面向社区的实施者 多版权作品使用多种策略来应对 令人遗憾的是,恢复权利从来都不是完全的 完成。 例如,他们主动提出发表公开声明,甚至 协助以后的防御性法律行动,针对以前的违规者 已达成一致,以帮助他们处理其他 可能反对过去侵权行为的版权所有者。 任何人 谁遵循以社区为导向的GPL实施原则(由 软件自由保护协会和自由软件基金会; 看见 https://www.fsf.org/licensing/emplement-principles网站 )是 不太可能仅就过去的违规行为提起诉讼,因为 我们社区的执法是通过以下方式维护用户的自由 一般符合GPL的要求。
同样的原则敦促版权持有人遵守终止协议 GPL版本3的规则适用于GPL版本2下的作品,但正在升级 GPL版本3是确保所有版权所有者都这样做的唯一方法。