為何開放原始碼錯失了自由軟體的重點

「自由軟體」和「開放原始碼」這兩個詞語幾乎代表相同的程式範圍。然而,它們基於不同的價值觀,對這些程式有著截然不同的闡述。「自由軟體」運動為了電腦使用者的自由而奔走;這是一場為了自由和正義的運動。相比之下,「開放原始碼」的想法主要重視實際的優勢,而不為原則奔走。這就是我們不同意開放原始碼,並且不使用這個詞語的原因。

當我們稱軟體為「自由」時,我們的意思是它尊重使用者的基本自由:執行它的自由、研究和修改它的自由,以及在修改或不修改的情況下重新散布副本的自由。這關乎自由,而不是價格,所以請想到「言論自由」,而不是「免費啤酒」。

這些自由至關重要。它們不僅對個別使用者而言至關重要,而且對整個社會而言也至關重要,因為它們促進了社會團結——也就是分享與合作。隨著我們的文化和生活活動日益數位化,它們變得更加重要。在一個數位聲音、圖像和文字的世界中,自由軟體對於整體自由而言變得越來越重要。

全球現在有數千萬人使用自由軟體;印度和西班牙某些地區的公立學校現在教導所有學生使用自由的GNU/Linux 作業系統。然而,這些使用者大多數從未聽說過我們開發這個系統並建立自由軟體社群的倫理原因,因為如今這個系統和社群更常被稱為「開放原始碼」,這將它們歸因於一種不同的哲學,而這種哲學幾乎沒有提及這些自由。

自 1983 年以來,自由軟體運動一直在為電腦使用者的自由奔走。1984 年,我們啟動了自由作業系統 GNU 的開發,以便我們可以避免那些剝奪使用者自由的非自由作業系統。在 1980 年代,我們開發了系統的大部分基本組件,並設計了GNU 通用公共授權條款(GNU GPL)以根據該條款發布它們——這是一種專門設計用於保護所有程式使用者自由的授權條款。

並非所有自由軟體的使用者和開發者都同意自由軟體運動的目標。1998 年,自由軟體社群的一部分分裂出來,開始以「開放原始碼」的名義進行宣傳。最初提出這個詞語是為了避免可能對「自由軟體」一詞產生誤解,但它很快就與與自由軟體運動的哲學觀截然不同的觀點聯繫起來。

一些開放原始碼的支持者認為這個詞語是「自由軟體的行銷活動」,它將通過強調軟體的實際優勢來吸引企業主管,同時不提出他們可能不想聽到的關於是非對錯的問題。其他支持者斷然拒絕自由軟體運動的倫理和社會價值觀。無論他們的觀點如何,當他們宣傳開放原始碼時,他們既沒有引用也沒有倡導這些價值觀。「開放原始碼」一詞很快就與僅基於實際價值的想法和論點聯繫起來,例如製造或擁有強大、可靠的軟體。大多數開放原始碼的支持者都是從那時起才加入的,他們也做了相同的聯想。大多數關於「開放原始碼」的討論都不關注是非對錯,而只關注受歡迎程度和成功;這有一個典型的例子。少數開放原始碼的支持者現在確實說自由是問題的一部分,但在許多不這樣說的人中,他們並不那麼顯眼。

現在這兩者描述的幾乎是同一類軟體,但它們代表著基於根本不同價值觀的觀點。對於自由軟體運動而言,自由軟體是一種道德上的必然,是對使用者自由的基本尊重。相比之下,開放原始碼的哲學僅從如何使軟體「更好」——僅在實際意義上——來考慮問題。它認為,非自由軟體是手頭實際問題的較差解決方案。

然而,對於自由軟體運動而言,非自由軟體是一個社會問題,解決方案是停止使用它並轉向自由軟體。

「自由軟體」。「開放原始碼」。如果它是相同的軟體(或幾乎如此),那麼使用哪個名稱重要嗎?是的,因為不同的詞語傳達不同的想法。雖然任何其他名稱的自由程式今天都會給你帶來相同的自由,但持久地建立自由首先取決於教導人們重視自由。如果你想幫助做到這一點,那麼談論「自由軟體」至關重要。

我們自由軟體運動並不認為開放原始碼陣營是敵人;敵人是專有(非自由)軟體。但我們希望人們知道我們支持自由,所以我們不接受被錯誤地標記為開放原始碼支持者。我們倡導的不是「開放原始碼」,我們反對的也不是「封閉原始碼」。為了明確這一點,我們避免使用這些術語。

自由軟體與開放原始碼之間的實際差異

在實踐中,開放原始碼代表的標準比自由軟體的標準稍微寬鬆一些。據我們所知,所有現有的已發布自由軟體原始碼都符合開放原始碼的資格。幾乎所有開放原始碼軟體都是自由軟體,但也有例外。

首先,一些開放原始碼授權條款過於嚴格,因此它們不符合自由授權條款的資格。例如,Open Watcom 是非自由的,因為它的授權條款不允許製作修改後的版本並私下使用它。幸運的是,很少有程式使用這種授權條款。

其次,在程式碼的著作權授權條款之上添加的商標要求可能會使程式成為非自由軟體。例如,Rust 編譯器可能是非自由的,因為商標條件禁止銷售副本或散布修改後的版本,除非你完全刪除所有商標的使用。在實踐中,這需要什麼尚不清楚。

第三,開放原始碼的標準僅關注原始碼的使用。實際上,開放原始碼定義中的幾乎所有項目都被表述為對軟體原始碼授權條款的條件,而不是對使用者可以自由做什麼的條件。然而,人們經常將可執行檔描述為「開放原始碼」,因為它的原始碼可以通過這種方式獲得。這在原始碼是開放原始碼(且自由),但可執行檔本身是非自由的自相矛盾的情況下造成了混亂。

這種自相矛盾的微不足道的例子是,當程式的原始碼帶有弱自由授權條款(一種沒有著作權保護的授權條款),但其可執行檔帶有額外的非自由條件時。假設可執行檔與發布的原始碼完全對應——情況可能如此,也可能不是如此——使用者可以編譯原始碼以製作和散布自由可執行檔。這就是為什麼這種情況是微不足道的;這不是什麼嚴重的問題。

重要的、危害大的自相矛盾情況是。許多包含電腦的產品會檢查其可執行程式的簽名,以阻止使用者有效地使用不同的可執行檔;只有一家特權公司可以製作可以在設備中運行並使用其全部功能的可執行檔。我們稱這些設備為「暴君」,這種做法被稱為「tivoization」,這個名稱來自我們第一次看到它的產品(Tivo)。即使可執行檔是由自由原始碼製作的,並且名義上帶有自由授權條款,使用者也無法有效地運行其修改後的版本,因此可執行檔實際上是非自由的。

許多 Android 產品包含 Linux 的非自由 tivoized 可執行檔,即使其原始碼是在 GNU GPL 版本 2 下發布的。(我們設計了 GNU GPL 版本 3 來禁止這種做法;可惜 Linux 沒有採用它。)這些由開放原始碼和自由的原始碼製作的可執行檔通常被稱為「開放原始碼」,但它們不是自由軟體。

對「自由軟體」和「開放原始碼」的常見誤解

「自由軟體」一詞很容易被誤解:一個意想不到的含義「你可以零價格獲得的軟體」與預期的含義「給予使用者某些自由的軟體」同樣適用於這個詞語。我們通過發布自由軟體的定義,並說「想到『言論自由』,而不是『免費啤酒』」來解決這個問題。這不是一個完美的解決方案;它不能完全消除這個問題。如果沒有其他問題,一個明確且正確的詞語會更好。

不幸的是,英語中的所有替代方案都有自己的問題。我們已經研究了人們提出的許多建議,但沒有一個是如此明顯「正確」以至於切換到它會是一個好主意。(例如,在某些語境中,法語和西班牙語單詞「libre」效果很好,但印度人根本不認識它。)每個提議替換「自由軟體」的詞語都有某種語義問題——這也包括「開放原始碼軟體」。

開放原始碼軟體的官方定義(由開放原始碼促進會發布,太長無法在此處包含)間接源自我們對自由軟體的標準。它並不相同;在某些方面它稍微寬鬆一些。儘管如此,它們的定義在大多數情況下與我們的定義一致。

然而,「開放原始碼軟體」這個表達方式的明顯含義是「你可以查看原始碼」。實際上,大多數人似乎都以這種方式誤解了「開放原始碼軟體」。(對於這個含義來說,清晰的詞語是「原始碼可見」。)這個標準比自由軟體定義弱得多,也比開放原始碼的官方定義弱得多。它包括許多既不是自由軟體也不是開放原始碼的程式。

為什麼人們會以這種方式誤解它?因為那是「開放原始碼」這個詞語的自然含義。但是開放原始碼倡導者尋求另一個名稱的概念是自由軟體的一個變體。

由於「開放原始碼」的明顯含義不是其倡導者想要的含義,因此結果是大多數人誤解了這個詞語。根據作家尼爾·斯蒂芬森的說法,「Linux 是『開放原始碼』軟體,簡而言之,這意味著任何人都可以獲得其原始碼檔案的副本。」我不認為他故意試圖拒絕或駁斥官方定義。我認為他只是應用英語的慣例來得出這個詞語的含義。堪薩斯州發布了一個類似的定義:「使用開放原始碼軟體(OSS)。OSS 是原始碼可以自由公開獲得的軟體,儘管關於一個人可以用該程式碼做什麼的具體授權協議各不相同。」

紐約時報 刊登了一篇文章,擴展了這個詞語的含義,以指代使用者 beta 測試——讓少數使用者試用早期版本並提供機密回饋——這是專有軟體開發商幾十年來一直在實踐的做法。

這個詞語甚至被擴展到包括未經專利發布的設備設計。無專利設備設計可能是對社會值得稱讚的貢獻,但「原始碼」一詞與它們無關。

開放原始碼的支持者試圖通過指出他們的官方定義來處理這個問題,但這種糾正方法對他們來說不如對我們有效。「自由軟體」一詞有兩個自然含義,其中一個是預期的含義,因此理解了「言論自由,而不是免費啤酒」這個想法的人不會再弄錯。但是「開放原始碼」一詞只有一個自然含義,這與其支持者想要的含義不同。因此,沒有簡潔的方法來解釋和證明其官方定義的合理性。這造成了更糟糕的混亂。

對「開放原始碼」的另一個誤解是認為它意味著「不使用 GNU GPL」。這往往伴隨著另一個誤解,即「自由軟體」意味著「GPL 許可的軟體」。這兩種說法都是錯誤的,因為 GNU GPL 符合開放原始碼授權條款的資格,並且大多數開放原始碼授權條款都符合自由軟體授權條款的資格。除了 GNU GPL 之外,還有許多自由軟體授權條款

「開放原始碼」一詞已被進一步擴展應用於其他活動,例如政府、教育和科學,在這些活動中,沒有原始碼這樣的東西,並且軟體授權的標準根本不適用。這些活動唯一共同點是它們以某種方式邀請人們參與。它們將這個詞語擴展得如此之遠,以至於它僅僅意味著「參與式」或「透明」,或者更少。在最壞的情況下,它變成了一個空洞的流行語

不同的價值觀可能會導致相似的結論——但並非總是如此

1960 年代的激進團體以內訌而聞名:一些組織因策略細節上的分歧而分裂,兩個衍生團體儘管有相似的基本目標和價值觀,卻將彼此視為敵人。右翼人士對此大做文章,並以此來批評整個左翼。

有些人試圖通過將我們與開放原始碼的分歧比作那些激進團體的分歧來貶低自由軟體運動。他們的說法顛倒了。我們在基本目標和價值觀上與開放原始碼陣營存在分歧,但他們的觀點和我們的觀點在許多情況下導致了相同的實際行為——例如開發自由軟體。

因此,來自自由軟體運動和開放原始碼陣營的人們經常在實際專案(如軟體開發)上合作。如此不同的哲學觀點能夠如此頻繁地激勵不同的人參與相同的專案,這真是令人驚嘆。儘管如此,在某些情況下,這些根本不同的觀點會導致截然不同的行動。

開放原始碼的想法是,允許使用者更改和重新散布軟體將使其更加強大和可靠。但這並不能保證。專有軟體的開發者不一定無能。有時他們會生產出強大而可靠的程式,即使它不尊重使用者的自由。自由軟體行動主義者和開放原始碼愛好者對此的反應會非常不同。

一個純粹的開放原始碼愛好者,一個完全不受自由軟體理想影響的人,會說:「我很驚訝你能夠在不使用我們的開發模型的情況下使程式運行得如此出色,但你做到了。我怎樣才能獲得副本?」這種態度會獎勵剝奪我們自由的方案,導致自由的喪失。

自由軟體行動主義者會說:「你的程式非常有吸引力,但我更重視我的自由。所以我拒絕你的程式。我將通過其他方式完成我的工作,並支持一個開發自由替代品的專案。」如果我們重視我們的自由,我們可以採取行動來維護和捍衛它。

強大、可靠的軟體可能很糟糕

我們希望軟體強大而可靠的想法來自於這樣一個假設,即軟體旨在為其使用者服務。如果它是強大而可靠的,那就意味著它更好地為他們服務。

但是,只有當軟體尊重使用者的自由時,才能說軟體為其使用者服務。如果軟體旨在給使用者戴上枷鎖呢?那麼強大就意味著枷鎖更具約束力,而可靠性則意味著它們更難去除。惡意功能,例如監視使用者、限制使用者、後門和強制升級在專有軟體中很常見,一些開放原始碼支持者希望在開放原始碼程式中實現它們。

在電影和唱片公司的壓力下,供個人使用的軟體越來越多地被專門設計用於限制他們。這種惡意功能被稱為數位限制管理 (DRM)(參見 DefectiveByDesign.org),並且在精神上與自由軟體旨在提供的自由完全相反。不僅在精神上:由於 DRM 的目標是踐踏你的自由,DRM 開發者會盡力讓你難以、不可能甚至非法地更改實施 DRM 的軟體。

然而,一些開放原始碼支持者已經提出了「開放原始碼 DRM」軟體。他們的想法是,通過發布旨在限制你訪問加密媒體的程式的原始碼,並允許其他人更改它,他們將生產出更強大、更可靠的軟體來限制像你這樣的使用者。然後,該軟體將交付給你無法更改它的設備。

這種軟體可能是開放原始碼的,並使用開放原始碼開發模型,但它不會是自由軟體,因為它不會尊重實際運行它的使用者的自由。如果開放原始碼開發模型成功地使這種軟體在限制你方面更強大、更可靠,那將使其變得更糟。

對自由的恐懼

那些將開放原始碼陣營從自由軟體運動中分裂出來的人的主要最初動機是,自由軟體的倫理思想讓一些人感到不安。這是真的:提出自由等倫理問題,談論責任以及便利性,是要求人們思考他們可能更願意忽略的事情,例如他們的行為是否符合道德規範。這可能會引發不適,有些人可能會直接對此閉上思想。這並不意味著我們應該停止談論這些問題。

然而,這正是開放原始碼的領導者決定要做的事情。他們認為,通過對倫理和自由保持沉默,只談論某些自由軟體的直接實際優勢,他們或許能夠更有效地向某些使用者(尤其是企業)「推銷」該軟體。

當開放原始碼的倡導者談論比這更深層次的東西時,通常是將原始碼「贈送」給人類的想法。將此作為一種特殊的善行來呈現,超越了道德上的要求,這假定散布沒有原始碼的專有軟體在道德上是合法的。

事實證明,這種方法在其自身的條件下是有效的。開放原始碼的修辭說服了許多企業和個人使用甚至開發自由軟體,這擴大了我們的社群——但僅在膚淺的、實際的層面上。開放原始碼的哲學及其純粹的實際價值觀阻礙了對自由軟體更深層次思想的理解;它將許多人帶入我們的社群,但沒有教導他們捍衛它。就其本身而言,這是好事,但不足以確保自由的安全。吸引使用者使用自由軟體只是讓他們成為自身自由捍衛者的一部分。

遲早這些使用者會被邀請切換回專有軟體以獲得一些實際優勢。無數公司試圖提供這種誘惑,有些甚至免費提供副本。使用者為什麼會拒絕?只有當他們學會重視自由軟體給予他們的自由,重視自由本身,而不是特定自由軟體的技術和實際便利性時,才會拒絕。為了傳播這個想法,我們必須談論自由。一定程度的對企業採取「保持沉默」的方法可能對社群有用,但如果它變得如此普遍,以至於對自由的熱愛似乎變成一種怪癖,那將是危險的。

我們正處於這種危險的境地。大多數參與自由軟體的人,尤其是其發行商,很少談論自由——通常是因為他們試圖「更容易被企業接受」。幾乎所有 GNU/Linux 作業系統發行版都在基本的自由系統中添加了專有套件,並且他們邀請使用者將此視為優勢而不是缺陷。

專有附加軟體和部分非自由的 GNU/Linux 發行版找到了肥沃的土壤,因為我們社群的大多數人並不堅持軟體的自由。這絕非巧合。大多數 GNU/Linux 使用者都是通過「開放原始碼」討論被引入該系統的,而「開放原始碼」討論並沒有說自由是一個目標。不維護自由的做法和不談論自由的詞語是相輔相成的,彼此促進。為了克服這種趨勢,我們需要更多而不是更少地談論自由。

「FLOSS」和「FOSS」

術語「FLOSS」和「FOSS」用於在自由軟體和開放原始碼之間保持中立。如果中立是你的目標,那麼「FLOSS」是兩者中較好的,因為它確實是中立的。但是如果你想捍衛自由,使用中立術語並不是正確的方法。捍衛自由意味著向人們展示你對自由的支持。

爭奪心智佔有率的競爭者

「自由」和「開放」是爭奪心智佔有率的競爭者。自由軟體和開放原始碼是不同的想法,但在大多數人看待軟體的方式中,它們競爭相同的概念位置。當人們習慣於說和思考「開放原始碼」時,這就阻礙了他們理解自由軟體運動的哲學並思考它。如果他們已經將我們和我們的軟體與「開放」一詞聯繫起來,我們可能需要從智力上震動他們,然後他們才能認識到我們代表著其他東西。任何宣傳「開放」一詞的活動都傾向於延伸掩蓋自由軟體運動思想的帷幕。

因此,建議自由軟體行動主義者拒絕參與自稱為「開放」的活動。即使該活動本身是好的,你做出的每一項貢獻都會在旁邊造成一點傷害,因為它宣傳了開放原始碼的想法。還有許多其他好的活動自稱為「自由」或「libre」。對這些專案的每一項貢獻都會在旁邊產生一點額外的好處。有這麼多有用的專案可供選擇,為什麼不選擇一個能帶來額外好處的專案呢?

結論

隨著開放原始碼的倡導者將新使用者吸引到我們的社群中,我們自由軟體行動主義者必須承擔起將自由問題引起他們注意的任務。我們必須說:「這是自由軟體,它給你自由!」——比以往任何時候都更響亮、更頻繁地說。每次你說「自由軟體」而不是「開放原始碼」時,你都在幫助我們的事業。

註釋

  • 喬·巴爾寫了一篇名為 活著並讓授權條款存在 的文章,其中給出了他對這個問題的看法。
  • 拉卡尼和沃爾夫的關於自由軟體開發者動機的論文說,相當一部分人受到軟體應該是自由的觀點的驅動。儘管事實是他們在 SourceForge 上調查了開發者,而 SourceForge 是一個不支持這是一個倫理問題的網站。