大家可能都聽過,PC端三大系統:Windows ,Linux,macOS,關於「Linux系統」,你可以知道他是一個叫Linus,脾氣不怎麼好的人創建的。但是Linux系統這樣的的命名方式,到現在其實都是有爭議的,主要是集中在是否要加上GNU。那麼,今天我們就來看看什麼是GNU,Linux與GNU/Linux之爭又是什麼?
在提到GNU之前,不得不先來說說另外一個概念——
自由軟體。「自由軟體」,正如字面上的「自由」二字,它尊重用戶的自由。一個軟體如果是自由軟體,這意味著用戶可以自由地運行,複製,分發,學習,修改並改進該軟體。所以,「自由軟體」是關乎自由的問題,與是否收費無關,軟體如何定價並不影響它是否被歸類為自由軟體。
英文Free Software翻譯而來,而 Free一詞既有自由,也有免費的意思。通常為了避免歧義,在使用英文時,會借用法語或西班牙語的「Libre Software」來指自由軟體。自由軟體對商業發展特別是硬體有巨大的貢獻,多數嵌入式設備系統廠商鑑於自身無需支付許可費用和實用性方面的原因考慮也會在自由軟體的基礎上開發作業系統。世界上絕大多數作業系統多少都會包含有自由軟體組件(例如BSD的TCP/IP協議棧廣泛被包括MacOS,Windows在內的專有商業作業系統使用)。隨著越來越多的自由軟體支持 Microsoft Windows 平臺,還有得益於 Android 平臺的普及,當前有上億的用戶在日常生活或工作中使用自由軟體。有了這些自由,軟體用戶,無論是個人還是集體,都可以完全掌控所運行的軟體,並決定這些程序如何為自己服務。如果一個軟體令用戶失去了這種控制權,那麼則稱它就是「非自由」的,或「專有」的程序。如果一個軟體被稱為自由軟體,根據https://www.gnu.org/philosophy/free-sw.en.html 的定義, 認為它需要四項基本特徵(自由度):
自由度0:無論用戶出於何種目的,必須可以按照用戶意願,自由地運行該軟體。
自由度1:用戶可以自由地學習並修改該軟體,以此來幫助用戶完成用戶自己的目的。所以,這就要求軟體的源碼是能查看到的。
自由度2:用戶可以自由地在網際網路分發該軟體。
自由度3:用戶可以自由地分發該軟體修改後的版本。,而他人也可以據此修改,分發再次修改的版本呢(免費,收費都行 )。
一個軟體只有滿足上述的幾個特徵,才可以被成為自由軟體。只有所有用戶使用的代碼都滿足了這四項基本自由,該程序才能被視作自由軟體。例如,有兩個程序,A程序運行的時候會自動調用B程序。發布A程序意味著用戶必須使用到B程序,那麼必須AB兩個程序都是自由的,A程序才算是自由的。如果通過修改A程序,使其不再依賴B程序,那麼僅僅以自由軟體的形式發布B程序即可。另外,「自由軟體」不等於「非商業軟體」。一個自由軟體必須允許商業用戶、商業開發和商業發布。商業開發自由軟體早就司空見慣了,這樣的自由軟體非常重要。你可能需要花錢購買自由軟體,也可能免費拿到。但是無論你如何獲得你的拷貝,作為用戶,你的四大自由都會被保證,你可以自由地運行,修改,發布甚至出售你拿到的自由軟體。假如獲得自由軟體拷貝的用戶遵守了自由軟體的許可證條款,那麼該自由軟體必須為用戶提供自由軟體的四項基本自由。在自由方面對用戶加以限制或者要求付費才能實踐這些自由和不賦予用戶自由沒有什麼兩樣,因此這樣的程序不是自由軟體。
「GNU」這個名字是「GNU's Not Unix」的遞歸首字母縮寫詞,它是一個類Unix作業系統,由多個應用程式、系統庫、開發工具乃至遊戲構成的程序集合。GNU的開發始於1984年1月,稱為GNU工程,在GNU工程下發布的軟體,就被稱為GNU軟體包,因此,也可以說GNU作業系統是包括GNU軟體包(專門由GNU工程發布的程序)和由第三方發布的自由軟體。簡而言之,GNU就是一個自由軟體,是一個作業系統。和Windows, MacOS不同之處,GNU作業系統對使用者是完全自由的,你完全可以自主的運行,修改,分發它。
正如在上面提到的,GNU是一個類Unix作業系統。在這類系統中,用於計算機資源分配和硬體管理的程序稱為「內核」。雖然GNU工程有官方內核程序Hurd,但是目前GNU系統所用的典型內核是Linux。因此就把這樣的組合叫做GNU/Linux作業系統。
GNU/Linux這一名稱是由自由軟體基金會(FSF)的創立者與GNU計劃的發起人理察·斯託曼所提出的。
GNU的開發者們,希望以該名字來作為此作業系統的正式名稱。他們認為,此作業系統,包括了GNU系統軟體包與Linux核心,使用GNU/Linux這個名稱,可以良好概括它的主要內容。而且,GNU項目原本就是以發展一個自由的作業系統為願景,但遲遲沒有完成。而Linux核心的出現剛好可以補足這個缺口。理察·斯託曼認為:「
今天有數千萬個用戶,在使用的這個作業系統,他們可以自由的使用。但是他們並不清楚GNU,因為他們以為這個系統是Linux,只是是由一個學生「為了好玩」而發展出來的「。並且他強調,」
Linux的成功,是基於GNU項目之上,所以,如果要為這樣的系統起個名,最適合的唯一選擇就是GNU。但我們不認為這是唯一正確答案。因為GNU計劃,過去不是,現在也不是,一個為了發展特定軟體包而創建的項目。……許多人為了這個系統中的自由軟體都做出了貢獻,而這些功勞都應該歸給他們。
在某種程度上,你要設個標準,省略掉許多其他次要貢獻者的名字。所以無論你設置的標準在哪,我們都不會提出抗議。……但是考慮到公平性,以及貢獻,不管標準是什麼,有個名字都是不應該被使用的,那就是「Linux」。把所有的功勞都歸給一個次要的貢獻者(Linux),但是忽略主要的貢獻者(GNU),這是不公平的。「
Linux內核本身並不是GNU計劃的一部分,GNU/Linux這個名稱在Linux社群中並沒有得到一致認同。
一些發行版社群例如Debian採用了GNU/Linux這一名稱,但其他許多Linux社群中認為使用Linux這一名稱是更好的,Linux這個名字朗朗上口,且在公眾與媒體中更為通用。Linux內核項目的發起人Linus也偏好於使用Linux,但對於GNU/Linux這個名字並不強烈反感。
在接受記錄片《作業系統革命》(Revolution OS)訪談時,Linux也表達過對GNU/Linux這個名稱的想法,他認為這個稱呼是合理的……這就像是他覺得「RedHat Linux」,或「SuSE Linux」 或「Debian Linux」這些名稱是很好的,因為如果你真的做了一個你自己的Linux發行版時,你必須要幫它取個名稱,但是要把Linux全部通稱「GNU Linux」,我覺得這很荒謬。
使用Linux內核的GNU系統,並不只是一人的傑作,而是全世界無數的知名的,默默無聞的大神們,在推進Libre Software發展進程中的產物。 不管是叫Linux系統還是叫GNU/Linux系統,都不能抹殺這一點。
當小編第一次知道GNU/Linux這樣的叫法的時候,自己也沒有過多在意。
平常我們提到Linux系統的時候,其實也是說某個特定的發行版,比如說怎麼安裝Ubuntu系統,怎麼解決CentOS系統的XX問題,甚至連Linux都沒提到。
關於Linux以及GNU/Linux的看法,歡迎在下方留言 !