Linux巡雨,這個始于1991年由Linus Torvalds開發(fā)的類Unix操作系統(tǒng)內(nèi)核已經(jīng)成為開源世界的中心棍辕,人們不禁追問為什么Linux成功了暮现,而包括GNU HURD和BSD在內(nèi)的那么多相似的項目卻失敗了?
自由軟件和開源世界的發(fā)展史中最令人不解的問題之一是為什么Linux取得了如此輝煌的成功楚昭,然而其它同樣嘗試打造自由開源栖袋、類Unix操作系統(tǒng)內(nèi)核的項目卻沒能那么成功?這個問題難以回答抚太,但我總結(jié)了一些原因塘幅,在下面與大家分享。
不過尿贫,首先得明確:當(dāng)我談?wù)揕inux是一個巨大的成功時所表達(dá)的含義电媳。我這樣說是相對于其它類Unix操作系統(tǒng)內(nèi)核的,后者中一些是開源的庆亡,一些不是匾乓,而且它們繁榮發(fā)展的時期是Linux誕生的時期。GNU的HURD又谋,一個發(fā)起于1991年5月的Free(自由)的內(nèi)核拼缝,便是其中之一。其它的包括現(xiàn)在大部分人都沒聽說過的Unix彰亥,比如由加州大學(xué)伯克利分校開發(fā)出來的BSD的各種各樣Unix衍生版咧七,由微軟主導(dǎo)的Unix系統(tǒng)Xenix,包括Minix在內(nèi)的學(xué)術(shù)版本Unix剩愧,和在AT&T贊助下開發(fā)的最初的Unix猪叙。在更早的數(shù)十年內(nèi),它對于學(xué)術(shù)界和商業(yè)界的計算發(fā)展至關(guān)重要仁卷,但到19世紀(jì)90年代就已經(jīng)幾乎已經(jīng)消失在人們的視野里穴翩。
相關(guān)閱讀
此外,得說明的是锦积,我這里說的是內(nèi)核芒帕,而不是完整的操作系統(tǒng)。在很大程度上丰介,Linux內(nèi)核的成功歸功于GNU整個項目背蟆。GNU這個項目產(chǎn)生了一套至關(guān)重要的工具鉴分,包括編譯器、調(diào)試器和BASH shell的實現(xiàn)带膀,這些對于構(gòu)建一個類Unix操作系統(tǒng)是必需的志珍。但是GNU的開發(fā)者們從沒開發(fā)出一個HURD內(nèi)核的可行版本(盡管他們?nèi)栽?a target="_blank" rel="nofollow">不懈努力中)。相反垛叨,Linux呈現(xiàn)出來的則是一個將GNU各個部分緊密連接在一起的內(nèi)核伦糯,盡管這超出了GNU的初衷。
因此嗽元,值得人們?nèi)プ穯枮槭裁碙inux敛纲,一個由Linus Torvalds這個芬蘭的無名程序員于1991年——和HURD同一年——發(fā)起的內(nèi)核,能夠經(jīng)受考驗并發(fā)展壯大剂癌?在當(dāng)時的大環(huán)境下淤翔,很多擁有強力商業(yè)支持的、由當(dāng)時炙手可熱的黑客領(lǐng)頭的類Unix內(nèi)核都沒能夠發(fā)展起來佩谷。為了說明這個問題旁壮,我找到了一些和這個問題相關(guān)的解釋。為此我研究了自由軟件和開源世界的發(fā)展史琳要,和不同解釋的優(yōu)缺點寡具。
Linux采用去中心化的開發(fā)方式
這個觀點來源于Eric S. Raymond的文章,“大教堂與市集”和其相關(guān)資料稚补。這些資料驗證了一種情形:當(dāng)大量的貢獻(xiàn)者以一種去中心化的組織結(jié)構(gòu)持續(xù)不斷地協(xié)同合作時童叠,軟件開發(fā)的效率最佳。Linux的開發(fā)證明了這一點课幕,與之相反的是厦坛,比如,GNU HURD采用了一種相對更集中化的方法來管理代碼開發(fā)乍惊。其結(jié)果如同Raymond所言杜秸,顯然在十年的時間里都沒能成功構(gòu)建出一個完整的操作系統(tǒng)。
在一定程度上润绎,這個解釋有道理撬碟,但仍有一些明顯的不足。舉例來說莉撇,Torvalds在指導(dǎo)Linux代碼開發(fā)過程中毫無爭議地承擔(dān)起一個更加有權(quán)威的角色呢蛤,他可以決定接受或拒絕代碼,這一點并非Raymond和其他人所想的那樣棍郎。其次其障,這個觀點不能解釋除了沒能開發(fā)出一個可行的系統(tǒng)內(nèi)核外GNU仍然成功地生產(chǎn)出那么多優(yōu)秀的軟件。如果只有去中心化的開發(fā)方式才能很好地指導(dǎo)開源軟件世界里的項目涂佃,那么GNU所有的編程工作都應(yīng)該是徒勞無功的励翼,但事實并非如此蜈敢。
Linux是實用型的,而GNU是空想型的
個人而言汽抚,我覺得這個說法是最引人注目的抓狭,即Linux之所發(fā)展得如此迅速是因為它的創(chuàng)建者是一個實用主義者,他起初只是想寫一個內(nèi)核殊橙,使其能夠在他家里的電腦上運行一個裁剪過的Unix操作系統(tǒng)辐宾,而不是成為以改變世界為目標(biāo)的自由軟件的一部分,而后者正是GNU項目的一貫?zāi)繕?biāo)膨蛮。
然而,這個解釋仍然有一些不能完全讓人信服的地方季研。特別是敞葛,盡管Torvalds本人信奉實用主義的原則,但無論以前還是現(xiàn)在与涡,并非所有參與到他的項目中的成員都和他一樣信奉這一原則惹谐。盡管如此,Linux仍然取得了成功驼卖。
而且氨肌,如果實用主義是Linux持續(xù)發(fā)展的關(guān)鍵,那么就要再問一遍:為什么GNU除了沒能開發(fā)出一個內(nèi)核外還是成功地開發(fā)出這么多有用的工具酌畜?如果擁有某一種對軟件的堅定政治信仰是追求成功的項目路上的絆腳石怎囚,那么GNU早應(yīng)該是一個徹頭徹尾的失敗者,而不會是一個開發(fā)了那么多如今依然為IT世界提供堅實基礎(chǔ)的優(yōu)秀軟件包的開拓者桥胞。
最后(但并不是最不重要)恳守,許多誕生于19世紀(jì)80年代末期和90年代初期的Unix變體,尤其是一些BSD分支贩虾,都是實用主義的產(chǎn)物催烘。它們的開發(fā)者們致力于開發(fā)出可以自由分享而不是受到高昂商業(yè)證書限制的Unix變體,但他們對于編程或者共享代碼并非完全局限于意識形態(tài)缎罢。Torvalds同樣如此伊群,因此很難說Linux和成功和其它Unix項目的失敗是意識形態(tài)在作怪。
操作系統(tǒng)設(shè)計
當(dāng)談到Linux的成功時策精,不可忽視的是Linux和其它Unix變體之間的諸多技術(shù)差異舰始。Richard Stallman,GNU項目的創(chuàng)始人蛮寂,在一封給我的電子郵件中解釋了為什么HURD的開發(fā)進(jìn)度頻頻滯后:“GNU Hurd確實不是一次實用上的成功蔽午。部分原因是它的基本設(shè)計使它像是一個研究項目。(我之所以選擇這樣的設(shè)計酬蹋,是考慮到這是快速實現(xiàn)一個可用內(nèi)核的捷徑及老。)”
就Torvalds獨自編寫出Linux的所有代碼這點而言抽莱,Linux也有別于其它Unix變體。當(dāng)他在1991年8月第一次發(fā)布Linux時他的一個初衷就是擁有一個屬于他自己的Unix骄恶,而不用別人的代碼食铐。這點特性使得Linux區(qū)別于同時期的大部分Unix變體,后者一般是從AT&T Unix或伯克利的BSD中衍生出基礎(chǔ)代碼僧鲁。
我并不是一個計算機科學(xué)家虐呻,所以我沒有資格去評判是否Linux代碼就優(yōu)于其他Unix代碼,以此來解釋Linux的成功寞秃。雖然這并不能解釋Linux和其它Unix內(nèi)核在文化和人員上的不同斟叼,但這個觀點對我來說解釋得通,因為似乎在理解Linux成功這一點上操作系統(tǒng)設(shè)計比代碼更加重要春寿。
Linux背后的社區(qū)提供了有力支持
Stallman也寫到Linux成功的“主要原因”是“Torvalds使Linux成為一個自由軟件朗涩,所以相比Hurd有更多來自社區(qū)的支持涌入Linux的發(fā)展中“蟾模”但這對于Linux的成長軌跡并非是一個完美的解釋谢床,因為它不能說明為什么自由軟件的開發(fā)者們追隨了Torvalds而不是HURD或其它某個Unix,但它仍然點明了這種變化是Linux盛行的很大一部分原因厘线。
對于自由軟件社區(qū)決定支持Linux有一個更全面的理由可以用來解釋為什么開發(fā)者們這么做识腿。起初,Linux只是一個默默無聞的小項目造壮,以任何標(biāo)準(zhǔn)來衡量渡讼,它比同時期其它的一些嘗試創(chuàng)建一個更加自由的Unix,比如NET BSD和386/BSD费薄,都要顯得微不足道硝全。同樣,最初并不清楚Linux和自由軟件運動的目標(biāo)是否一致楞抡。創(chuàng)建伊始伟众,Torvalds只是在一份防止Linux不被商業(yè)使用的證書下發(fā)布了Linux。至于后來他為了保護源代碼的開放性轉(zhuǎn)向使用GNU的通用公開證書則是后話了召廷。
所以凳厢,這些就是我所找到的Linux作為一個開源操作系統(tǒng)之所以取得成功的解釋,可以肯定Linux的成就在某些方面(但比如桌面版的Linux從未成為它的支持者希望成為的樣子)已經(jīng)是可以衡量的成功竞慢∠茸希總之,Linux業(yè)已與其它任何類Unix操作系統(tǒng)不同的方式成為了計算機世界的基石筹煮。也許源于BSD的蘋果公司的OS X和iOS系統(tǒng)也很接近這一點遮精,但它們沒有在其它方面像Linux影響互聯(lián)網(wǎng)一樣扮演著如此重要的中心角色。
對于為什么Linux能成為現(xiàn)在的樣子,或者為什么它在Unix世界的競爭對手們幾乎全部變得默默無聞的問題本冲,你有其它的想法嗎准脂?如果有,我很樂意聽到你的想法檬洞。(誠然狸膏,BSD的變體如今仍有一批追隨者,而一些商用的Unix對于Red Hat(RHT)為他們的用戶提供支持來說也仍然十分重要添怔。但這些Unix中沒有一個能夠像Linux一樣幾乎征服了從Web服務(wù)器到智能手機的每一個領(lǐng)域湾戳。)
作者:Christopher Tozzi
譯者:KayGuoWhu
校對:wxy