自由軟體現在更加重要
作者:理查·史托曼自 1983 年以來,「自由軟體運動」一直為電腦使用者的自由而奔走——為了讓使用者控制他們使用的軟體,而不是反過來。當一個程式尊重使用者的自由和社群時,我們稱之為「自由軟體」。
我們有時也稱之為「libre software」以強調我們談論的是自由,而不是價格。有些專有(非自由)程式,例如 Photoshop,非常昂貴;另一些,例如 Uber 應用程式,則是免費提供的——但那只是次要細節。無論如何,它們都賦予程式開發者凌駕於使用者之上的權力,那是不應該有人擁有的權力。
這兩個非自由程式還有另一個共同點:它們都是惡意軟體。也就是說,兩者都具有旨在虐待使用者的功能。現今的專有軟體通常是惡意軟體,因為開發者的權力使他們腐敗。該目錄列出了約 600 種不同的惡意功能(截至 2023 年 4 月),但這肯定只是冰山一角。
有了自由軟體,使用者可以個別和集體地控制程式。因此,他們可以控制他們的電腦做什麼(假設這些電腦是忠誠的,並且按照使用者程式的指示去做)。
有了專有軟體,程式控制使用者,而另一個實體(開發者或「所有者」)控制程式。因此,專有程式賦予其開發者凌駕於使用者之上的權力。這本身就是不公正的;此外,它還誘使開發者以其他方式虐待使用者。
即使專有軟體並非完全惡意,其開發者也有動機使其 容易上癮、具有控制性和操縱性。您可以像該文章的作者一樣說,開發者有道德義務不這樣做,但他們通常會追逐自己的利益。如果您不希望這種情況發生,請確保程式由其使用者控制。
自由意味著掌控自己的生活。如果您使用程式來進行生活中的活動,那麼您的自由取決於您是否能掌控該程式。您應該有權控制您使用的程式,當您將它們用於生活中的重要事情時更是如此。
使用者對程式的控制需要四項基本自由。
(0) 隨心所欲執行程式的自由,無論出於何種目的。
(1) 研究程式「原始碼」並更改它的自由,以便程式按照您的意願執行運算。程式是由程式設計師以程式語言(如英語與代數的組合)編寫的——而程式的這種形式就是「原始碼」。任何懂程式設計,並且擁有原始碼形式程式的人,都可以閱讀原始碼,理解其運作方式,並對其進行更改。當您只能獲得可執行檔形式時,那是一系列電腦可以高效執行的數字,但人類極難理解,在這種形式下理解和更改程式是極其困難的。
(2) 隨時製作和散佈精確副本的自由。(這不是義務;這樣做是您的選擇。如果程式是自由的,並不意味著某人有義務向您提供副本,或者您有義務向他提供副本。向使用者散佈不自由的程式會虐待他們;但是,選擇不散佈程式——私下使用它——不會虐待任何人。)
(3) 隨時製作和散佈修改版本的副本的自由。
前兩項自由意味著每位使用者都可以對程式行使個人控制權。有了其他兩項自由,任何使用者群體都可以共同對程式行使集體控制權。有了所有四項自由,使用者就可以完全控制程式。如果其中任何一項缺失或不足,則該程式是專有(非自由)的,且不公正。
其他種類的作品也用於實際活動,包括烹飪食譜、教科書等教育作品、字典和百科全書等參考作品、用於顯示文字段落的字型、供人們組裝的硬體電路圖,以及用於使用 3D 印表機製作有用(而不僅僅是裝飾性)物品的圖樣。由於這些不是軟體,嚴格來說自由軟體運動不涵蓋它們;但是,相同的推理適用,並得出相同的結論:這些作品應帶有四項自由。
自由程式允許您對其進行修改,使其執行您想要的操作(或停止執行您不喜歡的操作)。如果您習慣於將專有軟體視為密封的盒子,那麼修改軟體可能聽起來很荒謬,但在自由世界中,這是一件很常見的事情,也是學習程式設計的好方法。即使是美國人傳統的汽車改裝消遣也受到了阻礙,因為汽車現在包含非自由軟體。
專有性的不公正
如果使用者無法控制程式,那麼程式就會控制使用者。有了專有軟體,總有一些實體,即程式的開發者或「所有者」,控制著程式——並透過它,對其使用者行使權力。非自由程式是一種枷鎖,是一種不公正權力的工具。
在令人髮指的情況下(儘管這種令人髮指的情況已變得相當普遍),專有程式被設計為監視使用者、限制使用者、審查使用者和濫用使用者。例如,Apple 的 iThings 作業系統就做了所有這些事情,搭載 ARM 晶片的行動裝置上的 Windows 也是如此。Windows、手機韌體和 Windows 版 Google Chrome 包含一個通用後門,允許某些公司遠端更改程式,而無需徵求許可。Amazon Kindle 有一個後門,可以擦除書籍。
在「物聯網」中使用非自由軟體會將其變成「電話推銷員網路」以及「窺探者網路」。
為了結束非自由軟體的不公正現象,自由軟體運動開發自由程式,以便使用者可以解放自己。我們於 1984 年開始開發自由作業系統 GNU。今天,數百萬台電腦執行 GNU,主要是在 GNU/Linux 組合中。
向使用者散佈不自由的程式會虐待這些使用者;但是,選擇不散佈程式不會虐待任何人。如果您編寫了一個程式並私下使用它,那對他人沒有任何傷害。(您確實錯失了做好事的機會,但那與做錯事不同。)因此,當我們說所有軟體都必須是自由的時,我們指的是每個副本都必須附帶四項自由,但我們並非指某人有義務向您提供副本。
非自由軟體和 SaaSS
非自由軟體是公司掌控人們運算的第一種方式。如今,還有另一種方式,稱為「軟體替代服務」(Service as a Software Substitute),或 SaaSS。這意味著讓別人的伺服器執行您自己的運算任務。
SaaSS 並不意味著伺服器上的程式是非自由的(儘管它們通常是)。相反,使用 SaaSS 會導致與使用非自由程式相同的不公正現象:它們是通往同一個糟糕境地的兩條路徑。以 SaaSS 翻譯服務為例:使用者將文字發送到伺服器,伺服器將其翻譯(例如,從英文翻譯成西班牙文),然後將翻譯結果發送回使用者。現在,翻譯工作由伺服器營運商而不是使用者控制。
如果您使用 SaaSS,伺服器營運商就會控制您的運算。這需要將所有相關資料委託給伺服器營運商,而伺服器營運商也將被迫將其展示給國家——畢竟,那個伺服器真正為誰服務?
主要和次要的不公正
當您使用專有程式或 SaaSS 時,首先您會對自己做錯事,因為它賦予某些實體對您不公正的權力。為了您自己的緣故,您應該逃脫。如果您做出不分享的承諾,也會傷害到他人。遵守這樣的承諾是邪惡的,而打破它是較小的邪惡;要真正正直,您根本不應該做出承諾。
在某些情況下,使用非自由軟體會直接對他人施加壓力,要求他們也這樣做。Skype 就是一個明顯的例子:當一個人使用非自由的 Skype 用戶端軟體時,它需要另一個人也使用該軟體——因此雙方都放棄了他們的自由。(Google Hangouts 也有同樣的問題。)即使只是建議使用此類程式也是錯誤的。我們應該拒絕使用它們,即使只是短暫地使用,甚至在別人的電腦上也是如此。
使用非自由程式和 SaaSS 的另一個危害是,它會獎勵作惡者,鼓勵進一步開發該程式或「服務」,進而導致更多人屈服於公司的掌控之下。
當使用者是公共實體或學校時,所有形式的間接危害都會被放大。
自由軟體與國家
公共機構的存在是為了人民,而不是為了自身。當他們進行運算時,他們是為人民而做的。他們有責任保持對運算的完全控制,以便確保為了人民而妥善完成運算。(這構成了國家的運算主權。)他們絕不能讓對國家運算的控制權落入私人手中。
為了保持對人民運算的控制權,公共機構絕不能使用專有軟體(受國家以外實體控制的軟體)進行運算。他們絕不能將其委託給由國家以外的實體編寫和運行的服務,因為這將是 SaaSS。
專有軟體在一個關鍵情況下完全沒有安全性——針對其開發者。而且開發者可能會幫助其他人進行攻擊。 微軟在修復 Windows 漏洞之前將其展示給 NSA(美國政府數位間諜機構)。我們不知道 Apple 是否也這樣做,但它承受著與微軟相同的政府壓力。如果任何其他國家的政府使用此類軟體,那將危及國家安全。您希望 NSA 闖入您政府的電腦嗎?請參閱我們為政府提出的推廣自由軟體的政策建議。
自由軟體與教育
學校(包括所有教育活動)透過他們教授的內容影響社會的未來。他們應該只教授自由軟體,以便利用他們的影響力來行善。教授專有程式是植入依賴性,這與教育的使命背道而馳。透過自由軟體的使用培訓,學校將引導社會的未來走向自由,並幫助有才華的程式設計師掌握這門技藝。
他們還將教導學生合作的習慣,幫助他人。每個班級都應該有這樣的規則:「同學們,這個班級是我們分享知識的地方。如果您將軟體帶到課堂上,您不得將其據為己有。相反,您必須與班級的其他成員分享副本——包括程式的原始碼,以防其他人想學習。因此,除非為了逆向工程,否則不允許將專有軟體帶到課堂上。」
專有軟體開發者會讓我們懲罰那些心地善良到願意分享軟體的學生,並阻撓那些好奇到想要更改軟體的學生。這意味著糟糕的教育。請參閱更多關於在學校中使用自由軟體的討論。
自由軟體:不僅僅是「優點」
我經常被要求描述自由軟體的「優點」。但是,當涉及到自由時,「優點」這個詞太過軟弱。沒有自由的生活是壓迫,這不僅適用於運算,也適用於我們生活中的每一項活動。我們必須拒絕讓程式或運算服務的開發者控制我們所做的運算。這是正確的做法,出於自私的原因;但不僅僅是出於自私的原因。
自由包括與他人合作的自由。剝奪人們的這種自由意味著讓他們處於分裂狀態,這是壓迫他們的計畫的開始。在自由軟體社群中,我們非常清楚合作自由的重要性,因為我們的工作包含有組織的合作。如果您的朋友來拜訪,看到您使用某個程式,她可能會索取副本。阻止您重新散佈程式,或說您「不應該」重新散佈程式的程式,是反社會的。
在運算中,合作包括將程式的精確副本重新散佈給其他使用者。它還包括將您更改的版本散佈給他們。自由軟體鼓勵這些形式的合作,而專有軟體則禁止它們。它禁止重新散佈副本,並且透過拒絕使用者原始碼,它阻止使用者進行更改。SaaSS 具有相同的效果:如果您的運算是在別人的伺服器上,由別人的程式副本透過網路完成的,那麼您就看不到或接觸不到執行運算的軟體,因此您無法重新散佈或更改它。
結論
我們應該掌控自己的運算。我們如何才能贏得這種控制權?
- 透過拒絕我們擁有或經常使用的電腦上的非自由軟體,並拒絕 SaaSS。
- 透過開發自由軟體(對於我們這些程式設計師來說)。
- 透過拒絕開發或推廣非自由軟體或 SaaSS。
- 透過向他人傳播這些想法。
- 當我們被邀請執行非自由程式時,透過說不並陳述我們的理由。
自 1984 年以來,我們和成千上萬的使用者就這樣做了,這就是我們現在擁有任何人(無論是否為程式設計師)都可以使用的自由 GNU/Linux 作業系統的方式。加入我們的行列,成為程式設計師或活動家。讓我們讓所有電腦使用者都獲得自由。
本文的實質編輯版本發表於 Wired。
觀看一段 14 分鐘的影片簡報,了解這些想法。