很多人經常會把自由軟件、開源軟件、免費軟件這幾個概念加以混淆,下面我來對這幾個概念進行相關介紹,希望能對你有所幫助。
自由軟件(Free Software)
來自理查德·斯托曼(Richard Matthew Stallman,自由軟件的精神領袖)對自由軟件的定義:
自由軟件的重點在于自由權,而非價格。要了解其所代表的概念,你應該將“free”作為“free speech”中的自由,而不是“free beer”中免費來理解。
注:在英語語境中,free一詞同時可表示“自由”與“免費”兩個意思。
自由軟件代表用戶可以自由地運行、拷貝、分發、學習、修改并改進該軟件。
來自自由軟件基金會(FSF)對自由軟件的判斷標準:
如果一個軟件是自由軟件,那么它必須為用戶提供以下四項基本自由:
(1)自由度0:無論用戶出于何種目的,必須可以按照用戶意愿,自由地運行該軟件。
(2)自由度1:用戶可以自由地學習并修改該軟件,以此來幫助用戶完成用戶自己的計算。作為前提,用戶必須可以訪問到該軟件的源代碼。
(3)自由度2:用戶可以自由地分發該軟件的拷貝,這樣就可以助人。
(4)自由度3:用戶可以自由地分發該軟件修改后的拷貝。借此,用戶可以把改進后的軟件分享給整個社區令他人也從中受益。作為前提,用戶必須可以訪問到該軟件的源代碼。
一個軟件只有提供了以上所有的四項基本自由給它的用戶,才可以被成為自由軟件。否則,它就是非自由的。
自由軟件的核心在于自由。
作為自由軟件的用戶,無論你是如何獲得的拷貝(花錢購買,或者免費獲取),你的四項基本自由都會被保證,你可以自由地運行,修改,發布甚至出售你拿到的自由軟件。
自由軟件與價格無關。
大部分自由軟件是通過互聯網自由發布,用戶無需付費即可自由獲取。由于自由軟件許可協議(如GPL)并不限制販賣自由軟件或者提供商業服務,因此,自由軟件也可以是商業軟件,人們可以用任何價格來販售這類自由軟件。
自由軟件是與專有軟件(Proprietary Software)相對的概念。
專有軟件是指在使用、修改、分發上有限制的軟件。這些限制是由軟件的所有者制定的。這些限制是通過法律或者技術上的手段實現的,有時這兩種手段被同時采用。最常見的技術限制方式是保留能夠被大家讀懂的源代碼,而只發布只有計算機才能讀懂的程序(如二進制格式)。法律上的限制包括使用著作權(附帶軟件許可證)和專利。這些程序的源代碼往往被其持有者視為商業機密。如果第三方要查看源代碼時,往往需要簽署保密協議。
自由軟件和專有軟件的定義與是否收取費用無關,自由軟件和專有軟件都可以免費或收費分發。區別在于:
- 自由軟件源代碼是公開的,可以被任何持有者隨意分發,相關的復制以及服務費用也可自行決定;
- 專有軟件通常會使用專屬的封閉格式,其的所有者可以決定是否可以分發該軟件、以及費用。
大多數自由軟件都使用類似的自由軟件許可協議,常見的自由軟件許可有:
- The GNU General Public License v2(GPL v2)
- The GNU General Public License v3(GPL v3)
- The GNU Lesser General Public License(LGPL)
- The MIT License
- The BSD License
- The Apache License
- The Mozilla Public License (MPL)
開源軟件(Open-source Software)
開源軟件(Open-source Software)是一種源代碼可以任意獲取的軟件。這種軟件的著作權持有人在軟件協議的規定之下保留一部分權利并允許用戶學習、修改以及以任何目的向任何人分發該軟件。只要符合開放源代碼定義的軟件就能稱為開源軟件。大多數的開源軟件同時也是自由軟件。
開放源代碼的定義如下:
- 自由再分發(Free Distribution):允許獲得源代碼的人可自由再將此源代碼散布。
源代碼(Source Code):程序的可執行檔在散布時,必需以隨附完整源代碼或是可讓人方便的事后獲取源代碼。
- 派生著作(Derived Works):讓人可依此源代碼修改后,在依照同一許可協議的情形下再散布。
- 原創作者程序源代碼的完整性(Integrity of The Author’s Source Code):意即修改后的版本,需以不同的版本號碼以與原始的代碼做分別,保障原始的代碼完整性。
- 不得對任何人或團體有差別待遇(No Discrimination Against Persons or Groups):開放源代碼軟件不得因性別、團體、國家、族群等設置限制,但若是因為法律規定的情形則為例外(如:美國政府限制高加密軟件的出口)。
- 對程序在任何領域內的利用不得有差別待遇(No Discrimination Against Fields of Endeavor):意即不得限制商業使用。
- 發布許可協議(Distribution of License):若軟件再發布,必需以同一條款發布之。
- 許可協議不得專屬于特定產品(License Must Not Be Specific to a Product):若多個程序組合成一套軟件,則當某一開放源代碼的程序單獨散布時,也必需要符合開放源代碼的條件。
- 許可協議不得限制其他軟件(License Must Not Restrict Other Software):當某一開放源代碼軟件與其他非開放源代碼軟件一起散布時(例如放在同一光盤),不得限制其他軟件的許可條件也要遵照開放源代碼的許可。
- 許可協議必須技術中立(License Must Be Technology-Neutral):意即許可協議不得限制為電子格式才有效,若是紙本的許可協議也應視為有效。
公開源代碼的軟件并一定就能稱為開源軟件。
有些軟件的作者只將源代碼公開,卻不符合“開放源代碼”的定義及條件,因為作者可能設置公開源代碼的條件限制,諸如限制可閱讀源代碼的對象、限制派生產品等,此稱之為公開源代碼的免費軟件。例如知名的網絡論壇軟件Discuz!。
免費軟件(Freeware)
免費軟件(Freeware)是一種無須付費即可獲取的軟件,但通常會有其他的限制。
常見限制包括:
(1)限制軟件僅能以特定方式使用,例如僅供個人使用、僅供私下使用、非商業使用、不得以此牟利、僅用于學術用途、僅用于教育用途、僅供慈善團體或人道主義團體使用、不得用于軍事用途、用于公家機關,或各種限制的任何形式組合(例:授權形式可能是“私人使用免費,不得用于商業用途”);
(2)軟件授權也可能施予其他使用限制,例如限制在網絡上使用、限制在服務器上使用、限制與某些軟件或某種硬件結合使用、禁止在網絡上散布軟件,僅能提供作者網站鏈接、不得未經作者同意便散布軟件、限制復本拷貝數目等;
(3)其他的限制:例如禁止反編譯軟件以研究軟件代碼、禁止修改軟件源碼等。
免費軟件是與商業軟件(Commercial Software)相對的概念。
- 商業軟件通常需要收取使用授權費以營利,但有時基于商業目的,如想讓“收費版”軟件(專業版、商業版)擴大市占率,而以免費方式提供免費版(免費版、個人版)軟件。
- 免費軟件以免費方式給予授權。可能是不限時間可用全部功能;或是僅具備部分基本功能,但同時提供有全部功能的商業版;亦或是共享軟件。
小結
最后簡單總結如下表:
注:本回答參考了GNU官網、維基百科上關于“自由軟件”、“開源軟件”、“免費軟件”詞條內容等信息。