关于 LKM 的一个长期存在的问题是,考虑到 Linux 内核是在 GPL 许可下发布的,GPL 的条款是否适用于 LKM。例如,以仅二进制形式发布 LKM 是否可以?本节涵盖了围绕 LKM 的版权问题,这些问题既有趣又复杂。预先警告:我们不会得出结论。法律尚未确定,并且存在许多良好但相互冲突的论点。
请记住,各个国家/地区的版权法各不相同,因此即使您在一个国家/地区找到了问题的答案,在另一个国家/地区也可能有所不同。但是,版权法实际上非常相似,本节不会详细介绍到真正产生差异的程度。
让我们从头开始,看看什么是版权。
首先,版权是某人阻止其他人复制某些内容的权利。这是一项法律权利,而不是道德权利。这意味着它是通过法律创建的,目的是产生一些实际效果,而不是人们认为人们自然有权享有的东西。
版权旨在实现的主要效果是,作者因其创作的内容而获得报酬。有些人认为这本身就是一个有效的目标,因为作者对其创造的价值拥有天然的权利。但从历史上看,这并不是版权的真正目标。真正的目标是作者因其作品获得报酬的次要目标:它促使作者首先进行创作。如果作者能因此获得报酬,他就更有可能花时间和金钱进行写作。
版权法的实际运作只是近似地实现了这个目标。我们都见过这样的情况:法律被用来转移财富,但对这个目标根本没有贡献。例如,音乐出版商拒绝某人复制一首他本来就不会付费购买的歌曲的许可。立法者认为这是附带损害——版权法为促成作品创作所做的一切弥补了其他情况下毫无意义的复制限制。
但是,当涉及到 LKM 时,版权法中还有一个更复杂得多的领域很重要:衍生作品。版权法赋予作者阻止他人创作衍生作品的权利。衍生作品不是作者所写任何内容的副本。那么,它是什么呢?
衍生作品的定义难以捉摸,但这里有一些例子:当您将一本书从英语翻译成法语时,法语版本是英语作品的衍生作品。如果您为小说写一个新的章节,那么您的新章节就是该小说的衍生作品。如果您为《哈利·波特》系列写一本全新的书,其中包含相同的角色和背景设定,那么这就是所有《哈利·波特》书籍的衍生作品。如果您在生日贺卡上画了一张您想到的呆伯特漫画,那就是所有呆伯特漫画条、书籍等的衍生作品。
这就把我们带到了 LKM,因为许多人认为 LKM 是 Linux 内核的衍生作品。自由软件基金会就是这么说的。Linus Torvalds 也曾说过有时是。没有任何法院对此做出过裁决。
现在让我们转向 Linux 的版权。为了讨论方便,当我们说“Linux”时,我们指的是您从 kernel.org 下载的作为常规 Linux 内核的 tarball 的内容。
谁拥有 Linux 的版权?很多人。几乎每个为 Linux 贡献代码的人都保留了自己的版权。其中一些工作是受雇完成的,因此雇用公司拥有版权。Linus Torvalds 是最显眼的版权所有者,但他只拥有 Linux 中非常小一部分的版权。
这些人如何执行他们的版权?嗯,没有人与他们达成协议购买复制权。这不切实际。但是,他们都向公众提供版权许可——相同的许可。该许可证记录在 tarball 中的一个文件中并提供,被称为通用公共许可证 (GPL)。GPL 并非 Linux 特有。它是由自由软件基金会在 Linux 存在之前开发的,并且在 Linus 还是唯一的版权所有者时就被 Linus 选中了。而且,如果没有作者提供相同的许可,Linus 不会将任何代码放入 tarball 中。
版权许可是版权所有者允许您做一些他有合法权利阻止您做的事情,例如制作副本或衍生作品。公共许可证的含义是它提供给公众,而不是版权所有者将其提供给他所认识的特定人员。
GPL 允许您对代码执行几乎任何操作——几乎就像版权所有者放弃了他们所有的版权权利。但并非完全如此:附带了条件。许可证有条件。为了获得许可,您必须满足这些条件。我们在这里关心的条件是以下两件事之一,或者两者兼而有之,这取决于您如何阅读许可证文档(该文档模棱两可)。要么 a) 如果您分发 Linux 的衍生作品,您必须提供整个衍生作品的源代码;要么 b) 如果您分发包含 Linux 的作品,您必须提供整个作品的源代码。
现在我们来到了真正的问题:您拥有哪些权利来分发您编写的 LKM?
当然,许多人认为您可以在您喜欢的任何条款下分发 LKM,包括仅二进制形式,并且 Linux 版权的所有者对此无权置喙。您分发的只是您自己的代码。它也不是任何东西的衍生作品。许多人确实分发仅二进制的 LKM,并认为 LKM 的主要好处是可以做到这一点。
其他人则有不同的看法:LKM 虽然是原创作品,但却是 Linux 的衍生作品。Linux 版权所有者有权控制分发。他们给您的唯一分发许可是 GPL,而该许可的条件是您提供源代码。
让我们更仔细地看看 LKM 是否是 Linux 的衍生作品这个问题。赞成方的论点是,编写 LKM 就像为小说编写补充章节。我们知道后者是创作衍生作品。LKM 就像章节,因为它专门设计为与现有的 Linux 内核成为一个整体的一部分。它在任何其他上下文中都没有用处,并且在部署时,会紧密地编织到 Linux 的其余部分中。您通常使用大量 Linux 头文件来编译它这一事实证明,它只是 Linux 的扩展(不要将此与另一个论点混淆——即 #include 实际上意味着您正在对象代码中分发该头文件)。请注意,运行时加载的内核模块与您选择静态绑定到基本内核的程序本质上是相同的。如果为 Linux 源代码树编写模块是创作衍生作品,那么编写 LKM 也一定是。LKM 经常需要更新以符合基本内核的更新。
Wasabi Systems 是一家销售比 Linux 许可更宽松的内核的公司,它发表了一篇论文,更详细地论证了 LKM 是 Linux 的衍生作品,因此您应该警惕为其发布仅二进制的 LKM。
反驳方的论点是,LKM 是与 Linux 交互的东西,而不是 Linux 的一部分。它将 LKM 比作用户空间程序,通过系统调用与内核通信,或者 FTP 客户端程序(它不会是任何 FTP 服务器程序的衍生作品)。
这个问题还涉及书籍和计算机程序不相似的领域之一,因为计算机程序会做一些事情,而书籍只是向人传达一个想法。加载 LKM 可能更像是将附件插入真空吸尘器,而不是像将页面插入您的书中。我们知道,真空吸尘器附件的蓝图不是真空吸尘器蓝图的衍生作品。
这就是我能做的全部了。这里似乎存在程度问题,法官将不得不在某个地方划一条线。
但是,如果您需要做出实际的决定,请考虑多年来一直存在着著名的二进制 LKM(Nvidia 视频适配器的驱动程序似乎是最著名的),但没有人因此提起版权侵权诉讼。此外,Linus Torvalds,出于法律以外的其他原因具有影响力,曾表示仅二进制的 LKM 他是可以接受的。
那么 GPL-ONLY 符号呢?内核开发人员选择了一些在将 LKM 连接到基本内核时使用的符号作为 GPL-only。这些符号的名称中带有“GPL_ONLY”,使这种意图显而易见。此外,为了让 Linux 模块加载器允许您的 LKM 使用它们,您必须在 LKM 中包含一些代码,据称证明您根据 GPL 许可您的模块。
这些可能没有法律意义。如果 LKM 不是 Linux 的衍生作品,那么内核开发人员根本没有合法的途径阻止您将 GPL 注释放入您的代码中并以仅二进制形式分发它。如果 LKM 是 Linux 的衍生作品,那么符号的 GPL-only 分类的缺失可能不足以授予在仅二进制 LKM 中使用它的许可。许可证文档没有提及它们。充其量,您可以将 GPL-only 符号用作君子协定,承诺不会因您在仅二进制 LKM 中使用所有其他符号而起诉您。