自由系统发行版指南(GNU FSDG)
本指南的目的是解释一个可安装的系统发行版(例如 GNU/Linux 发行版)如何才能被视为自由(libre),并帮助发行版开发者使其发行版符合要求。
本指南并不完整。我们已经提到了目前已知的问题,但我们确信还有更多。当我们遇到时,我们会添加它们。
我们要感谢 Fedora 项目在制定这些政策方面的帮助,并允许我们使用其自身的发行版许可指南作为本文档的基础。
本页面由自由软件基金会的许可和合规实验室维护。您可以通过向 FSF 捐款来支持我们的工作。
您可以使用我们的出版物来了解 GNU 许可证的工作原理,或帮助您倡导自由软件,但它们不是法律建议。FSF 不能提供法律建议。法律建议是来自同意为您工作的律师的个性化建议。我们的回答针对一般性问题,可能不适用于您的特定法律情况。
这里没有解答您的问题?请查看我们其他的许可资源,或通过 [email protected] 联系合规实验室。
完整的发行版
我们的发行版列表是您可以安装在计算机上的系统的指南。因此,它仅包括自身完整且可随时使用的发行版。如果一个发行版不完整——如果它需要进一步开发,或预设安装其他软件——那么它不会在此列出,即使它是自由软件。
特别是,一个自由系统发行版应该能够自我托管。这意味着您必须能够使用系统提供的工具开发和构建系统。因此,一个自由系统发行版不能包含只能通过使用非自由软件构建的自由软件。
对于小型系统发行版,我们对此要求进行例外处理。小型系统发行版是为资源有限的设备设计的发行版,例如无线路由器。自由小型系统发行版不需要自我托管或完整,因为在此类系统上进行开发是不切实际的,但它必须能够在我们发行版列表中的自由完整系统发行版之上进行开发和构建,可能需要小型系统发行版本身分发的自由工具的帮助。
许可证规则
“实用信息”包括软件、文档、字体和其他具有直接功能应用的数据。它不包括具有美学(而非功能性)目的的艺术作品,或意见或判断的陈述。
自由发行版中的所有实用信息都必须以源代码形式提供。(“源代码”是指首选用于对其进行更改的信息形式。)
该信息和源代码必须在适当的自由许可证下提供。我们会评估特定的许可证,并在我们的许可证列表中列出我们的决定,其中针对适用于软件、文档、字体和其他有用作品的许可证分别设有单独的部分。如果此类作品在多个许可证的并列下发布,只要其至少一个许可证是自由的,则该作品就是自由的;系统开发者在分发和/或修改它时应遵循适用的自由许可证条款。
一个自由系统发行版不得引导用户获取任何非自由的实用信息,或鼓励他们这样做。该系统不应有非自由软件的存储库,也不应有安装特定非自由程序的特定方法。发行版也不应引用不承诺仅包含自由软件的第三方存储库;即使他们今天只有自由软件,明天也可能不是这样。系统中的程序不应建议安装非自由插件、文档等。
例如,一个自由系统发行版不得包含实现 EME 的浏览器,EME 是旨在加载 DRM 模块的浏览器功能。
一些非自由发行版提供了一个排除非自由软件包的安装选项。这个选项是一个进步,因为它使得避免它们变得更加容易,前提是发行版对该选项的实现完全正确。但是,非自由软件包仍然包含在发行版中。此外,我们知道大多数用户并没有强烈致力于软件自由,并且不会仅仅因为它们是非自由的就拒绝看似方便的软件包。实际上,将这些发行版之一列为自由发行版主要会导致人们安装非自由软件。出于这些原因,我们不列出它们。
今天,大多数自由系统发行版中都有大量的代码;直接审计所有代码所需的工作量对于大多数团队来说是不切实际的。过去,一些非自由代码曾意外地包含在自由系统发行版中。我们不会因此而取消发行版;相反,我们只要求发行版的开发者真诚地努力避免包含非自由软件,并承诺在发现任何此类程序时将其删除。
对于创建或考虑自由软件发行版的人们来说,某些类型的许可证情况值得特别关注;以下各节将讨论这些情况。
非自由固件
某些应用程序和驱动程序需要固件才能运行,有时该固件仅以目标代码形式,在非自由许可证下分发。我们称这些固件程序为“二进制 blob”。在大多数 GNU/Linux 系统上,您通常会发现这些固件与内核 Linux 中的某些驱动程序一起出现。应从自由系统发行版中删除此类固件。
Blob 可以采用多种形式。有时,它们会以单独的文件提供。其他时候,它们可能被合并到驱动程序本身的源代码中——例如,它可以被编码为大量的数字数组。但是,无论它如何编码,任何非自由固件都需要从自由系统中删除。
(需要明确的是,驱动程序中的并非每个数字数组都是固件。在决定数据是否适合自由系统之前,了解数据的用途非常重要。)
Brian Brazil、Jeff Moe 和 Alexandre Oliva 开发了一系列脚本,用于从 Linux 内核的库存版本中删除非自由固件。如果您想开发自己的自由 GNU/Linux 发行版,您可能会发现它们很有用——尽管我们建议加入现有自由发行版的开发,而不是通过启动新的发行版来分散精力。无二进制 blob 版本的 Linux 内核的完整源代码也可用;您可以从自由软件目录中了解有关此项目的更多信息。
非功能性数据
非功能性数据,即不执行实际工作的数据,与其说是系统软件的一部分,不如说是系统软件的装饰。因此,我们不坚持对非功能性数据采用自由许可证标准。只要其许可证允许您出于商业和非商业目的复制和再分发,它就可以包含在自由系统发行版中。例如,一些在 GNU GPL 下发布的 Game Engine 具有随附的游戏信息——虚构的世界地图、游戏图形等——在这样的逐字分发许可证下发布。这种数据可以成为自由系统发行版的一部分,即使其许可证不符合自由的要求,因为它不具有功能性。
商标
商标与某些软件相关联。例如,程序的名称可能会被注册为商标,或者其界面可能会显示商标徽标。通常,对这些标记的使用将受到某种方式的控制;特别是,通常会要求开发人员在修改软件时从软件中删除对商标的引用。
在极端情况下,这些限制可能会有效地使程序变成非自由的。如果商标分散在整个原始源代码中,那么要求您从修改后的代码中删除商标是不公平的。但是,只要实际要求合理,自由系统发行版就可以包含这些程序,无论是否带有商标。
同样,发行版本身可能持有特定的商标。如果修改需要删除这些商标,只要它们可以轻易地删除而不会失去功能,这不是问题。
但是,使用商标来限制整个发行版或任何部分的逐字复制和再分发是不可接受的。
文档
自由系统发行版中的所有文档都必须在适当的自由许可证下发布。此外,它必须注意不要推荐非自由软件。
一般来说,帮助已经使用非自由软件的人更好地使用自由软件是可以接受的,但鼓励自由软件用户安装非自由软件则不可接受。
例如,一个自由系统发行版可能具有为用户设置双启动系统的文档。它可以解释如何访问专有操作系统的文件系统、从中导入设置等。这将有助于人们在已经安装了专有软件的机器上安装自由系统发行版,这很好。
不可接受的是,文档向人们提供在系统上安装非自由程序的说明,或提及他们通过这样做可能获得的便利。
对于临界情况,明确且严肃地劝诫不要使用非自由软件,会使其越过界限,成为可接受的。
专利
对于自由软件的开发者和发行者来说,要了解某个给定的软件是否侵犯了任何专利实际上是不可能的:专利太多了,它们在不同国家之间有所不同,它们的措辞通常使得很难判断它们涵盖或不涵盖什么,而且也不容易判断哪些专利是有效的。因此,我们通常不要求自由系统发行版因为可能存在的专利威胁而排除某些软件。另一方面,如果发行者选择省略某些软件以避免专利风险,我们也不会反对。
无恶意软件
发行版必须不包含 DRM、后门和间谍软件。
承诺纠正错误
大多数发行版开发团队没有足够的资源来详尽地检查他们的发行版是否满足所有这些标准。我们也没有。因此,我们预期发行版偶尔会包含错误:溜进来的非自由软件等等。我们不会因为错误而拒绝一个发行版。我们的要求是发行版开发者坚定地承诺及时纠正任何报告给他们的错误。
维护
要被列出,一个发行版应该被积极维护,并应该给 GNU 项目提供一个清晰且明确的方式来报告我们发现的非自由软件问题。它还应该在我们报告的问题得到修复时通知我们。
名称混淆
我们不会列出名称容易与非自由发行版混淆的发行版。例如,如果 Foobar Light 是一个自由发行版,而 Foobar 是一个非自由发行版,我们将不会列出 Foobar Light。这是因为我们认为,在传达信息的过程中,两者之间的区别将会丢失。
特别是,自由发行版的主要名称(在这个例子中是“Foobar”)不应该是任何非自由发行版名称的一部分。
有些人曾想在自由发行版的名称中添加“GNU”来将其与非自由发行版区分开来。这有两个问题。首先,这两个名称不会有足够的不同,因为两个名称中的主要词将是相同的。
其次,这会助长对“GNU”含义的误解。GNU是一个操作系统,通常与Linux作为内核一起使用,而且基本上所有所谓的“Linux”发行版实际上都是 GNU/Linux 发行版。在这种情况下,两个版本都是 GNU/Linux,而在其中一个版本的名称中省略“GNU”将会产生误导。
如果你是下游,请联系上游
对于向 GNU 软件包发送了重要错误报告的发行版开发者(或任何其他人):如果在合理的时间后(请至少等待两周)软件包维护者没有理会,您可以将错误升级,通过写信给 <[email protected]>。如果您找不到软件包维护者最近活动的证据,则尤其有理由这样做。
请向用户教授关于自由软件的知识
要建立持久的自由,仅仅给予用户自由是不够的。还需要教会他们理解自由的含义并要求自由。因此,我们建议并敦促自由发行版在登录前和登录后的默认桌面上显著地声明关于自由的醒目声明,例如“此系统是尊重自由的自由/开源软件”,或者类似的说法,并提供一个指向 gnu.org 或 gnu.org/philosophy 的链接或图标,以获取有关此问题的更多信息。
请避免重复宣传和混淆
请参阅我们的应避免使用的词语列表,这些词语要么带有偏见、要么误导或令人困惑,并尽量在您的公开声明和与公众的讨论中避免使用它们。
最后说明
我们维护一个我们所知的自由 GNU 系统发行版列表。如果您知道未列出的自由发行版,请让其开发者写信给 <[email protected]>,说明他们的系统并提供其网页链接。
我们也在相同的伦理条件下列出自由的非 GNU 系统发行版。
如果您对这些指南本身有任何疑问或意见,请随时发送至 <[email protected]>。我们希望它们能帮助所有人更好地理解对自由系统发行版来说重要的问题,并且我们期待在未来推广更多这样的发行版。