English [en]   fran?ais [fr]   italiano [it]   português do Brasil [pt-br]   русский [ru]   簡體中文 [zh-cn]  

這是針對英文原版頁面的中文翻譯。

應用自由軟件判斷準則

理查德·斯托曼 著

四項基本自由為判斷某一特定代碼片斷是否為自由的(即尊重用戶自由)提供了準則。我們應當如何將它們應用于判斷一個軟件包、一套操作系統、一臺計算機、或是一個網頁是否適合被推薦使用呢?

一個程序是否是自由的首先影響到的是我們對于自己的私人行為的決定:為了捍衛我們自己的自由,我們需要拒絕那些將會剝奪我們自由的程序。然而,這也會影響到我們應當對別人怎樣說和怎樣做。

非自由程序是不公正的。發布一個非自由程序、向他人推薦非自由程序、或是更為普遍地將它們引入課程而引導人們使用非自由軟件,以上這些行為意味著引導人們放棄自己的自由。可以肯定的是,引導人們使用非自由軟件并不等同于在他們的計算機上安裝非自由軟件,但我們不應該將人們引入歧途。

在更深層次上,我們不能提出一個非自由程序作為一個解決方案,因為這將會承認其合法性。非自由軟件是一種問題; 將其以一種解決方案的方式呈現否認了這一問題的存在

本文闡述了我們應當如何應用自由軟件的基本準則來判斷不同種類的事物,并且決定是否應該推薦它們。

軟件包

一個軟件包若要成為自由的,其中所有代碼必須都是自由的。但不僅限于代碼。由于文檔文件包含手冊、自述(README)、更新日志等,這些都是軟件包的必要的技術組成部分,它們必須也是自由的

一個軟件包通常與很多其他軟件包一起使用,并且與其中的一些進行交互。與非自由軟件進行的何種交互才是倫理上可接受的呢?

我們著手開發 GNU 的目的是帶來一款自由的操作系統,由于在 1983 年還沒有這樣的自由操作系統。當我們于 20 世紀 80 年代開發出最早的 GNU 組件時,其中每個組件都依賴于非自由軟件是不可避免的。例如,沒有任何一個 C 程序可以離開非自由的 C 編譯器而運行,直到 GCC 可以正常工作,并且它們也不能離開 Unix libc 而運行,直到 glibc 可以正常工作。每個組件都只能運行在非自由操作系統上,因為當時所有的操作系統都是非自由的。

當我們發布了一款可以運行在某些非自由操作系統上的組件后,用戶就把它移植到其他的非自由操作系統上。從倫理上講,這些移植并不比我們曾經用于開發這些組件的限定平臺代碼更壞,因此我們整合了用戶的這些補丁程序。

當 Linux 內核于 1992 年變為自由之時,它填補了 GNU 操作系統的最后一塊空缺(Linux 最初于 1991 年以一種非自由許可證發布)。GNU 和 Linux 的組合成為了一種完全自由的操作系統—GNU/Linux

此時,我們可以選擇移除對非自由平臺的支持,但是我們決定不這樣做。非自由操作系統是不公的,但用戶運行非自由操作系統并不是我們的過錯。支持該非自由操作系統上的自由軟件并不會進一步惡化這種不公。并且這將是實用的,不僅對于那些非自由操作系統用戶,也對于吸引更多人為開發該自由軟件做貢獻。

然而,在自由程序上運行非自由程序是一個完全不同的問題,因為這是在誘導用戶在自由之路上倒退。在某些情況下我們完全禁止這樣做:例如 GCC 禁止任何非自由插件。當一個程序允許非自由擴展的時候,它至少不應該引導用戶使用它們。例如,我們更傾向于選擇 LibreOffice 而非 OpenOffice,由于后者提示用戶使用非自由擴展,而 LibreOffice 則避開了它們。我們開發冰貓(IceCat)起初也是為了避免向用戶推廣由火狐(FireFox)建議使用的非自由擴展。

事實上,如果冰貓解釋如何在 MacOS 上運行冰貓,這將不會引導用戶去運行 MacOS。但如果它介紹了一些非自由擴展,它將會鼓勵冰貓用戶安裝這些非自由擴展。因此,冰貓軟件包及其手冊和網站不應該介紹這些東西。

有時一個自由軟件和一個非自由軟件協同工作,但其中任何一方都不是另一方的基礎。我們針對這種情況的規則是,如果該非自由軟件非常有名,我們應當告知人們如何使用我們的自由軟件與之工作;但如果該專有軟件鮮為人知,我們不應該暗示其存在。有時我們會在該非自由軟件存在的情況下提供互操作支持,但避免告知用戶這么做的可能性。

我們拒絕任何僅可用于某一非自由操作系統的“增強組件”。它們會鼓勵人們使用該非自由操作系統而非 GNU,如同自擺烏龍。

GNU/Linux 發行版

隨著 Linux 內核于 1992 年自由化,人們開始開發 GNU/Linux 發行版(“distros”)。但只有少數發行版是 完全由自由軟件構成的

適用于軟件包的規則也適用于發行版:一個符合倫理的發行版必須僅包含自由軟件并且只將用戶向自由軟件的方向引導。但是,對于一個發行版而言,“包含”一個特定的軟件包是什么意思呢?

某些發行版從二進制包安裝作為其發行版一部分的軟件;而其他發行版從上游源代碼構建每個軟件,并且從字面意義上講,它們所包含的只是需要下載并構建的列表。對于自由的問題,發行版怎樣安裝一個給定的軟件包并不重要;如果它將某個軟件包作為可選項提供,或者它的網站這樣做,我們稱該發行版“包含”該軟件包。

自由操作系統的用戶擁有對它的控制權,于是他們可以安裝他們想要安裝的任何東西。自由發行版提供了用戶可用于安裝他們自己的程序以及他們對于自由軟件的修改版本的通用工具;他們也可以安裝非自由軟件。在這些發行版中提供這些通用工具并不是倫理瑕疵,由于該發行版的開發者對于用戶基于其自身的主動權獲取并安裝什么軟件并不負有責任。

然而,當開發者引導用戶走向非自由軟件的時候,他們對于用戶安裝非自由軟件就應當負有責任了—例如,將非自由軟件置于流行發行版的軟件包列表中,或者從它們的服務器進行分發,或者將其呈現為一種解決方案而非一種問題。這正是為何大多數 GNU/Linux 發行版具有倫理瑕疵的問題之所在。

自行安裝軟件包的用戶通常具有一定的判斷能力:如果我們告訴他們“Baby 包含非自由代碼,而 Gbaby 是自由的”,我們可以預見他們能夠留心記住哪個是哪個。但發行版是推薦給那些不了解這些細節的普通用戶的。他們將會想“我應該使用他們所說的哪個呢?我想它應該是 Baby”。

因此,要想向公眾推薦一款發行版,我們堅持要求它們的名字不能與我們所拒絕的某個發行版相似,唯有如此,我們關于僅僅推薦自由發行版的信息才能被可靠地傳達。

發行版和軟件包之間的另一個區別在于向其中添加非自由代碼的可能性。程序開發者會仔細檢查他們向其中添加的代碼。如果他們決定使該程序成為自由的,他們不太會向其中添加非自由代碼。不過也有例外,包括 Linux 內核中添加“二進制 blobs”這樣惡劣的案例,但它們與現存的自由軟件相比只占一小部分。

與之相反,一個 GNU/Linux 發行版通常包含數千個軟件包,并且其開發者可能每年都會向其中添加數百個新的軟件包。如果未能盡力避免那些包含某種非自由軟件的軟件包,幾乎肯定會有一些非自由軟件混入其中。由于自由發行版的數量很少,作為列出那些發行版的條件,我們要求每位自由發行版的開發者通過移除任何非自由代碼或惡意代碼來承諾保持該發行版成為自由軟件。參見《GNU 自由操作系統發行版指南》

我們不要求自由軟件包的開發者也做出這樣的承諾,這是不現實的,幸運地是,這也不是必需的。得到超過 30000 個自由軟件的開發者的承諾也許能夠避免少數問題,但其代價是極大增加自由軟件基金會(FSF)員工的工作量;此外,這些開發者中的大部分與 GNU 計劃并無關系,他們也不愿意向我們做出任何承諾。因此我們只需在發現問題的時候應對這些使自由軟件變為非自由軟件的少數案例。

外設

計算機外設要求計算機中的軟件被操作系統加載到其中以便使其工作—這些軟件可以是驅動程序或固件。因此,如果一件外設可以在一臺未安裝任何非自由軟件的計算機上使用—如果該外設的驅動程序以及任何需要由操作系統加載到其中的固件都是自由的,那么它是可接受并使用以及推薦的。

驗證這一點是簡單的:將該外設連接到一臺運行完全自由的 GNU/Linux 發行版的計算機上并且觀察它是否正常工作。但是大多數用戶需要在購買外設之前獲知這一點,因此我們在 h-node.org 列出了很多外設的信息,這是一個完全自由的操作系統的硬件數據庫。

計算機

一臺計算機在不同層次上包含不同的軟件。我們應當基于什么準則來判斷一臺計算機是否”尊重您的自由“呢?

顯而易見的是:操作系統和其中的任何軟件都必須是自由的。在 20 世紀 90 年代,啟動加載軟件(當時是“基本輸入/輸出系統”,即 BIOS)成為可替換的,并且由于它運行在中央處理器(CPU)上,它與操作系統所存在的是同一類的問題。因此,諸如固件或驅動程序,不論安裝在操作系統中,或是隨操作系統一起安裝,或是啟動加載程序都必須是自由的。

如果一臺計算機擁有某些要求在操作系統中安裝的非自由驅動程序或固件的硬件功能,我們可能仍然能夠推薦它。如果它在沒有那些功能的情況下仍然可用,并且我們認為大部分人不會為了使該功能可用而被引導安裝非自由軟件,那么我們仍然能夠推薦它們。否則我們就不能。這將是一種主觀判斷。

一臺計算機可能在較低的層次上帶有預裝的可修改固件和微碼。它也可能在真正只讀的存儲器中擁有代碼。我們決定在現今我們所使用的認證準則中忽略這些程序,這是由于如若不然就沒有任何計算機可以滿足,并且因為通常不會被更改的固件在倫理上與電路相同。因此我們的認證準則僅僅覆蓋那些運行在計算機的主處理器上且儲存在非真正只讀存儲器中的代碼。當在其他層次上運行自由軟件成為可能,我們也會要求這些層次上的軟件是自由的。

由于認證一款產品是對它的積極推廣,我們要求它們的販賣者以支持我們作為回報,這可以通過談論自由軟件而非開源軟件以及將 GNU 和 Linux 的結合體稱為 ”GNU/Linux“ 來做到。我們沒有義務積極支持那些不認可我們的工作或是不支持我們運動的項目。

參見 我們的認證準則

網頁

現在的很多網頁都包含復雜的 JavaScript 程序并且需要它們才能工作。這是一種有害的實踐,因為它阻礙用戶對他們自己計算的控制。更壞的是,這些程序中的大部分是非自由的,這是一種不公。JavaScript 代碼常常窺探用戶。JavaScript 已經變成了一種對用戶自由的威脅。

為了解決這一問題,我們開發了 LibreJS,這是一種用于阻止非普通非自由的 JavaScript 代碼的火狐瀏覽器擴展(沒有必要阻止簡單的腳本,如果它們只是實現一些次要的用戶界面特性)。我們請求網站將它們的 JavaScript 程序自由化并且標記其許可證以便 LibreJS 識別。

與此同時,鏈接至一個包含非自由 JavaScript 程序的網頁是否符合倫理呢?如果我們堅決不做任何妥協,我們將只能鏈接至自由的 JavaScript 代碼。然而,很多網頁即使不運行它們的 JavaScript 代碼也能工作。此外,除了我們的鏈接,您會經常在其它網站遇到非自由的 JavaScript 代碼;為了避免這些情況,您必須使用 LibreJS 或禁用 JavaScript。因此,我們決定做出讓步并且鏈接那些不運行非自由 JavaScript 程序也能工作的網頁,同時鼓勵用戶在普遍意義上保護自己不受來自非自由 JavaScript 程序的威脅。

然而,如果某個網頁不運行非自由 JavaScript 程序就不能實現其功能,鏈接到它將會不可避免地要求人們運行該非自由 JavaScript 代碼。出于原則,我們不會鏈接這些網頁。

結論

”軟件應當是自由的“這一基本理念應用到不同場合要求不同的實踐策略。隨著新情況的出現,GNU 計劃和 FSF 將會適配我們的自由準則,不論在實踐中還是理論上,都將計算機用戶引向自由。通過僅僅推薦尊重用戶自由的程序、發行版和硬件產品,并且宣示您的立場,您可以為自由軟件運動提供它所急需的支持。

最頂

[FSF 標志]“自由軟件基金會(FSF)是一個非盈利組織。我們的使命是在全球范圍內促進計算機用戶的自由。我們捍衛所有軟件用戶的權利。”

加入 購物

招财蟾蜍APP 剑网三帮会种地如何赚钱 重庆百变王牌号码 天天乐棋牌苹果游戏下载 想赚钱想疯了怎么劝 楚楚通怎么分享赚钱 北京快乐飞艇现场开奖 河南11选5开奖号码 巨丰投资股票推荐 多乐彩电子走势图 什么是股票融资贷款 福彩十一选五选号技巧 幸运赛车网站 炸金花 办公用品赚钱吗 中国体育彩票排列三走势图 金博棋牌最新下载地址