開源軟件與Linux的發(fā)展
在1980年代,隨著PC的普及,自由軟件經(jīng)歷了繁榮。1983年,斯托曼(Stallman)聯(lián)合全世界的程序員,通過網(wǎng)絡(luò)郵件傳遞群組從麻省理工學(xué)院人工智能實驗室發(fā)起了一項免費軟件活動,目的是開發(fā)從屬操作系統(tǒng)和編譯器,到一套完整的用于基本應(yīng)用程序的開源軟件生態(tài)系統(tǒng)。這是造福子孫后代的GNU項目。操作系統(tǒng)是整個計劃的核心部分。Stallman希望志愿者能夠共同開發(fā)一個完整的開源操作系統(tǒng),該操作系統(tǒng)將允許任何人自由編輯、共享和發(fā)布自己的修改版本。這個理念在其GNU聲明中得到了充分體現(xiàn)。
斯托曼代表的開源軟件運動對計算機產(chǎn)業(yè)的影響除了軟件本身之外,還逐漸形成了一系列對源代碼控制程度不同的協(xié)議以及對應(yīng)的許可證制度,這是對整個知識產(chǎn)權(quán)領(lǐng)域的重要貢獻。比如針對GNU項目,為了進一步防止開源軟件在未來被主張所有權(quán),所有GNU涉及的軟件都被放到GNU通用許可證GPL(General Public License)的保護之下。此方式成為最早的開源軟件知識產(chǎn)權(quán)管理方式之一。它授權(quán)給任何人以任何目的(包括惡意)免費使用軟件源代碼,但是要求任何使用GNU授權(quán)下的開源軟件代碼開發(fā)出來的軟件必須沿用同一授權(quán)許可證。除了GPL開源協(xié)議,還有在這之前和之后出現(xiàn)的眾多開源軟件協(xié)議。如果從對源代碼的控制程度來劃分,這些協(xié)議大致可以分成三類,它們的代表分別是MIT許可證協(xié)議、Apache許可證協(xié)議和GPL許可證協(xié)議。
MIT協(xié)議是最為寬松的一類。它允許任何人以任何方式使用源代碼,包括用于商業(yè)目的,而且衍生出來的軟件可以閉源。與其類似的協(xié)議還有伯克利UNIX版本使用的BSD 3。Apache協(xié)議相對寬松,因為它仍然不強制衍生軟件使用相同的許可證發(fā)布。但是衍生軟件必須對所有未修改的部分使用相同的許可證。而且在每個許可文件中,必須保留再分發(fā)代碼中的所有原始著作權(quán)和更改說明。而GPL協(xié)議則相對嚴(yán)格一點,它要求所有衍生軟件產(chǎn)品必須沿用同一許可證。也就是說如果使用GPL協(xié)議的開源軟件來開發(fā)新的軟件產(chǎn)品,那么新的軟件產(chǎn)品必須也是開源的,而且需要使用GPL協(xié)議來管理。
從創(chuàng)立歷史來看,1988年推出的代表早期黑客精神的MIT協(xié)議出現(xiàn)的最早,其目的是讓更多的人使用開源軟件;隨后是1989年斯托曼倡導(dǎo)的開源運動推出的GPL協(xié)議,其目的是在一個開源平臺上產(chǎn)生更多的開源軟件;2000年才出現(xiàn)的Apache協(xié)議則更像前兩種協(xié)議的折中版本,是為了滿足中間用戶的需求。這些寬容程度不同的許可證協(xié)議為軟件開源運動提供了多樣的管理方式,不但有利于更多開源軟件的出現(xiàn),也為不同用戶提供了不同的選擇。
1984年斯托曼等人不斷用C和LISP語言開發(fā)GNU軟件。截止到1989年,GNU計劃中包括編輯器Emacs、編譯器、Shell在內(nèi)的大部分應(yīng)用軟件都已經(jīng)開發(fā)完成。由于和UNIX的兼容性,這些軟件被廣泛使用,但是唯獨操作系統(tǒng)還沒有被開發(fā)出來。1990年在開源軟件基金會推動下,GNU重啟開發(fā)操作系統(tǒng)的計劃并將其命名為Hurd,但是開發(fā)進程依舊緩慢。事實上Hurd很快就不再被需要,因為一年后芬蘭的一個學(xué)生在開源軟件運動的影響下協(xié)調(diào)眾多網(wǎng)絡(luò)志愿者成功開發(fā)出了一套開源操作系統(tǒng)。該系統(tǒng)加入了GNU生態(tài)圈成為其操作系統(tǒng)的核心,這就是Linux。
Linux的出現(xiàn)和UNIX息息相關(guān)。1987年荷蘭計算機教授、操作系統(tǒng)專家譚寧邦(Andrew Tanenbaum)為了給學(xué)生講解操作系統(tǒng)原理,自己編寫了一款模擬UNIX的16位字元MINX操作系統(tǒng),并且將其作為開源軟件發(fā)布。MINX影響了很多學(xué)生。但是由于當(dāng)時已經(jīng)出現(xiàn)了32位字元的386微處理器,所以大家希望能有一款32位元的開源操作系統(tǒng)。1991年芬蘭赫爾辛基大學(xué)學(xué)生托沃茲在MINIX操作系統(tǒng)上用GNU的C語言編譯器開發(fā)出了UNIX的終端模擬器,用來連接學(xué)校里的UNIX服務(wù)器。但是不久他意識到自己已經(jīng)在編寫操作系統(tǒng)內(nèi)核的部分,索性開始正式編寫32位元的操作系統(tǒng)。
基本編寫完成后,托沃茲在USENET上關(guān)于MINIX的群組討論中發(fā)布了自己的新程序。他的朋友把內(nèi)核源代碼上傳到赫爾辛基大學(xué)的FTP服務(wù)器上并將其命名為Linux。Linux立刻吸引了眾多開源軟件志愿者。擅長編程的志愿者開始為Linux添加不同的模塊和新功能,計算機新手或者是用戶則負(fù)責(zé)系統(tǒng)的測試工作。隨著新功能和模塊的不斷增加,Linux的更新速度也越來越快,有時達到每天一個新版本。為了讓Linux有一個相對集中的發(fā)展方向,托沃茲設(shè)立了Linux管理小組,對志愿者提供的新功能模塊進行篩選,把符合發(fā)展方向的模塊融入到Linux的下一個正式版本中。
不久Linux內(nèi)核通過幾百名志愿者的共同開發(fā)成功地發(fā)展成為功能豐富的操作系統(tǒng),其可靠性也因為數(shù)千名志愿用戶的不斷使用和反饋而遠(yuǎn)遠(yuǎn)高于同時期的微軟視窗。開源軟件運動也因為Linux的成功而被主流媒體關(guān)注。雷蒙在他總結(jié)開源運動的《大教堂與市集》一書中對此有詳細(xì)的描述。
使Linux成為軟件行業(yè)的開源軟件核心的另一個關(guān)鍵創(chuàng)新是集中運行在多個服務(wù)器平臺上的所有開源應(yīng)用程序,以便用戶可以自動下載和使用它們。這具有確保平臺上應(yīng)用程序的安全性和防止用戶從第三方網(wǎng)站下載由惡意軟件合并的程序的優(yōu)點。蘋果從該軟件組織那里學(xué)習(xí)到的知識已形成了Apple App Store。在90年代,Linux在PC市場中的份額低于Microsoft Windows。到1990年代末,由于開源的優(yōu)勢,Linux被用作構(gòu)建云計算平臺的獨立操作系統(tǒng)。隨著Google和Amazon等云計算平臺的出現(xiàn),Linux變得越來越流行。2000年之后,計算機行業(yè)進入了移動計算時代,并提供了新操作系統(tǒng)占主導(dǎo)的機會。有趣的是,這一變化產(chǎn)生的兩個移動操作系統(tǒng)可以歸因于UNIX的開源版本:Apple iOS系統(tǒng)移植于macOs,而Android使用的是LINX內(nèi)核。