自由系统发布指南(GNU FSDG)
本指南的目的是解释什么是一个可安装的系统发布(象GNU/Linux发行版),以及发布怎样才符合自由的要求,还包括帮助开发者使其发行版符合自由的要求。
本指南并不完备。我们讨论了目前已知的问题,但是肯定还有更多其他问题。我们会在遇到问题时不断添加进来。
我们感谢 Fedora 项目对这些政策的专注,也感谢他们让我们使用其许可证指南作为本文档的基础。
本页由自由软件基金会的许可证和合规实验室维护。你可以通过向 FSF 捐款 支持我们的工作。还有疑问?请查看其他 许可证资源 或者通过 licensing@fsf.org 联系合规实验室。
完整发行版
我们所指的发布是可以安装到电脑的系统。所以,它只包括完整的、可用的发行版。如果一个发行版不完整——它需要进一步开发,或者要求预先安装其他软件—那么它不包括在此,即使它是自由软件。
自由系统发布应该是自托管的。就是说,你必须能够利用系统提供的工具来开发和构建这个系统。作为结果,自由系统发布不能包含只能由非自由软件构建的自由软件。
本要求以及以上自托管的要求对 小系统发布 例外,小系统发行版针对资源有限的设备开发,比如无线路由器。因为给这些设备设计完备或自托管系统并不实际,所以它们不必遵守以上要求,但是它们必须可以在我们列出的自由完备系统发布上开发和制备,或许还需要和小系统发行版一起发行的自由工具的支持。
许可证规则
“实际使用的信息”包括软件、文档、字体和其他有直接功能的数据。它不包括美化(而不是功能)目的的艺术工作,也不包括意见或判断。
所有的实际使用信息都必须有源文件形式可用。(“源文件”表示信息的形式有利于对它做修改。)
信息和源文件必须按照合适的自由许可证提供。我们评价了一些特定许可证并将我们的决定列在许可证列表处,其中专门列出了适用于软件、文档、字体和其他有用工作的许可证。如果信息和源文件按照分离的许可证发布,只要其中至少有一个自由许可证,那么发布就是自由的;系统开发者应该依照其中的自由许可证来发布或修改信息和源文件。
自由发行版一定不能为了实用而引导用户获取任何非自由信息,也不能鼓励用户这么做。该发行版不应该带有非自由软件的资源库或安装非自由软件的指导。该发行版也不应该指向不承诺只包含自由软件的第三方资源库;即使它们目前只有自由软件,将来也可能会变化。该发行版的程序不应该推荐安装非自由的插件、文档等等。
比如,一个自由发行版一定不能有实现EME1功能的浏览器,该功能就是为加载DRM2模块而设计的。
有些非自由发行版会提供排除非自由软件包的选项。这个选项是一个进步,因为它让人们更容易避免非自由软件,前提是该选项的实现完全正确。不过,非自由软件包还是包含在这个发行版里了。此外,我们了解大多数用户并不是非常坚持软件自由,他们不会因为非自由而拒绝看起来还不错的软件包。说实话,把这些发行版列在自由发行版的行列大概会人安装非自由软件。因此,它们没有被列出。
今天,大多数自由系统发行版都有很大的代码量;要直接审核它们对大多数团队是不实际的。过去,有些非自由软件意外地被包括在某些自由系统发行版中。我们并未因此将这些发行版排除在自由系统发行版的列表之外;我们只是要求这些发行版的开发者尽力避免非自由软件,并承诺一旦发现有非自由程序就移除。
有些许可证情况值得那些创建或考虑创建自由软件发行版的开发者特别注意;以下章节会讨论它们。
非自由固件
有些应用和驱动需要固件才能工作,而有时该固件只以目标代码的形式发布,其许可证也是非自由的。我们称这些固件为“blobs”。在大多数GNU/Linux系统中,你会发现它们在Linux内核中和某些驱动软件一起发布。这些固件应该要从自由的系统发行版中被移除。
Blobs有很多形式。有时,它们以单独的文件提供。有时,它们结合在驱动软件自身的代码中—比如,它们可能以大数组的形式编码。但是,无论如何编码,任何非自由的固件需要从自由系统中移除。
(澄清一下,不是驱动中的每个数组都是固件。在决定自由软件中的数组是否恰当之前,很重要的一点就是要理解其目的。)
Brian Brazil、Jeff Moe和Alexandre Oliva为官方的Linux内核版本开发了一系列移除非自由固件的脚本。如果你要开发自己的自由的GNU/Linux发行版,它们会很有用—虽然我们的建议是加入已有的自由发行版的开发,而不要分散精力去开始一个新的发行版。也有完全不含非自由blob的Linux内核版本;你可以在自由软件目录学习更多关于该项目的知识。
非功能性数据
非功能性数据不执行实际的工作,只是作为软件的装饰而非软件的部件。所以,我们不坚持对非功能性数据应用自由的许可证。只要其许可证允许你复制和再发布,这些数据可以包含在自由系统发行版中,商用和非商用都行。比如,有些按GNU GPL发布的游戏引擎会带有游戏信息—虚拟世界的地图、游戏图形等等—它们以全文复制许可证发布。此类数据可以作为自由系统发行版的一部分,因为它们是非功能性的,即使其许可证不是自由许可证。
商标
有些软件带有商标。例如,程序的名称可能是商标,或者其界面会显示商标标识。通常,使用这些商标会受到某种限制;在个别情况下,开发者会被要求从他们所修改的软件中删除商标的引用。
在极端情况下,这些限制会使该程序实际上变成非自由软件。如果商标散布在整个源代码里,那么让你在修改程序时移除它们有失公允。不过,如果实际的要求是合理的,自由系统发行版可以包含这些程序,无论是否带有商标。
类似地,发行版自己也可以带有特定的商标。如果移除商标不会影响功能,那么要求修改版移除商标就不是问题。
但是,使用商标来限制逐字复制和重新发布整个发行版或其一部分是不可接受的。
文档
自由系统发行版的所有文档必须使用适当的自由许可证来发布。另外,它还必须注意不能推荐非自由软件。
一般地,帮助非自由软件用户更好地使用自由软件是可接受的,但是鼓励自由软件用户安装非自由软件是不可接受的。
例如,自由系统发行版可以有帮助用户设置双启动系统的文档。它可以解释如何访问专属操作系统、导入其设置等等。这些可以帮助人们在已有专属软件的计算机上安装自由系统发行版,这是一件好事。
向人们阐述如何在该系统上安装非自由软件的指导文档或者论及这样做可能会带来方便是不可接受的。
作为界限,明确和严肃地告诫用户不要使用非自由软件就是站在可接受的一边。
专利
自由软件开发者和发行者实际上不可能知道软件是否侵犯了某个专利:专利太多了,专利在各个国家又有所不同,专利的描述就是要让人难以判断它究竟涵盖哪些东西,要辨别哪个是有效的情况不是简单的事情。所以,我们一般不要求自由发行版排除可能带有专利风险的软件。另一方面,我们也不反对发行者为避免专利风险而排除一些软件。
没有恶意软件
发行版必须没有DRM、没有后门、没有间谍软件。
修复错误的承诺
大多数发行版的开发团队没有资源来针对所有这些条件进行全面检查。我们也没有。所以,发行版有时可能带有错误:非自由软件漏了进来,等等。我们不会因为带有错误而拒绝一个发行版。我们的要求是发行版开发者要坚定的承诺他们会在接到报告后及时解决问题。
维护
要进入列表,发行版应该有活跃的维护,而且应该给GNU工程一个明确和确定的报告非自由软件的途径。它还应该在解决问题后通知我们。
名称的困扰
我们不会列出那些名字会和非自由发行版混淆的发行版。比如,如果Foobar Light是自由发行版,而Foobar是非自由发行版,那么我们就不会列出Foobar Light。因为我们认为它们之间的区别会在沟通过程中消失。
特别需要指出,自由发行版的主要名称(“Foobar”,为例)不应该和任何非自由发行版名称近似。
有些人可能会想在自由发行版上添加“GNU”的名字来区别于非自由发行版。这有两个问题。第一,两个名字的区别还是不够大,因为主要的名字还是类似的。
第二,这会促进对“GNU”含义的误解。GNU是一个操作系统,典型的情况是使用Linux内核,并且基本上所有的叫做“Linux”的发行版实际上都是GNU/Linux发行版。在这种情况下,两个版本都是GNU/Linux,而省去其中一个的“GNU”就会形成误导。
如果你是下游,请和上游沟通
向某个GNU软件包提交过缺陷报告的发行版开发者(或其他人):如果软件包维护者对你的缺陷报告没有在合理的时间内给予回复(请至少允许两个星期),你可以向<maintainers@gnu.org>写信升级缺陷报告。如果你没有看到该软件包维护者近期的活跃情况,那么你尤其要升级缺陷报告。
请教育用户自由软件
要建立长久的自由,仅仅给予用户自由是不够的。教育用户自由意味着什么以及如何获得自由也是必要的。因此,我们建议并敦促自由发行版在登录屏幕、在登录之后的默认桌面,突出地宣告关于自由的声明,比如“本系统是尊重自由的自由软件”或者类似的说明,并展示指向gnu.org或gnu.org/philosophy的链接或图标,以告知用户哪里可以获取关于该声明的进一步信息。
请避免重复一些鼓吹和迷惑性语言
请参考我们的需要避免的词汇列表,这些词汇有的是带偏见的、有些是方向不对的,还有些是误导性的。请尽量在你的公众阐述和讨论中避免这些词汇。
最后说明
我们尽我们所知维护着一个自由的GNU系统发行版列表。如果你所知的自由发行版没有列出,请让其开发者写信给<webmasters@gnu.org>,并给出系统介绍和网站链接。
我们还列出了自由的非GNU系统发行版,它们也遵从同样的道德条件。
如果你对本指南有问题或建议,请大胆写信给<licensing@fsf.org>。我们希望你的问题或建议能够帮助所有人更好地理解这个概念,因为它对自由系统发行版是重要的,而我们期待将来能够宣传更多这样的发行版。