十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
GNU、GNU/Linux、Linux 之間到底是什么關(guān)系?什么是自由軟件?什么是GPL協(xié)議?什么是自由軟件基金會(huì)?什么是GNU恥辱榜?有多年開(kāi)發(fā)經(jīng)驗(yàn)的Linux工程師,估計(jì)也沒(méi)怎么關(guān)注過(guò)這些問(wèn)題。今天就以自由軟件發(fā)展的角度,給大家科普一下它們之間的關(guān)系。

1
想了解他們之間的關(guān)系,從Windows說(shuō)起估計(jì)比較容易理解。Windows操作系統(tǒng),大家都很熟悉:當(dāng)微軟發(fā)布OS新版本,你迫不及待地把它安裝到你的電腦上,開(kāi)機(jī)重啟,你會(huì)發(fā)現(xiàn),除了Windows操作系統(tǒng),還有很多其它軟件:office軟件滿足你的日常辦公;Windows player可以聽(tīng)歌看電影;使用Visual studio軟件,你可以開(kāi)發(fā)桌面程序,發(fā)布自己的軟件。也就是說(shuō),Windows發(fā)布的操作系統(tǒng),不僅僅是一個(gè)操作系統(tǒng),而是一個(gè)操作系統(tǒng)生態(tài):開(kāi)發(fā)者可以在這個(gè)平臺(tái)上,使用微軟提供的編譯器工具、第三方開(kāi)發(fā)工具,開(kāi)發(fā)各種各樣的軟件:QQ、絕地求生、荒野行動(dòng)、瀏覽器、網(wǎng)頁(yè)、論壇.....,人們?cè)谶@個(gè)平臺(tái)上扮演著各種角色:使用者、開(kāi)發(fā)者,一起維護(hù)和壯大這個(gè)生態(tài)。
2
GNU是一個(gè)操作系統(tǒng),GNU是 “GNU's Not Unix” 的遞歸縮寫(xiě) ,它的正確發(fā)音是:葛奴,而不是直接讀G-N-U 或 new。GNU操作系統(tǒng)是一個(gè)類似Windows的自由軟件操作系統(tǒng),包括整個(gè)生態(tài):操作系統(tǒng)內(nèi)核、編譯器、調(diào)試器等開(kāi)發(fā)工具、辦公軟件、桌面游戲等自由軟件。
3
GNU工程發(fā)起于1984年,帶頭大哥是Richard Stallman, 就是寫(xiě)了Emacs、GNU C編譯器、GNU C調(diào)試器的這位大名鼎鼎的×××。GNU工程的目標(biāo)是:構(gòu)建一個(gè)類似Unix的操作系統(tǒng),包括內(nèi)核、編譯器、編輯器、電子表格、郵件軟件、圖形界面、應(yīng)用庫(kù)、游戲軟件等?;蛘哒f(shuō),就是構(gòu)建一個(gè)類似Windows生態(tài)的操作系統(tǒng)(當(dāng)時(shí)Windows還沒(méi)問(wèn)世),方便計(jì)算機(jī)用戶和開(kāi)發(fā)者方便快樂(lè)地使用計(jì)算機(jī)。
GNU工程一個(gè)巨大的工程:開(kāi)發(fā)一整套操作系統(tǒng),包括內(nèi)核、編譯器、調(diào)試器、開(kāi)發(fā)工具、應(yīng)用軟件等,絕非一個(gè)人或一個(gè)團(tuán)隊(duì)所能完成的,因此在1985年10月,成了了自由軟件基金會(huì)(Free Software Foundation,FSF),它初期用來(lái)給GNU募集資金。
為什么要發(fā)起這個(gè)工程呢?很簡(jiǎn)單,因?yàn)楫?dāng)時(shí)計(jì)算機(jī)上的幾乎所有軟件都是專有軟件(Proprietary software)。什么是專有軟件呢?就是使用、修改、分發(fā)受到限制的軟件,作者擁有這個(gè)軟件的版權(quán),不開(kāi)源,只發(fā)布編譯過(guò)的二進(jìn)制版本的程序。一般商業(yè)公司比較支持專有軟件。但是,對(duì)于行業(yè)發(fā)展來(lái)說(shuō),這不是個(gè)好事情,技術(shù)分享,互相迭×××發(fā),才能更好地促進(jìn)軟件行業(yè)的成長(zhǎng)。
與專有軟件對(duì)應(yīng)的是自由軟件(free software),自由軟件可以不受限制地自由使用、復(fù)制、研究、修改和分發(fā)。對(duì),沒(méi)有看錯(cuò),就是這么自由!它要求是公開(kāi)源碼的,任何人都可以獲得這份代碼,可以修改,然后以其它版本再次發(fā)布、分發(fā)。這里需要注意的是,自由軟件不等于免費(fèi)軟件(freeware),它也可以買賣,比如Linux操作系統(tǒng)光盤(pán)。這里的自由是權(quán)利問(wèn)題,不是價(jià)格問(wèn)題,自由軟件有四項(xiàng)基本自由:
使用自由:可以免費(fèi)獲取源碼、使用
學(xué)習(xí)自由:有權(quán)利研究如何運(yùn)作、實(shí)現(xiàn)
修改自由:可以改進(jìn)該軟件,發(fā)布改進(jìn)
發(fā)布自由:重新發(fā)布你修改的版本
GNU工程要求:GNU操作系統(tǒng),包括內(nèi)核在內(nèi)的整套軟件,都必須是由自由軟件構(gòu)成。
4
GNU工程的目標(biāo),是構(gòu)建一個(gè)包括內(nèi)核在內(nèi)的操作系統(tǒng)生態(tài)。在早期,在自由軟件基金會(huì)的支持下,大多數(shù)自由軟件項(xiàng)目都是以完成某項(xiàng)具體工作為目標(biāo)。比如,Donald Knuth編寫(xiě)一個(gè)文本排版軟件(TeX);Bob Scheifler開(kāi)發(fā)一個(gè)窗口系統(tǒng)(X Window);Richard Stallman 開(kāi)發(fā)了C編譯器和調(diào)試器。 GNU工程也在開(kāi)發(fā)一個(gè)操作系統(tǒng)內(nèi)核,叫hurd,但是開(kāi)發(fā)不是很順利,后來(lái)Linus Torvalds編寫(xiě)一個(gè)類似Unix的內(nèi)核(Linux) ,這樣,整個(gè)操作系統(tǒng)的組件就齊全了,GNU/Linux操作系統(tǒng)就發(fā)布了。
Linux僅僅是一個(gè)內(nèi)核,你可以從官網(wǎng)上下載這份源碼;而GNU/Linux是一個(gè)操作系統(tǒng),類似于Windows操作系統(tǒng),包括Linux內(nèi)核、編譯器、編輯器、桌面系統(tǒng)、應(yīng)用程序等整個(gè)生態(tài)。
我們講過(guò),GNU工程發(fā)布的GNU/Linux操作系統(tǒng)都是有自由軟件構(gòu)成的,所以任何人都有修改、分發(fā)的權(quán)利。所以,你也會(huì)看到GNU操作系統(tǒng)的分發(fā)版本:GNU/hurd,這有點(diǎn)類似于Windows操作系統(tǒng)的win7、XP、win10版本。
通過(guò)GNU工程發(fā)布的軟件,一般會(huì)以GNU冠名。比如GCC,全名就是GNU Compiler Collection ,即GNU編譯器套件;如果你開(kāi)發(fā)一個(gè)chess的象棋游戲,通過(guò)GNU發(fā)布,這個(gè)軟件就是:GNU Chess[官網(wǎng)];你編寫(xiě)一個(gè)連連看小游戲,如果通過(guò)GNU發(fā)布,這個(gè)軟件名字就是:GNU 連連看。
5
自由軟件基金會(huì)(FSF),由Richard Stallman建立。成立的初衷就是為開(kāi)發(fā)GNU操作系統(tǒng)募集資金,它是一個(gè)美國(guó)民間的非盈利組織。在早期,F(xiàn)SF的基金主要用來(lái)雇傭程序員來(lái)開(kāi)發(fā)自由軟件。1990年以后,隨著寫(xiě)自由軟件的公司和個(gè)人越來(lái)越多,各種版權(quán)、法律、結(jié)構(gòu)上的問(wèn)題也越來(lái)越多。所以,現(xiàn)在自由軟件基金的雇員和自愿者一般主要從事版權(quán)、法律相關(guān)的工作:比如GPL的施行,監(jiān)督版權(quán)、GNU許可證等。當(dāng)然,現(xiàn)在自由軟件基金會(huì)也會(huì)開(kāi)展跟多的自由軟件項(xiàng)目,不僅僅是GNU工程,開(kāi)發(fā)更多的自由軟件,完善自由軟件的理念。
6
GPL即GNU GPL,全稱 GNU General Public License,翻譯成中文就是:GNU通用公共許可證,GPL協(xié)議是干嘛用的呢?這個(gè)還得從自由軟件說(shuō)起。
通過(guò)上面的學(xué)習(xí),我們知道,自由軟件是開(kāi)源的、可以任意修改和發(fā)布的。正是這一特性,自由軟件再以一種不可思議的速度發(fā)展,自由軟件不僅為成千上萬(wàn)的使用者、開(kāi)發(fā)者提供了便利,也為很多商業(yè)軟件公司提供了方便。自由軟件是一座巨大的寶庫(kù),很多商業(yè)軟件都是基于自由軟件的基礎(chǔ)上進(jìn)行開(kāi)發(fā),節(jié)省了大量的人力、物力。有些自由軟件,甚至比商業(yè)軟件還好用,比如Linux、Git、ffmpeg、Libav、mplayer等。
按照自由軟件的規(guī)則,你免費(fèi)獲取了自由軟件的源碼想,可以修改,可以發(fā)布。本著人人為我,我為人人的原則,你發(fā)布的軟件也必須開(kāi)源,供其他人學(xué)習(xí)、使用、修改。GPL協(xié)議就是用來(lái)維護(hù)這個(gè)規(guī)則的:開(kāi)放軟件的版權(quán)限制。你開(kāi)發(fā)一個(gè)軟件,使用了別人使用GPL協(xié)議發(fā)布的源碼,那么,不好意思,你的軟件也必須通過(guò)GPL協(xié)議發(fā)布,全部開(kāi)放源碼。
GPL這種自由開(kāi)放的模式,對(duì)于技術(shù)分享、學(xué)習(xí)是個(gè)好事情,但是對(duì)于很多商業(yè)公司卻很頭疼。比如,一個(gè)公司,想基于自由軟件FFmpeg解碼庫(kù),開(kāi)發(fā)一個(gè)“迷你影音”播放器,但是又不想把自己開(kāi)發(fā)的源碼、商業(yè)秘密分享出去,怎么辦?沒(méi)關(guān)系,除了GPL協(xié)議,還有其它協(xié)議,比如LGPL協(xié)議可以解決這個(gè)問(wèn)題。
7
LGPL是 GNU Lesser General Public License (GNU 寬通用公共許可證)的縮寫(xiě)。GPL協(xié)議要求你的源碼全部開(kāi)放,這簡(jiǎn)直要了商業(yè)公司的命。LGPL協(xié)議可以解決這個(gè)問(wèn)題,LGPL協(xié)議跟GPL協(xié)議基本上一樣,只是縮小了你要公開(kāi)源碼的范圍:縮小到動(dòng)態(tài)鏈接庫(kù)。比如,你想基于FFmpeg這個(gè)庫(kù)開(kāi)發(fā)一個(gè)影音播放器,如果你使用了基于GPL協(xié)議發(fā)布的FFmpeg解碼庫(kù),不好意思,你要開(kāi)放你的整個(gè)軟件源碼;如果你使用了基于LGPL協(xié)議發(fā)布的FFmpeg解碼庫(kù),你在項(xiàng)目中,可以以庫(kù)的形式來(lái)使用FFmpeg,但如果你對(duì)這個(gè)解碼庫(kù)進(jìn)行修改,必須再次以LGPL協(xié)議發(fā)布,這些FFmpeg源碼最后以庫(kù)的形式被應(yīng)用在你的商業(yè)項(xiàng)目中。對(duì)于你軟件中的其它源碼,那是你的商業(yè)秘密,不用公開(kāi)。
從上可以看到,無(wú)論是GPL,還是LGPL,都是自由軟件開(kāi)發(fā)者和商業(yè)軟件開(kāi)發(fā)者之間的一個(gè)博弈。如果所有的自由軟件都以GPL協(xié)議發(fā)布,那商業(yè)公司就用不了了,自由軟件的價(jià)值也大打折扣;而通過(guò)LGPL協(xié)議發(fā)布,一方面可以促進(jìn)自由軟件的發(fā)展,另一方面,也可以和商業(yè)軟件共存。
8
自由軟件是個(gè)巨大的寶庫(kù),很多自由軟件甚至比商業(yè)軟件還優(yōu)秀、還有用。這也吸引了大量的商業(yè)軟件公司,喜歡從這個(gè)巨大寶庫(kù)中,挑挑揀揀,找出自己喜歡的自由軟件,修修改改,加以包裝,就以商業(yè)軟件的形式出售盈利了。
無(wú)論是GPL協(xié)議,還是LGPL協(xié)議,雖然它制定了自由軟件的發(fā)布規(guī)則,但GNU畢竟是一個(gè)民間組織,跟那些商業(yè)巨頭、商業(yè)流氓相比,人微言輕,有時(shí)候打官司也打不過(guò),沒(méi)辦法,只能使用阿Q精神精神勝利法:我奈何不了你,我要讓你上恥辱榜,公開(kāi)羞辱你們,看你害燥不害燥!
比如自由軟件FFmpeg,很多播放器都是基于此進(jìn)行二次開(kāi)發(fā),但是當(dāng)作商業(yè)軟件使用,違反了自由軟件的協(xié)議。在FFmpeg官網(wǎng)上,有一個(gè)恥辱軟件榜,很多違反自由軟件協(xié)議的商業(yè)軟件都被列在了這里,包括韓國(guó)赫赫有名的播放器KMPlayer以及知名的一些播放器等,有興趣可以自己搜,很多軟件都被釘在了這個(gè)恥辱柱上。特定到官網(wǎng)上去看看,發(fā)現(xiàn)很多都被撤下來(lái)了,一直在待更新?tīng)顟B(tài)....,但是在FFmpeg的GitHub上有備份:FFmpeg恥辱柱
除了GPL協(xié)議、LGPL協(xié)議,還有其它各種協(xié)議,比如Apache、BSD、Mozilla等,除此之外,還有各種開(kāi)源軟件、共享軟件、綠色軟件、免費(fèi)軟件等,大家如果有興趣,可以自己了解下。
嵌入式學(xué)習(xí)QQ群:3284757626微信公眾號(hào):宅學(xué)部落
王老師的51CTO學(xué)院課程視頻:51CTO學(xué)院-王利濤-嵌入式視頻教程
王老師的淘寶店:wanglitao.taobao.com
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。