Android 與使用者的自由
作者:Richard StallmanAndroid 在多大程度上尊重使用者的自由?對於重視自由的電腦使用者來說,這是關於任何軟體系統最重要的问题。
在自由/開放原始碼軟體運動中,我們開發尊重使用者自由的軟體,以便我們和您可以擺脫不尊重自由的軟體。相比之下,「開放原始碼」的想法側重於如何開發程式碼;它是一種不同的思想潮流,其主要價值是程式碼品質而非自由。因此,這裡關注的不是 Android 是否「開放」,而是它是否允許使用者獲得自由。
Android 是一個主要用於手機和其他裝置的作業系統,它由 Linux(Torvalds 的核心)、一些函式庫、Java 平台和一些應用程式組成。除了 Linux 之外,Android 1 和 2 版本的軟體主要由 Google 開發;Google 在 Apache 2.0 授權條款下發布了它,這是一個寬鬆的自由軟體授權條款,沒有著作權保護。
Android 中包含的 Linux 版本並非完全是自由軟體,因為它包含非自由的「二進位 blobs」(就像 Torvalds 版本的 Linux 一樣),其中一些確實在某些 Android 裝置中使用。Android 平台也使用其他非自由韌體和非自由函式庫。除了這些之外,Google 發布的 Android 1 和 2 版本的原始碼是自由軟體——但這些程式碼不足以運行裝置。通常隨 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 遵守了 GNU 通用公共授權條款對 Linux 的要求,但 Apache 授權條款對 Android 的其餘部分沒有要求發布原始碼。Google 表示,它永遠不會發布 Android 3.0 的原始碼(Linux 除外)。Android 3.1 原始碼也被隱藏了,這使得 Android 3,除了 Linux 之外,完全是非自由軟體。
Google 表示,它隱藏 3.0 原始碼是因為它有錯誤,人們應該等待下一個版本。對於只想運行 Android 系統的人來說,這可能是個好建議,但使用者應該是決定這件事的人。無論如何,想要將某些更改納入自己版本的開發人員和修補匠可以很好地使用該程式碼。
幸運的是,Google 後來在發布版本 4(也帶有原始碼)時發布了 Android 3.* 的原始碼。上面的問題結果證明只是一個暫時的偏差,而不是政策轉變。但是,曾經發生過的事情可能會再次發生。
無論如何,各種版本的 Android 的大部分原始碼都已作為自由軟體發布。這是否意味著使用這些 Android 版本的產品尊重使用者的自由?不,原因有幾個。
首先,它們中的大多數包含非自由的 Google 應用程式,用於與 YouTube 和 Google 地圖等服務進行通訊。這些在官方上不是 Android 的一部分,但這並不能使該產品變得可以接受。早期版本的 Android 提供的許多自由應用程式已被非自由應用程式取代;在 2013 年,出現了 Android 裝置,它們除了通過非自由的 Google+ 應用程式之外,沒有提供任何查看照片的方式。2014 年,Google 宣布用於電視、手錶和汽車的 Android 版本將在很大程度上是非自由的。
大多數 Android 裝置都配備了非自由的 Google Play 軟體(以前稱為「Android Market」)。此軟體邀請擁有 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 系統中的許多程式都經過修改,以將個人資料發送給摩托羅拉。一些製造商添加了隱藏的通用監控套件,例如 Carrier IQ。
Replicant 是 Android 的自由版本。Replicant 開發人員已為某些裝置型號替換了許多非自由函式庫。非自由應用程式被排除在外,但您當然不想使用這些應用程式。相比之下,CyanogenMod(Android 的另一個修改版本)是非自由的,因為它包含一些非自由程式。
許多 Android 裝置都是「暴君」:它們的設計目的是讓使用者無法安裝和運行自己的修改軟體,只能運行某些公司批准的版本。在這種情況下,即使可執行檔是由自由且可供您使用的原始碼製成的,它們也不是自由的。但是,某些 Android 裝置可以「root」,以便使用者可以安裝不同的軟體。
重要的韌體或驅動程式通常也是專有的。這些處理電話網路無線電、WiFi、藍牙、GPS、3D 圖形、相機、揚聲器,在某些情況下還包括麥克風。在某些型號上,其中一些驅動程式是自由的,並且有一些您可以不用——但您不能沒有麥克風或電話網路無線電。
電話網路韌體是預裝的。如果它所做的只是坐在那裡並在您希望時與電話網路通訊,我們可以將其視為等同於電路。當我們堅持計算裝置中的軟體必須是自由的時,我們可以忽略永遠不會升級的預裝韌體,因為對於使用者來說,它是程式而不是電路沒有區別。
不幸的是,在這種情況下,它將是一個惡意的電路。無論惡意功能如何實現,都是不可接受的。
在大多數 Android 裝置上,此韌體具有如此多的控制權,以至於它可以將產品變成竊聽裝置。在某些裝置上,它控制著麥克風。在某些裝置上,它可以通過共享記憶體完全控制主電腦,從而覆蓋或替換您已安裝的任何自由軟體。對於某些,也許是所有型號,可以對此韌體進行遠程控制,以覆蓋裝置中的其餘軟體。自由軟體的重點是我們控制我們的軟體和我們的計算;帶有後門的系統不符合條件。雖然任何計算系統都可能有錯誤,但這些裝置可能本身就是錯誤。(克雷格·默里在 撒馬爾罕的謀殺案 中,講述了他參與一項情報行動,該行動遠程將毫無戒心的目標的非 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 手機要好得多,也不能說它們尊重您的自由。
腳註
- 這種混淆的極端例子出現在 linuxonandroid.com 網站上,該網站提供幫助「在您的 Android 裝置上安裝 Linux [原文如此]」。這完全是錯誤的:他們安裝的是 GNU 系統的一個版本,不包括 Linux,Linux 已經作為 Android 的一部分存在。由於該網站僅支持 非自由 GNU/Linux 發行版,因此我們不推薦它。
首次發表於 衛報。
支持解放你的 Android 運動。