本翻譯可能無法反應當下現況。文章更動時間為 2019-03-20 ,原文為 英文。
您應該查閱 更動之處。 請參見 翻譯讀我 README 來瞭解維護本文翻譯所需之相關事宜。
自由軟體是什麼?
自由軟體定義
對於自由軟體授權還有這裡尚未解答的疑惑嗎?請參考我們其他的 授權條款資源,若有需要請不吝寫信至 licensing@fsf.org 向 FSF 合規研究室詢問相關事宜。
「自由軟體」代表軟體尊重使用者的自由,以及社群的自由。粗略地講,它代表使用者擁有執行、複製、散布、研究、更動和改善該軟體的自由;所以,「自由軟體」所講述的是自由,無關乎價格。自由軟體這個概念就跟「自由言論 (free speech)」一樣,而不是「免費啤酒 (free beer)」[按1]。西方有時也會借用法文或西班牙文的「libre software」來描述自由的「free」,藉此表明這裡講的並非是免除費用的軟體。
因為人人都應得自由,所以我們為所有人爭取這些自由。有了這些自由,使用者(包括個人與集體)才能控制這個軟體、以及這個軟體的所作所為。一旦使用者無法控制軟體,我們便將之稱為「非自由 (nonfree)」軟體或「專有 (proprietary)」軟體。非自由軟體控制住使用者,而該軟體則接受開發者的控制;如此一來這個程式軟體便成了不正當權力的施行工具。
四大自由
如果軟體使用者能擁有以下四項自由,則該程式軟體就是自由軟體︰[1]
- 依照你的想法執行該程式的自由,無論任何目的(自由之零)[按2]。
- 研究該程式如何運作的自由,並依照你的想法修改它以符合你的運算所需(自由之壹)。能存取程式的源始碼 (source code) 是這項自由的先決條件。
- 再次散布程式副本的自由,如此你就能幫助他人(自由之貳)。
- 將你修改過後的版本散布給他人的自由(自由之參)。如此你就有機會讓你的改善惠及社群整體。能存取源始碼是這項自由的先決條件。
若一軟體能妥善給予使用者上述的這些自由,那麼它就是自由軟體;否則的話,就是非自由軟體。儘管我們能根據這些非自由軟體的散布方式排列出它們與自由之間的遠近;但我們認為那全都不合道德,無論有多接近自由。
在任何情境之下,無論我們打算利用的任何程式碼為何,或是引導他人利用的任何程式碼為何,這些自由都必須一併適用。舉例而言,假想甲程式會自動啟動乙程式處理某些事。如果我們打算散布這樣的甲程式,那麼代表使用者也將需要乙程式,因此我們必須判斷是否甲程式、乙程式皆是自由軟體。然而,如果我們打算修改甲程式讓它不會用到乙程式,那麼只有甲程式需要是自由軟體,而乙程式對這樣的做法就不會產生影響。
「自由軟體」不代表「非商業行為」。自由軟體必須能作為商業使用、商業開發、與商業散布等。如今商業開發的自由軟體已經相當常見,有這樣的自由商業軟體至關重要。你可能需要付費取得某自由軟體的副本,但你也可能免費取得;無論你是怎樣取得軟體副本的,你必然享有複製與改動該軟體的自由,甚至也能銷售該軟體的副本。
本頁其餘內容在說明如何妥善滿足特定自由的要點。
依照你的想法執行該程式的自由
執行程式的自由,意指任何人或組織皆可在任何電腦系統上使用該程式、用於任何作業與用途,而不必知會開發者或任何其他特定單位。這項自由,訴求的重點是使用者 的自身目的,而無關開發者 所設想的目的;你身為使用者擁有依個人目的執行程式的自由。如果你把軟體散布給其他人,那麼她便擁有依其個人用途執行軟體的自由,你無法將你所設想的用途強加在她身上。
依照你的想法執行該程式的自由,代表無法禁止或阻止誰執行它。這和程式本身所擁有的功能無關,無論其技術上在任何給定環境下能否運作、或無論其是否能用於特定的電腦作業。
研究源始碼並修改的自由
為了讓自由之壹和參(修改軟體之自由,以及發布修改後版本的自由)有意義,你必須能夠取得程式的源始碼。所以,源始碼的可得性是自由軟體的必要條件。混淆後無法解讀的「源始碼」並非真正的源始碼,因而不能算是源始碼。
自由之壹包括改用你修改後版本來替換原來版本的自由。如果一產品中的程式可執行某人修改後的版本,卻拒絕運行你的版本——這種做法稱之為「tivo 行為 (tivoization)」或「閉鎖 (lockdown)」、或像(其施行者講的邪魔外道用語)是「安全開機 (secure boot)」——自由之壹便成空中樓閣,而非真實不虛。這樣的二進位檔並非自由軟體,即使軟體的編譯用源始碼是自由的亦是如此。
修改程式的重要方式之一是合併現成的自由副常式及模組。如果程式的授權條款不允許你合併適當授權的既有模組,例如:要求你必須是你所加入的任意代碼之著作權人——那麼這樣的授權條款限制性過大,稱不上自由的授權。
對軟體的修改是否屬於改善是種主觀的問題。如果你修改程式的權利受到實質限制,無論之前的修改有多大幅度的改善,也都算不上是自由軟體。
依照你的想法再次散布的自由:基本需求
散布的自由意味著你能自由地再次散布軟體副本,不管有無任何修改,無論有無對散布行為收取費用,更不必提想散布給什麼地方的什麼人。自由的意義在於當你做這些事的時候,不用另外尋求任何許可、也不必付費取得任何同意。
你應該也擁有做出修改、並私自用於個人作品或者把玩的自由,更而無須向他人提及這件事。如果你有公開發布這些修改,也不必另外以任何方式通知任何人。
自由之參包括以自由軟體發行你修改後版本的自由。自由的授權條款可能也允許以其他方式發行軟體;換句話說,自由的授權條款不一定要是著作傳 (copyleft)式的授權條款。然而,若授權條款要求修改後的版本得改為非自由軟體,那就不算是自由的授權條款。
再次散布軟體副本的自由必須包含程式的二進位檔或其可執行形式、與其源始碼,無論該軟體是否被修改或沒有被修改。(以可執行形式散布軟體對於能方便安裝的自由作業系統來說是必要的。)如果某些程式無法產出二進位檔或可執行形式(因某些程式語言不支援該功能之故)則沒有關係,但當你發現或發展出解決這個問題的方法時,就必須擁有再次散布該種軟體形式的自由。
著作傳
我們可以採取一些措施來規範自由軟體的散布方式,只要這些規則不會和核心自由衝突即可。舉例來說,著作傳 (copyleft) [此處傳的發音為ㄔㄨㄢˊ] 是一種再次散布程式的規則,使你無法對其他人施加限制以綁住他們的重要自由;這樣的規則不會與核心自由衝突,反而更加保護這些自由。
在 GNU 專案中,我們採取著作傳的方式以法律手段保護所有人的四大自由。基於許多重要因素,我們認為採取著作傳的方式更佳;不過,其他採用非著作傳方式散布的自由軟體亦合乎道德。請見自由軟體類別來瞭解「自由軟體」、「著作傳軟體」及其他軟體類別之間的相互關係。
詳述有關打包和散布的規則
打包的規則若沒有實質限制你發行修改後版本軟體的自由,或限制你私下製作並自行運用修改後版本的自由,那麼這些軟體的打包規則便可以接受。因此,如果授權條款要求你必須更動修改後版本的軟體名稱、移除原 Logo 標誌、或辨別出你的修改……等等,都是可以接受的。只要這些要求不會繁瑣沉重到實際阻礙你發行自己的更動,那麼就能接受;試想你已經對這個軟體做出許多更動,再多做一點點應該也不成問題。
「如果你以這種方式發布你的軟體版本,那麼你也必須要用那種方式發布」的規則,只要滿足相同的條件也可以接受。可接受的規則範例之一是,如果你已將一個修改後的軟體版本散布出去,接著軟體先前的開發者要求你給他一份副本,那麼你就必須提供給他。(請留意到,即使在此規則之下,你依然保有到底要不要將你自己的版本散布出去的選擇。)要求你將提供給大眾使用的版本之程式源始碼發行出來的規則亦可接受。
有個特殊情況是,如果授權條款要求修改後的版本必須改名,但這個程式卻會被其他程式調用。這樣其他程式便無法調用你的版本,嚴重妨礙你用修改後的版本替換原版。這類要求唯有程式具備妥當的別名對照功能,允許你指定原始程式的名稱作為你修改後版本的別名,如此才能接受。
出口管制
有時候政府的出口管制條例和貿易制裁會限制你在國際散布軟體的自由。軟體開發者並沒有權力消除或凌駕這些限制,但他們可以做、且必須做的是拒絕施加這些限制作為使用該程式的條款。這樣一來,在這些政府管轄範圍以外的相關行為活動或人們就不會因而受到影響。因此,自由軟體必然不要求遵循任何高位階效力的出口管制條例作為實現任何必要自由的條款之一。
單獨來看出口管制條例存在一事,只要不把它們納為授權本身的條款,那麼既然沒有限制使用者,就能接受。如果出口管制條例的位階實際上對自由軟體來說效力更輕微,那麼要求將它作為條款之一也不成問題;然而,這可能存有潛在問題,畢竟往後若出口法令修改使得該要求效力更高,那麼該軟體將轉變為非自由軟體。
法律觀點
為了讓這些自由成真,只要你沒做錯任何事,這些自由就必須永恆、不可撤銷。如果軟體的開發者,在即便你沒有做出任何可給予錯誤原因之情事的狀況下,仍擁有撤銷授權條款、或往回追溯增補限制條款的權力,那便不是自由軟體。
自由的授權條款不可要求遵守非自由軟體的授權條款。因此,舉例而言,若授權條款要求你遵循「你使用之所有軟體程式」的授權條款,剛好使用者有執行非自由的軟體程式,這就需要遵守那些非自由軟體的授權條款;那麼這樣的授權條款便非自由授權。
指定司法裁判之適用法律、或是訴訟之提起地點、抑或是兩者,仍得被接受為自由的授權條款。
以契約為基礎的授權條款
大多數自由軟體的授權條款都是根據著作權而來,而可透過著作權施予的相關要求會有所限制。如果以著作權為基礎的授權條款能以上述方式尊重自由,那麼似乎不會有其他我們從未預期的問題(雖然偶爾還是會發生)。然而,有些自由軟體的授權條款根據契約而來,而契約可以施加更多的可能限制。這代表這類授權條款很可能被視為無法接受地限制故為非自由。
我們無法列舉所有可能發生的情況。如果以契約為基礎的授權條款,透過著作權式授權條款無法達成的非尋常方式限制使用者,而且並未在此列為適當的自由軟體授權之一,我們必需花點時間考量,而最終多半可能認為它屬於非自由授權。
當提及自由軟體時請使用正當的字詞
當提及自由軟體時,最好要避免使用「贈送」、或「免費」等字詞,因為這類字詞暗指重點在於價格,而不是自由。一些常見用語如「盜版」,涵蓋了我們希望各位不要贊同的想法。請參考值得避免的混淆字詞一文,內有這類字詞的相關討論。我們也有一份妥善將「自由軟體」一詞翻譯成各種語言的清單。
我們該如何解釋這些準則
最後,當你在詮釋本篇自由軟體定義中所陳述的準則時請務必謹慎思考。若要判定某特定軟體授權是否符合自由軟體授權的定義時,我們便根據這些準則來判斷它是否合乎自由軟體的精神、以及用辭是否準確。如果授權條款包含無理的限制,即便我們預期那些狀況不會發生,我們仍一樣堅決反對。有時某授權條款的要求引起廣大的思慮,在我們能判斷出該要求是否可接受之前,還需要先和律師討論過。一旦我們對新議題有了總結,我們一般會更新這些準則讓大眾能更輕鬆瞭解為何哪些授權條款符合,而哪些不符。
尋求自由授權條款的相關幫助
如果你想瞭解某特定授權條款是否合乎自由軟體的授權條款,請見我們的授權條款清單。如果你想瞭解的授權條款不在此列,請寫信寄送到 <licensing@gnu.org> 詢問。
若你苦心孤詣想撰寫出新的授權條款,還請先透過相關方式來聯絡自由軟體基金會。畢竟不同的自由軟體授權條款若持續誕生,代表使用者得下更多苦工去瞭解各種授權條款;而我們可協助你找出合乎需求的現成自由軟體授權條款。
如果真的無法做到,萬一你真的需要新的授權條款,我們可以協助你確保新的授權條款成為真正的自由軟體授權,同時避免許多實務上的問題。
軟體之外
跟軟體必須自由一樣,軟體使用手冊也一定要自由,因為使用手冊屬於軟體的作用部份。
這些論點也同樣適用於日常生活的作品——像是承載有用知識的作品,包括教育著作和參考書等。其中以維基百科最廣為人知。
任何類型的作品也能夠自由,自由軟體的定義已延伸出自由文化作品的定義,能用於任何類型的作品。
開放源始碼?
有另一群人開始用「開放源始碼」或「開源」等這些詞彙來表示類同(但並非全完等同)「自由軟體」的東西。我們更偏愛「自由軟體」一詞,因為一旦你瞭解它所描述的是自由而非價格後,這會喚起人們對自由的關注。至於「開放」一詞,永遠都不會讓人想到自由。
歷史記錄
我們會不時修訂「自由軟體」的定義。這裡是有實際更改的紀錄清單,隨附確實指出修改何處的連結。
- 1.153 版:澄清執行程式的自由代表沒有什麼可以阻止你讓它執行。
- 1.141 版:澄清何程式碼需要自由。
- 1.135 版:在每次講到自由之零時提到它是依據你的想法執行程式的自由。
- 1.134 版:自由之零無關程式具備的功能。
- 1.131 版:自由的授權條款不可要求遵守其他非自由的授權。
- 1.129 版:明確表達可選擇適用之法律與指定裁判之法庭。(這一直都是我們的政策方針。)
- 1.122 版:出口管制條例只有在位階低微才會造成真正的問題;否則它只是潛在問題。
- 1.118 版:澄清:問題在於限制你修改的權利,而非限制你做出怎樣的修改。任何修改都不只限於「改善」。
- 1.111 版:澄清 1.77 版只講到溯及以往的限制不可接受。著作權持有人永遠有權同時以不同方式發行著作並賦予額外許可。
- 1.105 版:在自由之壹的簡要聲明中,反映出(已在 1.80 版中表述)確實包含使用你修改後的版本作為個人運算用的論點。
- 1.92 版:澄清代碼混淆並不算得上是源始碼。
- 1.90 版:澄清自由之參意指自由散布你所修改後或改善後軟體版本的權利,而不是去參與他人開發專案的權利。
- 1.89 版:自由之參包括將修改後的版本以自由軟體發行的權利。
- 1.80 版:自由之壹必得實現,不能只是空談。例如︰不能接受 Tivo 行為。
- 1.77 版:澄清就算沒有要完全取代,只要是往回追溯更動授權條款也是不能接受的。
- 1.74
版:澄清四個不夠清𥇦、或是其他地方有提及但未全面反映的論點︰
- 「改善」並不代表授權可實質限制你可發行何種修改後版本的類型。自由之參包含散布修改後的版本,不只是更改而已。
- 合併至既有模組的權利僅限於以適合條款授權的模組。
- 明確聲明有關出口限制的結論。
- 強行改變授權條款致使舊授權條款撤銷之議題。
- 1.57 版:增補【軟體之外】小節。
- 1.46 版:澄清在依據個人目的執行程式的自由之中,何者的目的是重點。
- 1.41 版:澄清有關基於契約的授權條款之用字遣詞。
- 1.40 版:解釋自由的授權條款必須允許你運用其他現有的自由軟體來作修改。
- 1.39 版:註明授權條款可以要求你提供你發布給公眾使用的軟體版本其程式源始碼。
- 1.31 版:註明授權條款可以要求將你辨別為修改的作者。文中載有其他次之的澄清。
- 1.23 版:指出基於契約法的授權條款的潛在問題。
- 1.16 版:解釋為何散布二進位檔相當重要。
- 1.11 版:註明自由授權條款可以依據前作者要求向其提供你所散布之版本的副本。
版號之間有略過一些,因為這些版本中本頁面的變動並未影響到定義或者解釋。舉例來說,清單未列出不影響內容的更動,像是格式設定、拼字、標點、頁面的其他部分。你可以透過 cvs 網頁界面 檢閱本頁的完整更動清單。
註腳
- 之所以採零、壹、貳、參為編號是有典故的。在1990年左右,我們有三大自由,即自由之壹、貳、參。後來,我們發現執行程式的自由也必須明確指出才行。這一點很明顯比其他三者更為基礎,所以最好這項自由放到那三點之前;與其重新編號,我們決定讓它作為自由之零。
- 中文讀者也許會覺得這語句很怪,因為英文的 Free 有「自由」及「免費」兩個意思,所以作者要特別聲明,以正視聽。
- 電腦有「零」的概念,很多時軟體工程師在編程時都會以 0 開始,很有趣吧!
自由軟體(free software)的定義界定了一特定軟體是否能合乎自由軟體的準則。為了更清楚說明或解決一些細微問題,我們會不時修訂這項定義。請見下方的歷史記錄區段瞭解自由軟體定義的更動處。
「開放源碼」講的是不一樣的東西:這個詞彙背後代表的價值觀和理念思想大為不同。即便它在實務上的定義也不相同,但可以說幾乎所有的開源軟體實際上都是自由軟體。我們在為什麼說「開源」亡失自由軟體的重點這篇文章中解釋了兩者間的差異。