GPLv3:黑客们说了什么(更新)
一个月前,当我撰写关于 GNU GPLv3 许可协议的争论时,在评论中引发了热烈的讨论。 鉴于读者们对此事表现出的热情,我认为询问顶级黑客——那些实际参与讨论的人——对此事的看法会很有趣。 因此,我联系了 Richard Stallman 以了解 FSF 的观点,并联系了一群顶级内核黑客——Linus、Alan Cox、Greg Kroah-Hartman、Andrew Morton 和 Dave Miller——以了解他们的看法。
由于这些人都很忙,我并没有期望得到太多回复——如果幸运的话,能得到一两句话就不错了。 但我错了:他们都慷慨地回应了,对 GPLv3 和相关问题提出了令人着迷的评论和见解。 事实上,他们的回复非常详细,以至于无法在此处完整刊登。 相反,我摘录了在我看来每个人提出的一些关键点(对于内核程序员,我遵循了 GPLv3 民意调查中采用的顺序)。 如果您想了解完整的故事,我已经将 Richard Stallman 的详细想法以及 Linux 黑客们收集的智慧放在了其他地方的网上,并在下面的每个部分中提供了单独的链接。
GNU GPL 的目的是为所有用户捍卫定义自由软件的自由。 从开源的角度来看,这没有意义。 这是以我们能想到的最强有力的方式实现自由软件哲学的成果。 因此,所有版本的 GPL 都阻止了中间人通过更改许可证来限制后续用户。 一些自由软件许可证允许这样做,例如 X11 许可证允许这样做。 各种 BSD 许可证也允许这样做。 但是 GPL 专门设计为不允许这样做——您不能添加使程序变为非自由的限制。
现在,我们在 15 年前没有面临的威胁是,通过围绕程序放置技术限制,使程序实际上变为非自由。 这就是 Tivoisation。 Tivoisation 指的是获取一个自由程序并分发它的二进制文件,并且还提供源代码,因为 GPL 要求这样做。 但是,当用户更改源代码并编译它,然后尝试安装更改后的程序时,他会发现这是不可能的,因为机器被设计为不允许他这样做。
这样做的结果是,自由的第一条,即研究源代码并更改它以使程序执行您想要的操作的自由,已经变成了一个幌子。 Tivoisation 本质上是一种形式上遵守要求,但实际上不遵守的方式。
因此,我们得出的结论是,这不仅仅是一个小问题。 如果我们不采取措施阻止它,这将是很常见的,甚至可能是通常的情况。 因此,我们已决定采取必要措施,以确保我们的软件不会被 Tivoised。 我们的目的是向用户交付自由。(更多)
我认为不一定会因此产生很多_实际_后果,因此从这个意义上说,它可能没有那么重要。 这不像我们以前没有过许可证“讨论”(早在九十年代初期,整个 BSD 与 GPL 的口水战似乎持续了多年)。 而且在很多方面,这不像“开源”和“自由软件”心态之间的实际分裂是新的,甚至是由 GPLv3 许可证带来的。
因此,虽然我认为仍然有(诚然非常渺茫的)达成某种协议的机会,但我认为如果我们最终得到 GPLv2 和一个新的且不兼容的 GPLv3,那也不是一场灾难。 这不像我们以前没有过许可证,而且大多数许可证都不兼容。
在某些方面,我甚至可以希望它能消除所有愚蠢的紧张关系,承认存在意见分歧,并且 FSF 甚至可能会停止使用“GNU/Linux”这个名称,最终承认 Linux 从一开始就不是 GNU 项目。
我怀疑真正的缺点只是又一个不兼容的许可证造成的混乱——以及一个共享相同名称的许可证(例如 OSL 和 GPL 都是开源许可证,它们彼此不兼容,但至少它们的名称有明显的区分)。(更多)
根本没有 GNU/Linux 这种东西。 对于像这样的文章,真正重要的是理解和澄清这一点(并且从美国的角度来看,这也是一个商标问题)。
我的意思是,甚至没有一个可以恰当地称为“GNU/Linux”的抽象实体。 这是 FSF 为了试图将自己与 Linux 联系起来而进行的一种公关手段。 通常,这只是他们做的事情之一,人们对此叹息,但是当您查看许可辩论时,这种区别至关重要。(FSF 拥有的代码在 Linux 中也越来越少)
Linux 不是,也从来不是 FSF 的项目。 我想说,大多数内核开发人员都不认同 FSF 的政治议程。 Linus 同样出于务实的原因选择了该许可证,因为它对于操作系统来说是一个很好的许可证,而不是因为他支持 GNU 宣言。
因此,这不是关于 Linux 人员与 FSF 分裂的问题,而是一个单独的项目,恰好被咨询是否愿意使用它选择的许可证的新变体,据称更好。
Linux 确实使用了 FSF 工具,但这并不能使其成为 GNU 项目,就像这篇文章不会因为是在 PC 上键入的而成为 IBM 项目,或者因为使用了 ADSL 线路而成为 BT 项目一样。
Linux 内核采用 GPLv2 并不是我们未来可以看到的问题。 它与在其上运行的应用程序是不同的工作,就像 Windows 内核与 Windows 应用程序一样。 比较棘手的角落案例将是 LGPL 和类似的许可证,您希望获得好处和灵活性。 FSF 已表示他们理解这一点,并将确保它能顺利进行。 许可证是关于设置滥用障碍,而不是使用障碍。(更多)
这个过程还没有结束,我们仍然希望影响事态发展。 否则我们就不会写那封信。 之前没有这样做主要是因为我们只是不认为这会成为一个问题,因为内核不会更改许可证。 但是,当我们越来越意识到这不仅会给内核带来问题,还会影响整个社区时,我们觉得至少应该表达我们的意见。
另外,请注意,DRM 问题随着时间的推移而发生了变化,从非常广泛(至少令人钦佩)变为明确地只针对 Linux 内核。 现在,该许可证的措辞旨在阻止“tivoization”问题。
这就是引导加载程序或 bios 确定内核的加密签名是否可接受,然后再决定是否运行它的地方。 这意味着只有来自公司的“批准”内核才能在硬件上正常运行。
现在,这种限制几乎_只_影响内核,而不影响任何其他类型的程序。 这是因为只有当您可以控制内核时,您才能确保系统是“安全的”。
因此,FSF 似乎只针对 Tivo 问题,我们内核开发人员已公开声明,以这种方式使用_我们的_代码是可以接受的。 因此,他们现在试图告诉另一个群体(我们)我们应该如何处理我们的代码。
由于 FSF 在 Linux 内核中没有任何贡献,并且通常与它没有任何关系,因此我们内核开发人员现在有点不高兴,因为其他人试图告诉我们,我们明确声明可以接受使用我们的代码的方式,突然变得糟糕和错误。(更多)
好吧,天哪。 我们是程序员,我们把时间花在编程上,而不是在会议上闲逛,谈论法律事务和玩弄政治。 我们发现许可之类的事情相当分散注意力,而且很枯燥。 因此,大多数人基本上都忽略了这一切。
直到后来,当事情开始成形,当我们看到事情的发展方向,当我们开始听到各个受影响方的担忧时,才有足够的动力参与进来。
事实上,这指出了现有流程的一个广泛问题:我确信绝大多数实际编写此代码的人都没有向 FSF 表达他们的意见。 然而,FSF 却自以为是地代表他们发言,并计划将他们的工作用作 FSF 运动的弹药。
为什么这些程序员没有表达他们的意见? 有些人很忙。 许多人在律师过多的公司工作,并且害怕他们可能被视为代表他们的公司发言。 有些人英语说得不太好。 几乎所有人都觉得这很枯燥,而且分散注意力。(更多)
对于内核,我非常确定事情会像以前一样继续下去。
问题最有可能出现在 GNU Project 保护伞下的项目中。 这些项目的所有版权,例如 GCC、Binutils 等,都已分配给 GNU Project。 因此,FSF 可以,并且几乎肯定会,使所有这些项目都使用 GPL v3。
顺便说一句,我要指出的是,最初 FSF 过去常说他们希望将版权分配给他们,“以便更容易在法庭上为 GNU Project 保护伞下的软件项目执行 GPL。” 但正如今天所清楚表明的那样,这也是一种权力,因为拥有所有已分配给他们的版权,使得 FSF 可以选择他们认为合适的代码许可,因为他们是完整作品的版权所有者。
在将许可重新分配给这些 GNU Project 源代码树的 GPL v3 时,可能会发生两种情况之一。 要么开发人员对这一点感到满意,即使只是“勉强接受”,事情也会在 GPL v3 下继续进行。 或者,开发人员对此感到不满,并分叉了树的 GPL v2 副本并在那里进行开发。
最终,即使他们已将其版权分配给 FSF,开发人员也确实控制着这些 GNU 项目的最终许可。 如果他们不喜欢 GPL v3 并在 GPL v2 分支上工作,那么 FSF 将会束手无策,因为虽然他们可以强制执行他们喜欢的任何规定,但如果开发人员不想为 GPL v3 变体做出贡献,那么这些规定将毫无用处。
因此,成为从事开发工作的人实际上是一种权力,这种权力渗透到所有政治之中。 如果政治人物做了愚蠢的事情,开发人员可以将其才能和努力转移到其他地方。
我对这个过程非常熟悉,因为我曾是多年前分叉 GCC 编译器项目的团队成员,因为大多数 GCC 开发人员发现首席维护人员 (Richard Kenner) 难以合作。 尽管他对此感到非常沮丧,但 Richard Stallman 和 FSF 对此也无能为力。 最终,该分支再次成为 GNU Project 保护伞下的“真正的 GCC”。
因此,开发人员的意见非常重要,尤其是在许可方面。 如果这些项目中的很多项目都分叉了,情况可能会变得混乱,但是 GPL v3 尚未最终敲定,因此 FSF 仍有时间来解决问题并使其更易于人们接受。(更多)
Glyn Moody 在 opendotdotdot 上撰写关于自由软件和开源的文章。
更新
继我对 Richard Stallman 进行的采访之后,Richard Stallman 提供了以下评论。
虽然我谈到了您提出的主题——GNU 通用公共许可证第 3 版——但 Alan Cox 却选择展示 GNU 和 Linux 历史的误导性画面。
GNU/Linux 系统源于我于 1983 年开始开发的名为 GNU 的完整自由类 Unix 系统的努力。 GNU 是唯一专门为尊重计算机用户自由而开发的操作系统。 由于我们的目标是尽快实现自由,因此我们利用了零散的现有自由软件包。 这仍然给我们留下了大部分需要编写的组件。 在那些年里,我们 GNU 项目系统地开发了这个系统的基本组件,以及许多其他理想的组件,从库到文本编辑器再到游戏。
1991 年,Linus Torvalds 开发了一个名为 Linux 的内核——最初不是自由软件,但他于 1992 年将其自由化。 当时,GNU 系统除了内核外都已完成。 Linux 和 GNU 系统的结合是第一个完整的自由操作系统。 这种结合就是 GNU/Linux。
Cox 说 Linux 不是 GNU 项目的一部分。 这是真的——对于他本人和 Torvalds 一直在开发的内核 Linux 而言。 但 Cox 称之为“Linux”的组合系统更多的是我们的工作,而不是他的工作。
当 Cox 说“FSF 版权代码在 [GNU/Linux] 中只占少数”时,这也是具有误导性的; 他知道只有一小部分 GNU 软件包的代码是 FSF 版权所有。 GNU 软件包在整个系统中占什么部分? 许多软件包与 Linux 一样重要。
1995 年,GNU 软件包占系统的 28%,而 Linux 占 3%。 28% 小于一半,所以这是一个少数; 但它远大于 3%。 如今,在数千个其他团体添加到系统之后,GNU 和 Linux 的百分比都比以前小; 但没有其他项目像 GNU 项目那样贡献了这么多。
将组合系统称为 GNU/Linux 是正确的,因为它认可了 GNU 项目的工作,但有些东西比认可更重要——例如您的自由。 GNU GPL 早于 Linux 开始开发并非偶然。 我们编写 GPL 是为了保护 GNU 用户的自由,我们今天正在对其进行修订,以便它能够抵御更新的剥夺自由的技术方法。 当您考虑 GPL 问题时,这就是它们的背景。
如果 Linux 的开发人员不同意这个目标,他们有权发表自己的观点。 他们有权引用他们的重要工作——Linux,内核——以更多地被倾听,但他们应该尊重我们以同样的方式引用 GNU 系统的权利。
有关更多说明,请参阅 https://gnu.ac.cn/gnu/gnu-linux-faq.html。