这是针对英文原版页面的中文翻译。

Android 和用户的自由

Richard Stallman 著
卫报(The Guardian)首发


Android 系统在多大程度上尊重用户的自由呢?对看中自由的计算机用户来说,这是对任何软件系统最重要的问题。

通过 自由软件运动,我们开发了尊重用户自由的软件,因此我们和你们可以摆脱非自由软件。相反,“开源” 的思想关注于如何开发代码;这是不同的理念,它的基本价值观 不是自由而是代码质量。所以,我们在此关心的不是 Android 是否 “开放”,而是它的用户是否拥有自由。

Android 是一个主要用于手机等设备的操作系统,它由 Linux(Torvalds 写的内核)、一些库、一个 Java 平台和一些应用构成。除了 Linux,Android 版本 1 和 2 的软件主要由 Google 开发;Google 将其按照 Apache 2.0 许可证发布,这是一个非 copyleft 的松散型自由软件许可证。

Android 包含的 Linux 并不是完全的自由软件,因为其中有非自由的 “二进制 blobs”(就像 Torvalds 的 Linux 版本一样),其中一些 Android 设备真的要用到。Android 平台还使用其他非自由的固件、非自由的库。除了这些,由 Google 发布的 Android 版本 1 和 2 的源代码是自由软件—但是这些代码不足以在设备上运行。Android 常带的一些应用也不是自由软件。

请支持 让 Android 自由 运动。

Android 和 GNU/Linux 操作系统 非常不同,因为它基本不包含 GNU。实际上,Android 和 GNU/Linux 的唯一共同点大概就是 Linux 内核。哪些错误地认为 “Linux” 就是指整个 GNU/Linux 组合的人对这些事实感到非常困惑,并自相矛盾地声称 “Android 包含 Linux,但并不是 Linux。”(1)不管这个混淆,情况很简单:Android 含有 Linux,但是不包含 GNU;因此,Android 和 GNU/Linux 大不相同,因为它们的公共部分只有 Linux。

就 Android 来说,Linux 内核仍是一个单独的程序,其源代码使用 GNU GPL 版本 2。要把 Linux 代码放在 Apache 2.0 许可证下会侵犯版权,因为 GPL 版本 2 和 Apache 2.0 不兼容。关于 Google 设法把 Linux 转换到 Apache 许可证的传言是错误的;Google 没有权力改变 Linux 代码的许可证,也没有这样去做。如果 Linux 的作者群允许其按照 GPL 版本 3 发布,那么其代码就兼容 Apache 许可证,并且整个组合可以按照 GPL 版本 3 发布。但是 Linux 并没有这样发布。

Google 对 Linux 遵循了 GNU 通用公共许可证,而 Android 的其他部分使用 Apache 许可证,没有要求发布源代码。Google 曾经说它永远不会公开 Android 3.0(Linux 除外)的源代码。Android 3.1 的源代码也被保留了,这使 Android 3,除 Linux 外,是非自由软件,简单明了。

Google 说保留 3.0 的代码是因为问题太多,还说大家应该等待下一版发布。这个对只想运行 Android 系统的人可能是个好建议,但是用户应该是做出决定的一方。无论如何,希望在自己的版本里加上改动的开发者和钻研者使用有问题的代码也是可以的。

所幸的是,Google 后来在发布版本 4(含源代码)时也发布了 Android 3.* 的源代码。上述问题看来只是临时偏离,而非政策改变。不过,这也是前车之鉴。

不过怎样,Android 各种版本的代码都按照自由软件发布了。这是不是意味着使用这些 Android 版本的产品就尊重用户的自由了呢?不,不是的。有几个原因。

首先,它们大多数都包含非自由的 Google 应用,这些应用和 YouTube 以及 Google Maps 等服务沟通。虽然它们不是 Android 的正式部分,但这并不是说这些产品就没问题。许多 Android 早期版本的自由应用 被非自由应用替换;在 2013 年,出现了一些 Android 设备,它们除了使用非自由的 Google+ 应用之外,无法查看照片。在 2014 年,Google 宣布 Android TV 版、手表版和汽车版的大部分都不是自由的。

大多数 Android 设备都会带有非自由的 Google Play 软件(原先叫 “Android 市场”)。此软件邀请用户使用 Google 账号安装非自由应用。它还带有一个后门,Google 可以用它强制安装或卸载应用。(这相当于是个全局后门,虽然未经证实。)Google Play 不是 Android 的正式部分,但是这并未减少其恶。

Google 把许多常规的基础工具都转移到非自由的 Google Play 服务库。如果一个应用本身的代码是自由软件,但是它依赖 Google Play 服务才能运行,那么整个应用等效于非自由的;它无法在非自由版本的 Android 上运行,比如不能在 Replicant 上运行。

如果你看中自由,那么你不会要 Google Play 提供的非自由应用。要安装自由的 Android 应用,你无需 Google Play,因为你可以从 f-droid.org 获得。

Android 产品也带有非自由库。这些不是 Android 的正式部分,但是由于多种 Android 功能都依赖它们,所以实际是 Android 安装必备的内容。

即使是 Android 正式部分的程序也可能不对应 Google 发布的源代码。制造商可能会修改代码,而且经常不会发布其版本的源代码。GNU GPL 要求它们发布其 Linux 版本的代码,姑且假设他们遵守了。而其余部分使用松散的 Apache 许可证的代码,并没有要求他们发布实际使用的代码。

有一个用户发现其 Android 手机的多个程序 被修改成向 Motorola 发送个人数据。有些制造商会添加一个 诸如 Carrier IQ 的通用性监控软件包。

Replicant 是一个自由版的 Android。Replicant 的开发者替换掉了一些特定设备的许多非自由的软件库。非自由的应用也被剔除,不过你当然不要用它们。反过来,CyanogenMod(Android 的另外一个修改版)是非自由的,因为它带有非自由程序。

许多 Android 设备是 “暴君”:它们设计为用户无法安装和运行他们自己的修改版软件,只能使用授权公司提供的版本。在这种情况下,这些可执行程序不是自由软件,即使其源代码自由可得。不过,有些 Android 设备可以被 “rooted”1,因而用户可以安装不同的软件。

重要的固件或驱动一般也是专有软件。它们处理电话网络射频信号、WiFi、蓝牙、GPS、3D 图形、摄像头、扬声器等,有时也包括麦克风。对有些电话,一些驱动程序是自由的,还有一些驱动你可以不要——但是你不能没有麦克风或电话网络射频信号的驱动。

电话网络固件是预装好的。如果它只是按照你的需要和电话网络通讯,那么我们可以把它等效为一个电路板。当我们坚持计算设备上的软件必须自由时,我们可以放过预装的不再升级的固件,因为对用户来说这个软件和电路板是一样的。

不幸的是,这是一个恶意的电路板。无论恶意功能是如何实现的,我们都不能接受。

在大多数 Android 设备上,该固件控制太多功能以至于它可以把整个产品变成一个监听器。在有些设备上,它控制麦克风。在另一些设备上,它可以通过共享内存完全控制主计算单元,因此就可以忽略或替换掉你安装的任何自由软件。还有一些设备,也可能是所有的设备,有可能远程操控该固件来重新刷写设备的软件。自由软件的重点在于我们对软件和计算有控制权;有后门的系统显然不合格。虽然任何计算机系统都可能 缺陷,但是这些设备本身 就是 缺陷。(Craig Murray,在 Murder in Samarkand 中,论及他参与的一次谍报活动,就是远程把未起疑心的目标对象的非 Android 手机变成了监听设备。)

总而言之,Android 设备的电话网络固件并不等同于一个电路板,因为其硬件允许安装新的版本而且也在实际运用该功能。由于它是专有固件,实际上只有制造商可以提供新版本——用户不行。

归纳一下,我们可以接受电话网络固件不加载新版本、不控制主计算单元,而且它只能按照自由操作系统的需要来通讯。换句话说,它必须等同于一个电路板,而且必须不是恶意的电路板。按照这样的特点来制造 Android 手机没有技术困难,但是我们没有看到这样的手机。

Android 不是一个自我加载的系统;Android 的开发需要在其他系统上进行。Google 的 “软件开发套件”(SDK)看来是自由的,但是需要大量检查才能判断。某些 Google API 的定义文件不是自由的。安装 SDK 需要签署一个专有的软件许可证,你应该拒绝签署。 Replicant SDK 是一个自由替代。

最近媒体关注 Android 的专利战争。历经 20 年的废除软件专利运动,我们一直在警告这样的战争。软件专利可能会消灭 Android 的功能,甚至使之不可用。请参看 endsoftpatents.org 了解更多为何要废除软件专利的信息。

不过,专利攻击和 Google 的反应并不直接和本文的主题相关:Android 产品如何部分寻求成为一个讲道德的发布系统,以及如何没能实现目标。这个问题也值得媒体关注。

Android 是实现一个讲道德、用户可控、自由软件的手机系统的重要一步,但是道路还很漫长,而且 Google 正在把它带到错误的方向上去。黑客们正在为 Replicant 工作,但支持新的设备型号是巨大的工作,加上还留有固件的问题。尽管 Android 手机没有 Apple 或 Windows 手机那么恶劣,但是他们还是不能说它尊重你的自由。


  1. 这个混淆的极端例子出现在 linuxonandroid.com 网站,该网站提供 “在 Android 设备上安装 Linux [sic]” 的帮助。这整个都错了:他们是在安装一个 GNU 系统的版本,不包括 Linux,因为 Linux 已经是 Android 的一部分。由于该网站仅支持 非自由的 GNU/Linux 发行版,我们不推荐使用。

译注

  1. rooted:此处指获得手机等设备的操作系统管理员权限,即 root 权限。此后就可以安装修改版软件。

本页可选语言:

[en] English   [de] Deutsch   [es] español   [fr] français   [it] italiano   [ml] മലയാളം   [pl] polski   [ru] русский   [tr] Türkçe   [zh-cn] 简体中文  

 [FSF 标志] “自由软件基金会(FSF)是一个非盈利组织。我们的使命是在全球范围内促进计算机用户的自由。我们捍卫所有软件用户的权利。”