自由與非自由軟體的分類
此圖表解釋了軟體的不同類別。它以 SVG 和 PNG 圖像格式提供,並遵循 創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款。
注意:如果您的瀏覽器完全支援 SVG 格式,則此圖表可點擊。
另請參閱 您可能想要避免的混淆詞彙。
自由軟體
自由軟體是指允許任何人使用、複製及/或散布的軟體,無論是原樣或經過修改,無論是免費或收費。特別是,這表示必須提供原始碼。「如果沒有原始碼,就不是軟體。」這是一個簡化的描述;另請參閱完整定義。
如果一個程式是自由軟體,那麼它就有可能被包含在自由作業系統中,例如 GNU,或 GNU/Linux 系統的自由版本。
有很多不同的方法可以使一個程式成為自由軟體——許多細節問題,可以用不止一種方式決定,並且仍然使程式成為自由軟體。以下描述了一些可能的變化。有關特定自由軟體授權條款的資訊,請參閱授權條款列表頁面。
自由軟體關乎自由,而非價格。但專有軟體公司通常使用「自由軟體」一詞來指價格。有時他們的意思是您可以免費獲得二進制副本;有時他們的意思是副本與您購買的電腦捆綁在一起,並且價格包含兩者。無論哪種方式,它都與我們在 GNU 計畫中所指的自由軟體無關。
由於這種潛在的混淆,當一家軟體公司說其產品是自由軟體時,始終要檢查實際的散布條款,以查看使用者是否真的擁有自由軟體所暗示的所有自由。有時它確實是自由軟體;有時則不是。
許多語言對於自由(freedom)中的「free」和零價格(zero price)中的「free」有兩個不同的詞。例如,法語有「libre」和「gratuit」。英語則不然;有一個詞「gratis」明確地指價格,但沒有一個常用的形容詞明確地指自由。因此,如果您說的是另一種語言,我們建議您將「free」翻譯成您的語言,使其更清晰。請參閱我們的「自由軟體」一詞的各種其他語言翻譯列表。
自由軟體通常比非自由軟體更可靠。
開放原始碼軟體
「開放原始碼」軟體一詞被某些人用來表示與自由軟體大致相同的類別。它與自由軟體並非完全相同的軟體類別:他們接受我們認為過於嚴格的一些授權條款,並且他們沒有接受一些自由軟體授權條款。但是,類別範圍的差異很小:我們只知道少數幾個原始碼是開放原始碼但不是自由軟體的案例。原則上,可能會發生某些自由軟體程式被拒絕作為開放原始碼的情況,但我們不知道是否曾經發生過。
我們更喜歡使用「自由軟體」一詞,因為它指的是自由——「開放原始碼」一詞沒有做到這一點。
公共領域軟體
公共領域軟體是指未受著作權保護的軟體。如果原始碼在公共領域中,那是非著作權保護自由軟體的特殊情況,這表示某些副本或修改版本可能根本不是自由軟體。
在某些情況下,可執行程式可能在公共領域中,但原始碼不可用。這不是自由軟體,因為自由軟體要求原始碼的可訪問性。同時,大多數自由軟體不在公共領域中;它受著作權保護,並且著作權持有人已合法授權所有人使用自由軟體授權條款自由地使用它。
有時人們以寬鬆的方式使用「公共領域」一詞來表示「自由」或「免費提供」。但是,「公共領域」是一個法律術語,精確地意思是「未受著作權保護」。為了清楚起見,我們建議僅對該含義使用「公共領域」,並使用其他術語來傳達其他含義。
根據大多數國家/地區簽署的伯恩公約,任何書寫下來的東西都會自動受到著作權保護。這包括程式。因此,如果您希望您編寫的程式進入公共領域,您必須採取一些法律步驟來聲明放棄對它的著作權;否則,該程式將受到著作權保護。
著作權保護軟體
著作權保護軟體是自由軟體,其散布條款確保所有版本的所有副本都帶有大致相同的散布條款。例如,這表示著作權保護授權條款通常不允許其他人向軟體添加額外要求(儘管可以允許一組有限的安全添加要求),並且要求提供原始碼。這可以保護程式及其修改版本免受某些使程式成為專有軟體的常見方式的影響。
某些著作權保護授權條款,例如 GPL 第 3 版,阻止了將軟體轉變為專有軟體的其他方法,例如 tivoization。
在 GNU 計畫中,我們幾乎對我們編寫的所有軟體都進行著作權保護,因為我們的目標是給予每位使用者「自由軟體」一詞所暗示的自由。請參閱我們的著作權保護文章,以更詳細地解釋著作權保護的工作原理以及我們為何使用它。
著作權保護是一個通用概念;要對實際程式進行著作權保護,您需要使用一組特定的散布條款。編寫著作權保護散布條款有很多可能的方法,因此原則上可以有許多著作權保護自由軟體授權條款。但是,在實際實務中,幾乎所有著作權保護軟體都使用GNU 通用公共授權條款。兩種不同的著作權保護授權條款通常是「不相容的」,這表示將使用一種授權條款的程式碼與使用另一種授權條款的程式碼合併是非法的;因此,如果人們使用單一的著作權保護授權條款,對社群是有益的。
非著作權保護自由軟體
非著作權保護自由軟體來自作者,並獲得重新散布和修改的許可,以及向其添加額外限制的許可。
如果一個程式是自由軟體但沒有著作權保護,那麼某些副本或修改版本可能根本不是自由軟體。軟體公司可以編譯該程式,無論是否進行修改,並將可執行檔案作為專有軟體產品散布。
X Window 系統說明了這一點。X Consortium 發布了 X11,其散布條款使其成為非著作權保護自由軟體,隨後的開發人員大多遵循了相同的做法。具有這些散布條款的副本是自由軟體。但是,也有非自由版本,並且有(或至少曾經有)流行的工作站和 PC 顯示卡,非自由版本是唯一可用的版本。如果您正在使用此硬體,則 X11 對您來說不是自由軟體。X11 的開發人員甚至一度使 X11 成為非自由軟體;他們之所以能夠做到這一點,是因為其他人根據相同的非著作權保護授權條款貢獻了他們的程式碼。
寬鬆許可授權軟體
寬鬆許可授權包括 X11 授權條款和 兩個 BSD 授權條款。這些授權條款允許幾乎任何程式碼使用方式,包括散布帶有或不帶有變更原始碼的專有二進制檔案。
GPL 涵蓋的軟體
GNU GPL(通用公共授權條款)是用於著作權保護程式的一組特定散布條款。GNU 計畫將其用作大多數 GNU 軟體的散布條款。
因此,將自由軟體等同於 GPL 涵蓋的軟體是錯誤的。
GNU 作業系統
GNU 作業系統是類 Unix 作業系統,它是完全自由的軟體,我們 GNU 計畫自 1984 年以來一直在開發它。
類 Unix 作業系統由許多程式組成。GNU 系統包括所有官方 GNU 套件。它還包括許多其他套件,例如 X Window 系統和 TeX,它們不是 GNU 軟體。
完整 GNU 系統的第一個測試版本是在 1996 年。這包括 GNU Hurd,我們的核心,自 1990 年以來一直在開發。2001 年,GNU 系統(包括 GNU Hurd)開始相當可靠地工作,但 Hurd 仍然缺少一些重要功能,因此它沒有被廣泛使用。同時,GNU/Linux 系統,GNU 作業系統的一個分支,它使用 Linux 作為核心而不是 GNU Hurd,自 90 年代以來取得了巨大的成功。正如這所示,GNU 系統不是一組單一的靜態程式;使用者和發行商可以根據他們的需求和願望選擇不同的套件。結果仍然是 GNU 系統的一個變體。
由於 GNU 的目的是自由,因此 GNU 作業系統中的每個單一組件都是自由軟體。但是,它們不必都是著作權保護的;任何類型的自由軟體在法律上都適合包含,如果它有助於實現技術目標。
GNU 程式
「GNU 程式」等同於 GNU 軟體。如果程式 Foo 是 GNU 軟體,則它是 GNU 程式。我們有時也說它是「GNU 套件」。
GNU 軟體
GNU 軟體是根據 GNU 計畫的名義發布的軟體。如果一個程式是 GNU 軟體,我們也說它是 GNU 程式或 GNU 套件。GNU 套件的 README 或手冊應說明它是其中之一。此外,自由軟體目錄 識別並列出所有 GNU 套件。
大多數 GNU 軟體都是著作權保護的,但並非全部;但是,所有 GNU 軟體都必須是自由軟體。
一些 GNU 軟體是由自由軟體基金會的工作人員編寫的,但大多數 GNU 軟體來自許多志願者。(其中一些志願者由公司或大學支付薪水,但他們是為我們服務的志願者。)一些貢獻的軟體受自由軟體基金會著作權保護;一些受編寫它的貢獻者著作權保護。
FSF 著作權保護的 GNU 軟體
GNU 套件的開發人員可以將著作權轉讓給 FSF,也可以保留它。這是他們的選擇。
如果他們已將著作權轉讓給 FSF,則該程式是 FSF 著作權保護的 GNU 軟體,並且 FSF 可以強制執行其授權條款。如果他們保留了著作權,則強制執行授權條款是他們的責任。
作為規則,FSF 不接受非官方 GNU 套件的軟體著作權轉讓。
非自由軟體
非自由軟體是指任何非自由的軟體。禁止使用、重新散布或修改它,或要求您請求許可,或受到如此多的限制以至於您實際上無法自由地執行它。
專有軟體
專有軟體是非自由軟體的另一個名稱。過去,我們將非自由軟體細分為「半自由軟體」(可以非商業方式修改和重新散布)和「專有軟體」(不能修改和重新散布)。但我們已經放棄了這種區別,現在使用「專有軟體」作為非自由軟體的同義詞。
自由軟體基金會遵循一項規則,即我們不能在我們的電腦上安裝任何專有程式,除非是暫時的,目的是為該程式編寫一個自由的替代品。除此之外,我們認為沒有任何可能的藉口可以安裝專有程式。
例如,我們認為在 1980 年代在我們的電腦上安裝 Unix 是合理的,因為我們使用它來編寫 Unix 的自由替代品。如今,由於自由作業系統已經可用,因此藉口不再適用;我們不使用任何非自由作業系統,並且我們安裝的任何新電腦都必須執行完全自由的作業系統。
我們並不堅持 GNU 的使用者或 GNU 的貢獻者必須遵守此規則。這是我們為自己制定的規則。但我們希望您也能為了您的自由而遵循它。
免費軟體
「免費軟體」一詞沒有明確的公認定義,但它通常用於允許重新散布但不允許修改的套件(並且它們的原始碼不可用)。這些套件不是自由軟體,因此請不要使用「免費軟體」來指代自由軟體。
共享軟體
共享軟體是指允許人們重新散布副本的軟體,但表示任何繼續使用副本的人都必須支付授權費。
共享軟體不是自由軟體,甚至不是半自由軟體。它不是的原因有兩個:
- 對於大多數共享軟體,原始碼不可用;因此,您根本無法修改程式。
- 共享軟體不允許製作副本並在不支付授權費的情況下安裝它,即使是從事非營利活動的個人也不允許。(實際上,人們經常無視散布條款並這樣做,但條款不允許這樣做。)
私有軟體
私有或客製化軟體是為一位使用者(通常是組織或公司)開發的軟體。該使用者保留並使用它,並且不以原始碼或二進制檔案的形式向公眾發布它。
如果私有程式的唯一使用者擁有四項自由,則私有程式是自由軟體(在某種程度上是微不足道的意義上)。特別是,如果使用者對私有程式擁有完全權利,則該程式是自由軟體。但是,如果使用者將副本散布給其他人,並且不為這些副本提供四項自由,則這些副本不是自由軟體。
自由軟體關乎自由,而非存取權。總體而言,我們不認為開發程式而不發布它是錯誤的。在某些情況下,一個程式非常重要,以至於有人可能會認為將其從公眾手中隱瞞是對人類的錯誤。但是,這種情況很少見。大多數程式沒有那麼重要,並且拒絕發布它們並沒有特別的錯誤。因此,私有或客製化軟體的開發與自由軟體運動的原則之間沒有衝突。
程式設計師的幾乎所有工作都在客製化軟體的開發中;因此,大多數程式設計工作都是,或者可以以與自由軟體運動相容的方式完成。
商業軟體
「商業」和「專有」並不相同!商業軟體是由企業作為其業務一部分開發的軟體。大多數商業軟體是專有的,但也有商業自由軟體,也有非商業非自由軟體。
例如,GNU Ada 是由一家公司開發的。它始終根據 GNU GPL 的條款散布,並且每個副本都是自由軟體;但其開發人員銷售支援合約。當他們的銷售人員與潛在客戶交談時,有時客戶會說:「使用商業編譯器我們會感到更安全。」銷售人員回答說:「GNU Ada 就是商業編譯器;它恰好是自由軟體。」
對於 GNU 計畫而言,優先順序是相反的:重要的是 GNU Ada 是自由軟體;它是商業軟體只是一個細節。但是,GNU Ada 因其商業化而產生的額外開發絕對是有益的。
請幫助傳播商業自由軟體是可能的意識。您可以透過努力在您意指「專有」時不說「商業」來做到這一點。