歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> Linux的二號功臣

Linux的二號功臣

日期:2017/3/3 12:33:57   编辑:Linux技術

今天,Linux以其特有的開放源代碼的魅力正逐步深入人心。然而在它出現之前,有誰會想到一個世界級的操作系統是靠分散在全球的幾千個開發人員用業余時間創造出來的呢?

對於Linux的成功,人們往往會歸功於天才Linus Torvalds的奇思妙想和別具一格的項目管理方法。這是毫無疑問的。但是,除了Linus之外,還有一位在開源領域內享有盛譽的高手對Linux開發的管理也至關重要,他就是Alan Cox。下面讓我們一起見識一下這位幕後英雄的廬山真面目。

從頭再來1969年,Alan Cox出生於英國的伯明翰。他從小就對計算機有著濃厚的性趣,曾使用Commodore PET這種古老計算機學習編程。Cox的第一個作品是一個利用簡單的計算機動畫來模擬月亮起落的程序。盡管Cox認為它沒有多大的實用性,但這的確為他後來所從事的游戲編程奠定了一定基礎。

Cox認為自己第一個真正的程序是在高中的社會實踐活動中完成的。當時,學校組織這種活動的目的是讓學生們利用兩周的假期參與社會實踐,從而認識到自己現有的水平不足以更好地完成令自己感興趣的工作,以達到激發學生們上大學的熱情。

但好多學生卻領會不了學校的良苦用心,他們雖然聯系了大公司,但僅僅是做了兩周的雜活,交差了事。而Cox在這方面則是個好學生,他想利用假期學習游戲編程。於是還沒開始放假,他就緊鑼密鼓地聯系工作,幾乎給伯明翰所有相關的公司打了電話。最終,他來到了Adventure International公司,編寫了兩周的游戲代碼。Cox的聰明和勤奮使得公司對他非常感興趣,兩周的實習結束後,公司聘任他為長期兼職程序員。那年,Cox剛滿18歲。

高中畢業後,Cox進入了位於斯旺西的威爾士大學的計算機系學習。在大學裡,Cox相當地活躍,不僅經常與同學討論問題,而且在學校的計算機協會裡小有名氣,因此,他在大學裡有好多朋友。

但是,最令Cox難忘的還是他的忘年之交—Rob Ash。他們的相識也是從討論問題開始的。當時Cox在課堂上遇到一個棘手的問題,於是他向老師請教,與同學討論,但得到的回答都無法讓他滿意。

於是,他試著找到了當時學校的系統管理員Rob Ash。盡管Ash非常忙,但他還是十分熱情地接待了這位好學的年輕人,並結合自己的經驗闡述了他對問題的看法,這使得Cox茅塞頓開。在以後的大學生活中,每當Cox遇到難題時,他總是來找Ash請教和探討,Ash也總是抽出時間為他耐心地講解。

後來,當Cox回憶起大學裡的學習生活時,他認為自己從Rob Ash那裡幾乎學到了所有的操作系統重要部件的工作原理。Rob Ash是他心中永遠的偶像。

除了學習和討論理論知識外,Cox在大學裡依然沒有放棄對游戲編程的喜愛,並經常為Adventure International做一些兼職工作。這期間,作為主要設計者,他為游戲ABERMUD做了大量的設計乃至編碼工作。ABERMUD盡管不是最早的MUD (Multi-User Dungeon)游戲,但卻是最早在Internet上發布的MUD游戲,並在20世紀90年代初產生了重要的影響。

ABERMUD的設計與開發工作進行得異常艱苦。最初的結果令Cox很不滿意,於是他親自動手修改了一年多,但效果仍不理想,甚至有些地方是越改越糟。經過反復斟酌,Cox決定推翻原來的工作,重新設計編碼,並最終取得了成功。

ABERMUD的開發使Cox對項目的開發和管理有了深刻的認識。在對該項目的總結中,他認為Fred Brooks在《人月神話》所提到的“要做好拋棄最初設計的准備”確實是金玉良言。ABERMUD給他最大的教訓是,在確信前面的工作有嚴重錯誤時,要敢於捨棄原有的設計,從頭再來。

眾裡尋它千百度開發ABERMUD對Alan Cox產生了重要的影響,Cox不但具備了一定的項目管理經驗,而且還結識了日後為之奮斗的Linux。在推翻原計劃從頭再來的過程中,Cox越來越感到自己的Amiga計算機已經很難勝任這項工作了。於是,他模仿Unix的風格編寫了大量的代碼,來為自己的計算機做最大限度的優化,但古老的Amiga常常令他捉襟見肘,最終他不得不決定為自己換一台新計算機。

1992年春,Cox買了一個當時主流的386處理器和一條4MB的內存,然後用它們和自己原來的硬盤組裝了一台新電腦。有了新電腦之後,Cox接下來要做的是選一種合適的操作系統作為ABERMUD的開發平台,這使他很傷腦筋。

Cox考慮過使用當時已開始流行的DOS和Windows 3.0,但這兩種操作系統的穩定性很難達到ABERMUD的要求,對他的幫助不大。後來Cox又把目光轉向了較為穩定的FreeBSD。他花了好長時間下載了386BSD,但該操作系統需要一塊浮點芯片。盡管BSD性能良好,但浮點芯片價格不菲,對於當時的Cox來說不啻為天文數字。

值得慶幸的是,這個時候Linux出現了,盡管從技術上講,當時的Linux在各方面都與BSD相去甚遠,但它也有著自身的優勢。首先,Linux對硬件的要求不高;其次,其穩定性已能夠滿足Cox的開發需要;此外,當時的MCC Linux,以及稍後的SLS Linux安裝起來也很簡單。

當然,最令Cox感興趣的還是Linux是開放源代碼的。於是,Cox為自己的新電腦安裝了Linux,並從此與Linux結下了10多年的不解之緣。

不拘一格攬人才自從安裝了Linux之後,ABERMUD的開發進展順利。而且,Alan Cox還用它搭建了威爾士大學的BBS,這使得Cox對Linux更加情有獨鐘。在業余時間,Cox為Linux寫了一個補丁,並發給了Linus。很快Linus就給他回了信,告訴他這個問題已有人解決了。

但Cox的熱情不減,很快又寫了一個用於進程計數的補丁,這次被Linus加入了Linux的內核,並先後經過了10個人的修改,一直保存下來。

後來,Cox又把Linux安裝到了威爾士大學計算機協會的電腦上,試圖通過使用Linux,使得學校的BBS每天能夠穩定地開放3小時以上。Cox回憶說,他和計算機協會的其它成員可能是最早把Linux用於大型的、多協議網絡中的人。這使得他們能夠比其它人更早地發現當時Linux在網絡方面的許多問題,比如他們用自己的新方法在Linux上實現了TCP/IP協議等。

Cox和同學們對發現的錯誤一一進行改正,並寫了許多新代碼來彌補從前的漏洞。就這樣,Cox把他寫的好多補丁合在一起,命名為net2debugged,發給了Linus,並且被采用。就這樣,Cox給Linus留下了深刻的印象,並被Linus邀請作為Linux網絡代碼的管理者。

1994年,Cox在第一屆國際Linux大會上見到了Linus,並與後者就Linux的重要問題進行了深入的探討。Linus認為,Cox對Linux網絡代碼的管理非常成功,希望他能夠管理整個Linux的內核,Cox欣然應允。

維護整個Linux的內核無疑是一項艱巨的任務。Cox要做的是每天接收大量的來自世界各地的代碼,然後根據自己的經驗並結合實際測試進行過濾,把那些自己認為優秀的代碼發給Linus,由Linus決定是否采用。而對於那些不合適的代碼,Cox要返回給作者本人,並指出哪些屬於想法很好,但實現的卻很糟糕;哪些結果很好,但代碼本身有錯誤;哪些代碼與原有的內核有沖突等。

在這一繁瑣的工作過程中,Cox積累了一整套行之有效的、獨特的Linux項目管理經驗,並經過整理寫成了《大教堂、集市和委員會》這一在開源領域內堪稱經典的文章。在這些經驗中,Cox對人的管理和使用的經驗最值得稱道。

眾所周知,Linux的開發人員分散在世界各地,比如Linus來自芬蘭,Cox來自英國等。如何讓這些來自不同國度、文化背景各異的志願者齊心協力地工作,是Cox面臨的最大難題。事實證明,Cox確實很好地做到了人盡其才,不拘一格。

對於那些為Linux寫過很多代碼的程序員,Cox在表示感謝的同時,總是能夠恰當地使用“激將法”激勵他們向更高的目標前進;對於那些水平不是很高,所寫的代碼被拒絕的作者,Cox則總會詳細地指出這些代碼為什麼被拒絕,可以考慮從哪些方面進行改進。

他認為在這方面不要害怕浪費時間,詳細地指出問題所在,積極地與作者進行討論,耐心地解答作者的問題將往往會事半功倍。一次,為了一段被Cox拒絕的代碼,他與作者進行了激烈地、反復地討論。最後,作者心悅誠服,認識到了自己的代碼針對性太強,不具備一般性,並不是對絕大多數Linux用戶都有用。這之後,這位作者成功地為Linux的內核寫了幾部分的代碼。

對於那些非常想參與Linux內核項目,但水平又不高的作者,Cox總是一邊鼓勵他們,一邊耐心地告訴他們從何入手,並盡自己所能來回答他們的各種問題。事實證明,有些人確實通過這種方式成了高手,並為Linux內核做出了很大的貢獻。

比如,有一位葡萄牙人通過這種方式使自己的水平得到了極大的提高,後來負責Linux IPv6部分工作,並寫了75%的Linux IPv6的代碼。目前,他已成為美國Cisco公司的高級雇員。而對那些沒有任何編程經驗的志願者,Cox也總有辦法讓他們在網絡管理、郵件列表管理、書寫文檔等除編程以外的、其它不可缺少的方面發揮作用。

二號人物的魅力與其它Linux業內重要人物一樣,Alan Cox除了維護Linux內核以外,也有自己的工作。他大學畢業後,先後工作於Cable Online公司、3Com公司、CymruNet公司、CERT公司等,甚至連微軟公司也曾向他拋出過橄榄枝,但Cox沒有接受這一邀請。最後,他來到了Red Hat公司做技術支持工作。

Red Hat給了Cox足夠的自由,他可以在家中工作,有足夠的時間來從事自己心愛的Linux內核的維護工作。

除了公司的工作外,Cox每周至少做60小時的Linux內核的維護工作。因此,有人曾傳說Cox是個精力極其旺盛的家伙,根本不睡覺。正是他的這種孜孜不倦的工作,使得Linux的內核越來越棒,人們也習慣把他所維護的、尚未公開發布的內核稱為Linux內核的AC(Alan Cox)版。

此外,Cox有著很大的人格魅力,無論是在Linux內核的維護工作中,還是在Red Hat的技術支持過程中,他對問題的回答總是能夠讓提問者滿意。他認為,能夠使別人快樂才是世界上最大的快樂。

出色的工作加上特有的人格魅力,使Cox在Linux業內贏得了極高的聲譽。業內人士普遍認為,沒有Alan Cox的傑出的貢獻,就不會有Linux今日的輝煌。

在著名的計算機作家Nikolai Bezroukov所著的《開源運動先驅》一書中,作者認為在Linux業內,Alan Cox的貢獻僅次於Linus Torvalds,是Linux業內的二號人物。就連Linus Torvalds本人也認為,Linux能有今天,Alan Cox功不可沒,是他最應該感謝的人!

Copyright © Linux教程網 All Rights Reserved