This translation may not reflect the changes made since 2013-05-27 in the English original. You should take a look at those changes. Please see the Translations README for information on maintaining translations of this article.
甚麼是自由軟體?
自由軟體的定義
自由軟體(Free Software)的定義界定了一個特定的軟體能否乎合自由軟體的準則。為了解決一些細節的問題,我們不時會重新審視這些準則。可以從以下的更新記錄了解這個定義的演變。
「自由軟體」指尊重使用者及社群自由的軟體。簡單來說使用者可以自由運行、複製、發佈、學習、修改及改良軟體。他們有操控軟體用途的權利。
如果使用者不能控制軟體,就會反被軟體操控,而軟體開發者就可以透過軟體操控使用者。這些不自由(nonfree)或專有(proprietary)的軟體就成為不公義勢力的利器。
所以「自由軟體」是自由、權利的問題,而不是價格的問題。自由軟體的性質就跟「自由言論」一樣,而不是「免費啤酒」[按1]。
如果軟體使用者有以下四項自由,那軟體就是自由軟體︰
- 以任何目的運行該程式 (自由0)[按2]。
- 取得軟體的代碼(source code)並學習程式的運作、修改為你想要的樣子 (自由1)
- 隨意發佈軟體副本以幫助別人 (自由2)。
- 隨意分發你修改的版本(包括代碼)給別人 (自由 3)。此舉可使你的版本惠及社群。
如果使用者有以上的自由,那程式就是自由軟體。你有自由用任何方式發佈副本給任何地方的所有人,不論是原封不動還是修改過的版本、不論是免費還是收費。自由的意思是不用給任何人同意、或付費取得權限。
你也有私下修改及使用自由軟體的自由,而且不必提及這件事。如果你發表這些修改,也不必以任何方式通知任何人。
運行程式的自由指任何人物、組織可以在任何電腦系統運行該程式作任何用途,而不必知會第三者。這是使用者的事情,跟開發者無關。以使用者身份你可以個人目的使用程式。如果你把軟體分發給其他人,那他們也可以為各自的用途使用軟體,而且你不能強制他們的用途。
發佈軟體的自由必需包括程式的二進制或可執行形式[按3]、和代碼、原版及修改後的版本。(以可執行形式發佈軟體十分重要,可以使自由的操作系統更方便安裝)有些例外是軟體所採用的編程言語沒有可執行形式的功能,但你一定要有自由發佈那種形式。
為了自由 1、3(修改軟體及發佈修改版本的自由)變得有意義,你必需取得程式的代碼,所以取得代碼是自由軟體的必要條件。打亂了的「代碼」並不能視為代碼。
自由1包括使用你的修改版本代替原來版本的自由。如果某產品預設運行其修改版本而拒絕運行你的版本 — a practice known as “tivoization” or “lockdown”, or (in its practitioners' perverse terminology) as “secure boot” — 自由1就變成空想的理論而不是實際的自由。這是不足夠的,就算該程式的源碼是自由的,但其可執行檔也不是自由軟體。
一個重要的修改程式方法就是合併現成的子程式及模組。如果程式的許可證不允許這種做法,例如要求你持有版權才以添加代碼,這樣的限製實在太大,算不上甚麼自由。
自由3包括以自由軟體方式發佈修改版本的自由。一個自由的許可證也要允許其他的發佈方式,簡言之許可證不必是公共版權(copyleft)。然而,要求修改後的版本成為非自由的不算是自由許可證。
要落實這些自由,自由的許可證必需是不可逆轉的;如果開發者可以廢除許可證,或加逆向增加限制條款,這個都不是自由軟體。
然而,不限制核心自由的規則是可以接受的。例如公共版權規定了發佈程式時,不能限制別人的核心自由。這規定就沒有跟核心自由沖突,而且還加強保護。
「自由軟體」不代表「非商業用途」。自由軟體必需要容許作商業用途。現在商業的自由軟體開發已經十分常見,而且十分重要。你或者曾付款購買自由軟體的複製本,或者免費獲得;無論軟體來自何方,你一定有修改、複製、售賣軟體的自由。
對軟體的修改是否屬於改進是主觀的問題。如果你修改程式的權利受到限制,無論之前的修改有多大的改進,也不能算是自由軟體。
然而,如果沒有限制你發放或私人使用修改版本的自由,規定打包修改版本的方式是可接受的。只要不妨礙你發佈修改版本,許可證要求你對修改版本更改名稱、移除圖案、標明你修改的地方也是可以接受的;你已經修改了程式,多作少許修改應該沒有困難。
有個特殊情況,如果許可證要求改名的程式會給其他程式調用。這會嚴重妨礙你以修改的版本代替原版的功能。這類要一定要發佈者提供適當的措施把修改了的程式的名稱聯繫到原版的名稱,不則不能接受。
「如果你這樣發佈你的軟體版本,你也一定要這樣做」的規則也可以接受,大家的條件是一樣的。例子之一就是如果你發佈了一個修改好的版本,然後舊版本的開發者要求一份副本,你一定要提供。(請注意,你還是有權決定是否發佈你的版本)。要求發佈你向公眾發表的版本代碼給使用者也是可以接受的。
我們的GNU項目會使用公共版權以法律手段保障所有人使用軟體的自由。但也有不是公共版權的自由軟體。我們堅信使用公共版權是較好的,但如果你的程式屬於不是公共版權的自由軟體,基本上也是合符道德的。(看看自由軟體分類了解「自由軟體」、「公共版權軟體」及其他種類軟體的關係。)
有些政府的出口控制條款和貿易制裁會限制你在國際發佈軟體的自由。軟體開發者沒有權力消除這些限制,但他們一定不要把這些限制成為使用軟體的條件。這樣在這些政府權力以外的人就可以不受限制。其實自由軟體根本就不可以要求服從任何限制核心自由的條款。
大部份自由軟體許可證都是基於版權法,而且可以要求的事是有限制的。如果一個基於版權法的許可證尊重以上所說的自由,就應該不會碰到我們從未遇過的問題(雖然有時會罕有地發生)。然而,有些自由軟體許可證是有合約的,合約就有很大的機會可以增加限制。這意味這類許可證有機會過份地限制軟體而令其不再自由。
我們無法列舉所有的情況。如果上述的許可證以不常見的方法限制使用者,就要重新審視,大概我們都會認為這不是自由軟體。
提及有關自由軟體的時候,最好避免使用「放棄」、「免費」等字眼,因為這類字眼暗示了這是價格問題,而不是自由。一些常見如「盜版」等有偏見的用語希望你不要認同。請參考混淆和應避免使用的詞語的討論。我們也有張翻譯「自由軟體」到不同語言的清單。
最後,注意有關這篇自由軟體的準則要小心詮釋。決定某軟體許可證是否自由,我們會審視它是否符合自由軟體的精神,還有準確用詞。如果許可證包括無理的限制,就算我們沒有預期那些情況會發生,一律堅決拒絕。有些許可證涉及太多考慮,我們要咨詢律師才能下判斷。當我們給新問題下定論,就會更新這些準則令大家容易了解這些原因。
如果想了解某許可證是否符合自由軟體許可證,看看我們的許可證清單。如果你想了解的不在此列,請來信 <licensing@gnu.org> 詢問。
如果想撰寫新的許可證,請先聯絡自由軟體基金會,我們會嘗試幫忙找出適合你的現成許可證。
如果真的找不到,我們可以幫你確保新的許可證為真正的自由軟體許可證,同時避免了很多實務難題。
軟體以外
跟軟體一樣,其說明書也一定要自由,因為說明書是軟體極重要的一部份。
這論點也適用於日常生活,教育工作和參考作品一類的知識。維基百科就是最廣為人知的樣版。
任何種類的作品也可以自由,自由軟體的定義已伸延到自由文化作品。
開放源碼?
有一群姐開始使用「開放源碼」這詞語指示近乎(但不全完一樣)「自由軟體」的東西。我們屬意「自由軟體」一詞,因為這意味自由而不是價格,這喚起自由的聯想。「開放」一詞很難聯想到自由。
更新記錄
我們不時重新審視自由軟體的定義。這裏有些更新的記錄,還附有詳細解釋的連結。
- 版本 1.111。澄清︰版本1.77 有關只有涉及以往的限制不被接受的說法。版權持有人有權同時就不同方式發佈的著作賦予額外的權限。
- 版本 1.105。表示自由1的聲明的論點(已在1.80表示)︰包括使用你修改後的軟體版本。
- 版本 1.92。澄清︰打亂的程式碼並不能視為源碼。
- 版本 1.90。澄清︰自由3 指發佈你修改或改良軟體版本的權利,不是參與某開發項目的權利。
- 版本 1.89。自由3包括以自由軟體發佈修改版的權利。
- 版本 1.80。自由1一定要落實,不可以以流於理論。例如︰不能Tivoization (譯者按︰利用硬體限制自由軟體的自由,如有好的中譯,請通知我們)
- 版本 1.77。澄清︰就算沒有完全取代原意,追溯以往授權許可證的變更也是不能接受的。
- 版本
1.74。澄清四個不清𥇦、不全面的論點︰
- 「改良」不是指許可證可以限制發佈修改版本的種類。自由 3 包括了發佈修改版本,不只變更。
- 合併現有模組的權利只限於本身有適合許可證的模組。
- 明確表示有關出口限制的結論。
- 強制轉換許可證使舊許可證作廢。
- 版本 1.57。增加段落「軟體以外」。
- 版本 1.46。澄清︰ 他以任何目的運行程式的自由的目的有重大意義。
- 版本 1.41。澄清︰ 有關基於合約的許可證的用詞。
- 版本 1.40。解釋自由的許可證一定容許你使用其他自由軟體作修改。
- 版本 1.39。註明許可證可以要求發佈者提供在公共場合使用的軟件版本的源碼。
- 版本 1.31。註明許可證可要求修改者識別自己為修改者。其他次要的澄清。
- 版本 1.23。指出基於合約的許可證潛在的問題。
- 版本 1.16。解釋為何發佈可執行檔如此重要。
- 版本 1.11。註明自由許可證可以要求你向原作者提供一份抄本。
上面並沒有顯示一些對定義影響不大的版本。 你可以在cvs網頁界面找到完整的更新記錄。
譯者按︰
- 中文讀者會覺得這句很奇怪,因為英文的"Free"有「自由」及「免費」兩個意思,所以作者要特別聲別,以正視聽。
- 電腦有「零」的概念,很多時軟體工程師在編>程是都會以0為開始,很有趣吧!
- 截至今天2012-7-15,這種>形式多數是指日常電腦檔案,但難保明天有其他新形式,所以譯者保留原著採用形式(forms)這>個較抽象的字眼