“Tivoization”和您在 Copyleft 下安装的权利

2021-07-24 10:57:09

一段时间以来,关于 copyleft 目的的两种思想流派一直存在分歧。简单地说,问题是: Copyleft 许可证主要是为了保护生产电子和软件产品的大公司的权利,还是 Copyleft 主要是为了保护个人用户改进、修改、修复和重新安装他们的软件的权利?这场辩论很快深入复杂的政策问题。在过去几年中,一般性辩论几乎完全集中在用户通过重新安装修改后的版本在他们自己的硬件上有效使用 FOSS 的能力的问题上。从历史上看,这些关于 copyleft 要求的细微政策问题通常只在半公开场合讨论,并且经常成为日常策略的牺牲品:事后政治。最近几个月我意识到,未能正确记录和解释 Copyleft 历史中的关键历史叙述使软件自由激进主义处于不利地位:资源丰富的 Copyleft 违规者及其律师可以利用很少的公共记录中的歧义和混乱来制造虚假叙述并得出法律结论。虽然不应该得出这样的法律结论(没有法院裁决),但公司最近还是相当大声地提出了他们的观点。用赫尔曼和乔姆斯基富有洞察力的措辞,现任权力结构制造同意他们的世界观来为他们的利益服务,仅仅通过成为最响亮和最常听到的声音。特别是在 GPL 等 Copyleft 许可下修复和重新安装权利的保护问题上,我很幸运能够直接观察到许多事件,这些事件现在充当结缔组织来构建这些关于 GPL 的虚假叙述。然而,我承认我没有以足够的方式将这些知识记录下来并向公众传播,这反过来又无意中助长了这些虚假叙述的传播。所以,至少在“用于控制可执行文件的编译和安装的脚本”的问题上,我希望这篇文章可以作为补救措施。我和 Conservancy 的每个人都相信知识透明度,我们努力尽可能提供它。真相会大白。最近关于这个问题的争论集中在遵守 GPLv2§3¶2 的前两句需要什么的问题上,这句话是:作品的源代码是指对其进行修改的作品的首选形式。对于一个可执行的作品,完整的源代码意味着它包含的所有模块的所有源代码,加上任何相关的接口定义文件,加上用于控制可执行文件的编译和安装的脚本。在解释这些术语的历史理解之前,我首先要指出,任何寻求最低限度遵守的公司或律师可能不会优先考虑用户修复其软件的权利。在所有与合规相关的系统中,不良行为者寻求“逐底竞争”。 GPL 等规则类似于环境法规、工作场所安全要求等。对要求的解释越简约,公司越能从只做最低限度的事情中获利。尽管如此,倡导软件自由的组织(例如 Conservancy 自己或 FSF)的目标一直是尽可能清楚地阐明我们对最低要求的看法。我经常想知道这种策略是否有利于软件自由。可悲的是,业界的回答主要是听我们清楚地了解最低要求,然后随着时间的推移努力降低 GPL 合规性标准——即使它需要不准确地引用 FOSS 领导者并在历史上误导公众。最近,业界普遍采用 GPLv2§3¶2 和 GPLv2 下的安装信息参与了这种降低门槛的过程。我在此希望充分解释支持 Copyleft 的拥护者对 GPLv2§3¶2 的解释历史,并探讨那些试图限制用户安装其 GPL 软件修改版本的权利的人的论点的误导。

我于 1997 年开始为 FSF 从事许可和 GPL 执法工作的志愿工作,并于 1999 年正式参与我的第一次 GPL 执法行动。那一年我成为 FSF 的一名员工,并在那里工作到 2005 年。此后我一直隶属于该组织担任各种角色直到我在 2019 年 10 月与 FSF 的最终隶属关系结束。最值得注意的是,我在 2001 年至 2005 年期间担任 FSF 的执行董事。在那段时间里,我领导了 FSF 的 GPL 执法和 Copyleft 教育措施,包括 CLE 课程(2003-2004 年首次教授)。为了准备教授这些课程,我开始编写教程,后来成为 Copyleft 指南。为了开始这项工作,我与 Richard Stallman、Bob Chassell(1980 年代和 1990 年代 FSF 的关键但经常被遗忘的领导者)以及 FSF 的法律顾问一起收集、策划并验证了 GPLv2 的解释和意图。这项努力的众多成果之一是我在 2003-05-09 写了这些话:GPLv2§3 要求源代码包括“元材料”,如脚本、界面定义和其他用于“控制”的材料。编译和安装”的二进制文件。在当时的 GPL 执法行动中,在我们的“完整的、对应的源代码 (CCS) 检查”期间,我们验证了源代码不仅完整,而且与供应商设备上的二进制文件对应,并且我们可以安装软件的修改版本。这是验证 GPLv2 合规性的任何检查的标准部分。 FSF 和 Conservancy 过去和现在都需要通过此检查,然后才能在违规后恢复分发权。 2003 年和 2004 年,我与当时的 FSF 律师(Daniel Ravicher)代表 FSF 向律师教授这一立场时,这一立场并没有引起争议。尽管如此,今天,许多人都认为 GPLv2§3¶2 的这种解释和意图是最近出现的新现象,而不是所有 Copyleft 激进分子至少 18 年以来一直持有的立场。今天,大多数公司和律师争辩(错误地,IMO)用户无权重新安装他们的 GPLv2 软件。甚至在教授这些 CLE 课程之前,作为(当时的)FSF 的执行董事,我领导了针对 TiVo 的 GPLv2 执法工作。我经常看到那些对这个主题只略知一二的人会跳出关于该执法行动的不准确结论,而这些结论往往很适合他们的政策议程。我在此讲述了关于 TiVo GPLv2 违规的整个历史以及它如何导致“tivoization”言论。由于这种说法通常被视为决定性的真实性,即 GPLv2 不能确保用户通过重新安装修改后的 GPLv2 软件来修复的权利,我们应该检查支持这种说法的实际事实,并检查其他人对基于 GPLv2 的结论在上面。首先,TiVo 的 GPL 违规最初与 GPLv2§3¶2 没有任何具体关系。 TiVo 从未提出任何不遵守该部分的意图。事实上,据我所知,TiVo 从未对 FSF 对该部分的解释提出异议或不同意。最初的违规是标准的 GPLv2§3(b) 违规,其中 TiVo 设备的某些分发版提供了无法成功执行的源报价。 (当时)代表FSF,我在2002-06-11联系TiVo提出这个问题,TiVo回应积极,表示他们想解决这个问题。按照所有 GPL 执法事项的惯例,我和我(当时)的团队进行了尽职调查以验证完全合规,包括 GPLv2 下的任何其他潜在问题。最后,我的 FSF 同事 (David Turner) 和我对 TiVo 的软件进行了 CCS 检查。特纳和我当时使用的程序、标准和解释与丹佛和我今天在 Conservancy 使用的完全相同。据我所知(基于最近与 FSF 员工的个人对话),当 FSF 现在很少有机会执行 GPLv2 强制执行时,FSF 仍然使用这些相同的程序、标准和解释。一旦 GPLv2§3(b) 违规得到解决,特纳和我发现——就像我工作过的数百个 GPL 合规问题中的几乎每一个一样——“用于控制编译和安装的脚本可执行文件”是不完整的。当确定这一点时,TiVo 的解决方案实际上是同意这样的解释,即此类说明是强制性的并且必须提供,并且他们提供了这些说明。据我所知,TiVo 完全符合 GPLv2,包括包含 GPLv2 要求的安装说明。由于我们的执法行动,人们能够在他们的 TiVo 机器上重新安装 Linux;关于如何在 TiVos(那个时代)上利用 GPL 重新安装权限的社区资源仍然很容易获得!在 0 时,TiVo 在提供 GPLv2 要求方面做正确的事情——包括在实际设备上重新安装 GNU 和 Linux 软件的能力。请记住:此强制措施以及由此实现的合规性发生在 GPLv3 流程开始前几年。

那么,TiVo 做了什么令人反感的事情? Stallman 开始起草 GPLv3 以阻止 TiVo 在 GPLv2 下进行的行为是什么?并不是像其他人普遍误报的那样,TiVo 禁止重新安装“GPL 软件”本身。据我所知,TiVo 从未阻止过这种重新安装。没有人参与其中,包括我、Stallman、TiVo 或当时 FSF 的任何人都相信 GPLv2 允许 TiVo 保留 GPL 软件本身的安装信息。 FSF 要求 TiVo 为其用户提供重新安装 Linux(以及其他 GPL 软件,例如 GNU bash)的能力。 TiVo 后来所做的,一些软件自由活动家(包括 Stallman)认为令人反感的是,TiVo 设计了 ​​GPLv2 软件的重新安装过程,导致专有 TiVo 应用程序停止运行。我记得当 TiVo Series 3 于 2006 年年中发布时,人们对此进行了广泛讨论,我的理解是所有 Series 3 设备都具有这种特殊的反功能。 (有传言称,部分 Series 2 也有此反功能,但并非所有型号。)换句话说,如果您决定为 TiVo 设备修改 Linux 副本并重新安装 Linux,TiVo 用户空间应用程序将意识到密码锁定已被破坏,并且专有软件将不再起作用。通过在 GPLv2 下行使您的重新安装权,您可以将您的 TiVo DVR 变成带有一些视频处理设备的独立服务器。您可以使用 Kodi(当时有不同的名称)将以前的 TiVo 转换为 FOSS DVR,但是您无法使用 TiVo 的专有 DVR 软件——可能是永久的。大多数人当然都听说过 Richard Stallman 在 GPLv3 过程中流行的负面术语“tivoization”——与 TiVo 系列 3 的发布同时期。尽管如此,我还是要求 Stallman 不要使用这个词——无论是当时还是之后的很多次。我仍然不同意 Stallman 在保留专有用户空间功能这一狭隘问题上的政策立场。具体来说,我只是认为,在升级您的 Copyleft 软件后,与 Copyleft 软件“仅仅聚合”在一起的专有软件(使用 GPLv2 的术语)是否继续运行并不重要。我觉得并且仍然觉得打破(“仅仅聚合”)专有软件(GPLv2 允许)实际上是更好的策略。我的政策观点是,这种破坏激励并鼓励用户在重新安装 FOSS 操作系统后为用户空间应用程序安装 FOSS 替代方案。尽管如此,Stallman 发现这种做法(使用加密锁定来强制专有软件失败)是非法的。他公开指出 GPLv2 并没有阻止这种行为,并希望(并编写,如下所述)禁止这种行为的 GPLv3 草案。直到今天,我仍然感到沮丧的是,在 GPLv3 起草过程中,许多支持 GPLv3 的倡导者认为暗示他们没有基础相信 GPLv2 是正确的想法是合适的。我们都知道,早在 GPLv3 起草开始之前,GPLv2 中有一个明确的安装要求——“安装”这个词出现在显眼位置。我为 FSF 开发的培训材料(如上所述)在使用它们教授 CLE 课程之前经过了 Stallman 和 FSF 的法律顾问的审查。如果有人有不同的印象,那肯定是由于当时激进的“GPLv3 好得多”的言论而造成的误解。与此同时,关于 GPL 下的密码学锁定的大部分争论都围绕着披露特定授权密钥的问题展开。据说 GPLv2 没有强制要求公开任何特定的授权密钥,这可能是正确的。经常没有说的(显然是为了让 GPLv2 看起来比实际更弱)是 GPLv2 确实仍然需要的:一种不公开授权密钥的功能性安装方法。例如,在我个人看来,它完全符合 GPLv2,只需禁用安全启动链,不提供返回供应商提供的加密签名固件 1 的路径,并允许用户仅重新安装 GPLv2'd设备上的组件 — 永远不会返回到库存供应商固件。我怀疑 GPLv3 会禁止此类限制,因为 GPLv3 明确要求您不仅要提供可行的安装路径(就像 GPLv2 一样),而且 GPLv3 还要求披露授权密钥。我们可以争论这种 GPLv3 下的 Copyleft 扩展是否是好的政策。没有争议的是一个简单的概念:在许可文件的后期修订中添加更多要求不会改变旧文件中的意图或长期要求。即使原始文档的作者出于营销或其他原因选择稍后诋毁他们自己过去的工作,也是如此。事实证明,从历史上看,我们知道 GPLv2 的意图是因为它的作者 Richard Stallman 广泛地谈论了他通过创建 GPLv2 想要实现的目标。回到 1990 年代初,与 GPLv2 的出版同时期,Stallman 本人一直非常喜欢讲述他使用损坏的 MIT 打印机的经历,为此他请求提供源代码但没有收到。 Stallman 并没有这样结束这个故事:“我真正想要的是获得那台打印机的源代码,这样我就可以从头开始构建自己的打印机,然后编译并在新打印机上重新安装该打印机软件”。不,Stallman 很清楚他的目标是修复 MIT 已经拥有的打印机上的错误,使用相同打印机的源代码。 Stallman 预计打印机的源代码将包含足以让他重新编译软件并将其重新安装到同一设备上的信息。那个时代的大型打印机只是尺寸不寻常的嵌入式设备。它们与我们今天拥有的电视、无线路由器和数十种其他基于 Linux 的嵌入式设备只有细微的技术差异。计算机在以前很大时今天很小,但它们的功能和基本操作方法没有改变。安装意味着安装。安装意味着现在安装。 FSF、保护协会、我见过的每一个软件自由活动家和每一个合法的版权理论家仍然同意这一点! GPLv2 的意图很明确并且一直是:允许将 GPL 软件的修改版本重新安装到您最初获得计算机时安装二进制文件的同一位置,并从中受益改变。暗示 Stallman 在编写 GPLv2 时所指的不是这个意思是荒谬的。尽管如此,反对用户有权修复他们的软件的人坚持认为 GPLv2 并非有意如此。我们在 Conservancy 经常听到它; GPL 违规者经常向我们发送最近编译的 FSF 精选评论档案——引用(甚至错误引用)完全脱离上下文——旨在“证明”FSF 不希望用户修复包含 GPLv2 软件的嵌入式设备。当这份档案开始流传时,我与 FSF 的关系已经结束,所以我们做了任何有理智的人都会做的事情:我们要求 FSF 直接为我们澄清他们的意见。

大约一年前,即 2020 年 5 月,Conservancy 与 FSF 的执行董事 (John Sullivan)、FSF 的许可和合规经理 (Donald Robertson) 以及 FSF(当时的)法律顾问 (Marc Jones) 合作,提出了询问的机会。针对侵犯 GNU Bash 和 Linux 版权的恶意和故意违规者的联合 GPLv2 执法事项。 (违规者使用的是 GPLv2 的 Bash 分支。)然后我们借此机会重申了我们对 GPLv2 已有 18 年历史的解释的共同理解。我们详细讨论了这个问题,并确认每个人的理解与之前的 FSF 立场(至少)18 年前保持不变。在我们的讨论结束时,在 2020 年 5 月 11 日,我写信给沙利文说:“我只想总结一下我认为我们在上周五电话中的共同看法。如果您能确认我的总结是正确的,我们将使用以下内容作为我们对 [那些目前正在询问此问题的人] 的回应的基础:” GPLv2 对保留重新安装的能力没有任何具体要求在嵌入式系统上以专有软件为中心的供应商提供的固件(即使此类固件包含一些 GPLv2 的作品),前提是下游用户(即,拥有设备的消费者)可以构建、安装和(重复且成功地)重新安装仅包含 Copyleft 组件(例如 Linux+Bash)的固件。约翰在 2020 年 5 月 13 日回复:“布拉德利,我们建议只做一些小的调整:”GPLv2 对保留重新安装以专有软件为中心的供应商提供的固件的能力没有任何具体要求(即使此类固件在嵌入式系统上包含一些 GPLv2 的作品),前提是下游用户(即拥有设备的消费者)可以构建、安装、运行和(重复且成功地)重新安装至少包含 Copyleft 组件的固件(例如Linux+Bash)。如您所见,Sullivan 主张包含“run”一词(不可否认,我不小心没有将其包含在我的原始草案中!)。这是一个很好的补充,Sullivan 的陈述与我 2003 年在 FSF 工作时所支持的历史解释完全吻合。事实上,它给我读的内容几乎与 Chassell 在 1990 年代为 FSF 做志愿者时最初教给我的内容完全相同。此外,上面 Sullivan 的引述与我在 FSF 期间一直与 Stallman 审查的立场相匹配,直到我在 2019 年与 FSF 的关系结束。因此,如上所述,FSF 在安装问题上的立场...... ....