java linux命令 Windows Python shell 微软 mysql google apache 开源 HTML5 Firefox nginx linux Android 程序员 php Ubuntu centos wordpress

GNU/Linux与自由,隐藏在Linux发行版中的非自由软件

许多对软件自由感兴趣的人都会把GNU/Linux作为他们的操作系统选择。但很少有人认识到,许多主要的GNU/Linux发行版并不是完全自由 的。想象一下,当你从Windows迁移过来并安装GNU/Linux时,却发现你正在接受一个严格的微软许可证!

许多发行版使用了专利软件并故意显示一个错误的许可证,并尝试将问题隐藏在一个“自由可选项”的外表后面。大多数软件容器的开发者并不关注自由,更 不用他们的说用户了。非自由的发行版几乎不曾尝试提醒他们的用户自由有多么重要,即便是不这么做用户就将不复存在的时候。本文中我将会讨论“自由可选项” 是一种不可接受的方式,并且提出一些真正的解决办法。

问题

我使用GNU/Linux超过5年,但直到最近才发现我的发行版中究竟包含多少非自由软件。我决定在系统中查找并删除所有不自由的东西,结果我删除 了n多。

GNU/Linux与自由:隐藏在Linux发行版中的非自由软件
一个漂浮的GNU — 软件自由与安宁的符号

这些是我所找到的:

Linux内核

Linus Torvalds等人通过kernel.org发布的Linux 内核,即公版的内核,包括许多非自由的固件(参见脚注),它们主要用于支持一些自由固件所不支持的硬件。想象一 下,当你从Windows迁移过来并安装GNU/Linux时,却发现你正在接受一个严格的微软许可证! 虽然大多数发行版维护了他们自己的内核,但都是严重基于公版的,并且通常直接采纳了其中的非自由二进制镜像。

一个解决办法就是使用Linux Libre项目,这是一个去除了所有非自由固件的公版内核集合。大多数发行版根本就不曾提供自由内核的选择,更不用说推荐一个了。

非自由驱动程序

许多发行版包括了显卡和无线网卡之类的非自由驱动程序。由于那些硬件是闭源的并且没有文档化,他们只能包含这些驱动来尽力增强硬件支持。

许多发行版采用驱动程序的非自由版本来*代替*自由版本

在很多情况下,驱动程序的自由替换版其实是存在的,但是许多发行版却采用非自由版本来*代替*自由版本。

常见的非自由软件

许多发行版还提供了其他一些不属于上面几类的非自由软件。这些东西包括非自由网页浏览器,视频会议客户端,和另外一些常见的应用程序。系统本身并不 需要这些软件,包含这些东西只是为了方便,或者让软件包列表变得更充实。

他们告诉用户说自由是一个次要的问题,并且引导他们使用非自由软件

虽然一些发行版用专门的仓库来维护非自由软件,但对平常用户来说这并不意味着什么。通过同时宣扬自由和非自由的程序,他们实际上是在告诉用户说自由 是一个次要的问题,并且引导他们使用非自由软件。

我从系统中移除的一个软件包叫corefonts,是使用微软许可证的非自由字体包。其许可证限制了该软件包的使用,并且禁止对其修改。 Corefonts是安装ImageMagic的一个可选依赖,Gentoo默认将其启用。

ImageMagic本身是自由软件。这意味着大多数安装它的用户都假定它是自由的,结果却错误地使用了系统中的corefonts。他们可能会受 到这个受限非自由许可证的影响。

小结

这只是GNU/Linux发行版怎样限制用户自由的一些例子。另一个问题是:仅仅检查包管理器所述的各种程序许可证信息并不可靠。比如,Linux 内核通常标榜说是完全符合GPL-2的,但实际上却包含了一些非自由软件。

如果没有一种清晰的策略来精确地分辨一个发行版所包含的软件并且 精确地描述其许可证的话,即便是最小心的用户也可能会安装非自由软件。

自由可选项

一些发行版尝试着这样解决问题:通过提供另外一个自由版本,或者提供一些工具来帮助用户保持系统自由。这并不能解决问题,因为大多数人并不关心软件 自由,因此也不会结束其使用。更有甚者,发行版几乎不会做任何事情来提倡使用自由版本,甚至是告诉用户使用它们的优越性。

Mandriva告诉大众专利软件会如何危害你的问题,以及逃离限制的方法乃是重要目的。可是这 些根本就没有涉及。

我的第一个例子是Mandriva,这个发行版提供了7个不同的版本,只有一个是完全自由的。大多数访问其网站的人都会下载其Powerpack版本,因为它放在第一个,并且其名字也暗示它是功能最强大的版本。没有人会关于其版本区别的描述,同时也没有任何提倡甚至是解释一下使用纯自由软件的优越性。

这种做法的副作用就是:唯一使用自由版本的用户就是那些已经知道问题并且对其非常小心的人。这些用户可能已经在运行100%自由的系统 了。告诉大众专利软件会如何害你的问题,以及逃离限制的方法乃是重要目的。可是这些根本就没有涉及。

Gentoo Linux

另一个例子是Gentoo Linux,提供了一个可选的许可证过滤系统,能够帮助用户避免安装专利软件。这比Mandriva的情况还糟,因为过滤功能在文档中很少涉及,而且对于 使用什么没有给出任何推荐。

这意味着唯一使用Gentoo自由版本的人是那些专门搜索过怎样基于许可证来过滤软件的人。大多数用户可能都不知道还有这么一个功能存在。 更严重的是,一些软件许可证(比如Linux内核的许可证)是不准确的。所以即便有严格的过滤器,专利软件也很可能会漏网。

我在Gentoo开发者邮件列表上指出过Linux内核显示的许可证是不准确的。我要求他们更新以包含非自由固件的许可证,这样人们才能精确地过滤 他们的软件。虽然一些开发者支持这个主意,修正方法却一开始就被一些内核团队成员给拒绝了。本文发表不久以后,我被告知许可证现在已经更新了,是一个最初 的支持者干的。

小结

非自由的发行版几乎不曾尝试提醒他们的用户自由有多么重要,即便是不这么做用户就将不复存在的时候。

大多数软件容器的开发者并不关注自由,更 不用他们的说用户了。非自由的发行版几乎不曾尝试提醒他们的用户自由有多么重要,即便是不这么做用户就将不复存在的时候。 一个发行版对于其用户的影响是相当巨大的,并且他们有提倡使用纯自由软件的社会责任。

解决办法

很明显真正的解决办法是转而使用一个尊重用户自由的发行版。FSF组织维护了一个你能使用的完全自由发行版的 列表。开发者们协同工作,以便保护用户的自由,并且尽最大努力来维护一个完全自由的系统。比如通过查找并修复所有因失误而漏网的非自由软件。其他非自由发 行版很可能忽视这些问题。

然而,转换到一个新的操作系统并不总是可行。你可能更喜欢重构你已有的那个非自由发行版。如果是这种情况,你可能希望转换软件安装来实现一个完全自 由的操作系统。这样会有很大的工作量,不过却是可行的:

首先,你应该从系统中移除所有非自由软件。这些工作包括:转换到一个Linux Libre内核,全面扫描已安装的软件包并检查其许可证。这可能是一项巨大而乏味的工作。

每个用户都需要这么做显然是个愚笨的办法。你可以联系你发行版的开发者并且告诉他们——当然是用礼貌的方式——你认为软件自由是一个重要问题,并且建议他们改进发行版的自由性。你还可以提供帮助,不管是技术支援还是问题报告。 一种无争议的方式来维护一个完全自由的系统会是一个好的开端。

如果你会写代码,你可以着重于努力改进一个自由的发行版。如果你有喜欢的设计决定,你可以在自由发行版中实现。你还可以帮助那些非自由发行版,通过编写其包含的非自由软件的自由替换版来实现(当然这也会让自由发行版获益,哦,自由软件的胜利!)。

有时候你可能有自由软件所不支持的硬件。如果可以的话你应该尝试着避免支持这样的公司,虽然这么做可能不太现实。在所有情况下,你都应该给生产商写 一个礼貌而坚定的需求,要他们将驱动程序以自由软件发布,或者开放他们的规范文档以便其他人可以编写自由驱动。

购买硬件的时候,先查阅FSF的支持的硬件列表,尽可能多地支持那些自由的公司。

我要提及的最后一点是推荐的强大影响力。每当向你朋友和家庭推荐GNU/Linux的时候,都别忘了强调自由的重要性。不管他们是否接受你的建议, 你都将在客观上帮助了知识的推广,这是解决任何问题的第一步。

脚注

作为一个例子,请浏览这个 Linux 源文件. 你正在看的是一个非自由的二进制固件。这段代码的含义通常意味着一个商业秘密,因此用户不但没法修改它,甚至根本没法理解它。

问题并不局限于Linux。OpenBSD开发了它们自己的内核,但是也含有二进制镜像。可以快速浏览一下这个内核源文件,它包含了一大段使用受限许可证的非自由代码。

还可以在UbuntuDebian中 查看更多非自由二进制镜像的例子。

延伸阅读

评论