今天,Linux以其特有的開(kāi)放源代碼的魅力正逐步深入人心。然而在它出現之前,有誰(shuí)會(huì )想到一個(gè)世界級的操作系統是靠分散在全球的幾千個(gè)開(kāi)發(fā)人員用業(yè)余時(shí)間創(chuàng )造出來(lái)的呢?
對于Linux的成功,人們往往會(huì )歸功于天才Linus Torvalds的奇思妙想和別具一格的項目管理方法。這是毫無(wú)疑問(wèn)的。但是,除了Linus之外,還有一位在開(kāi)源領(lǐng)域內享有盛譽(yù)的高手對Linux開(kāi)發(fā)的管理也至關(guān)重要,他就是Alan Cox。下面讓我們一起見(jiàn)識一下這位幕后英雄的廬山真面目。
從頭再來(lái)
1969年,Alan Cox出生于英國的伯明翰。他從小就對計算機有著(zhù)濃厚的性趣,曾使用Commodore PET這種古老計算機學(xué)習編程。Cox的第一個(gè)作品是一個(gè)利用簡(jiǎn)單的計算機動(dòng)畫(huà)來(lái)模擬月亮起落的程序。盡管Cox認為它沒(méi)有多大的實(shí)用性,但這的確為他后來(lái)所從事的游戲編程奠定了一定基礎。
Cox認為自己第一個(gè)真正的程序是在高中的社會(huì )實(shí)踐活動(dòng)中完成的。當時(shí),學(xué)校組織這種活動(dòng)的目的是讓學(xué)生們利用兩周的假期參與社會(huì )實(shí)踐,從而認識到自己現有的水平不足以更好地完成令自己感興趣的工作,以達到激發(fā)學(xué)生們上大學(xué)的熱情。
但好多學(xué)生卻領(lǐng)會(huì )不了學(xué)校的良苦用心,他們雖然聯(lián)系了大公司,但僅僅是做了兩周的雜活,交差了事。而Cox在這方面則是個(gè)好學(xué)生,他想利用假期學(xué)習游戲編程。
于是還沒(méi)開(kāi)始放假,他就緊鑼密鼓地聯(lián)系工作,幾乎給伯明翰所有相關(guān)的公司打了電話(huà)。最終,他來(lái)到了Adventure International公司,編寫(xiě)了兩周的游戲代碼。Cox的聰明和勤奮使得公司對他非常感興趣,兩周的實(shí)習結束后,公司聘任他為長(cháng)期兼職程序員。那年,Cox剛滿(mǎn)18歲。
高中畢業(yè)后,Cox進(jìn)入了位于斯旺西的威爾士大學(xué)的計算機系學(xué)習。在大學(xué)里,Cox相當地活躍,不僅經(jīng)常與同學(xué)討論問(wèn)題,而且在學(xué)校的計算機協(xié)會(huì )里小有名氣,因此,他在大學(xué)里有好多朋友。
但是,最令Cox難忘的還是他的忘年之交—Rob Ash。他們的相識也是從討論問(wèn)題開(kāi)始的。當時(shí)Cox在課堂上遇到一個(gè)棘手的問(wèn)題,于是他
于是,他試著(zhù)找到了當時(shí)學(xué)校的系統管理員Rob Ash。盡管Ash非常忙,但他還是十分熱情地接待了這位好學(xué)的年輕人,并結合自己的經(jīng)驗闡述了他對問(wèn)題的看法,這使得Cox茅塞頓開(kāi)。在以后的大學(xué)生活中,每當Cox遇到難題時(shí),他總是來(lái)找Ash請教和探討,Ash也總是抽出時(shí)間為他耐心地講解。
后來(lái),當Cox回憶起大學(xué)里的學(xué)習生活時(shí),他認為自己從Rob Ash那里幾乎學(xué)到了所有的操作系統重要部件的工作原理。Rob Ash是他心中永遠的偶像。
除了學(xué)習和討論理論知識外,Cox在大學(xué)里依然沒(méi)有放棄對游戲編程的喜愛(ài),并經(jīng)常為Adventure International做一些兼職工作。這期間,作為主要設計者,他為游戲ABERMUD做了大量的設計乃至編碼工作。ABERMUD盡管不是最早的MUD (Multi-User Dungeon)游戲,但卻是最早在Internet上發(fā)布的MUD游戲,并在20世紀90年代初產(chǎn)生了重要的影響。
ABERMUD的設計與開(kāi)發(fā)工作進(jìn)行得異常艱苦。最初的結果令Cox很不滿(mǎn)意,于是他親自動(dòng)手修改了一年多,但效果仍不理想,甚至有些地方是越改越糟。經(jīng)過(guò)反復斟酌,Cox決定推翻原來(lái)的工作,重新設計編碼,并最終取得了成功。
ABERMUD的開(kāi)發(fā)使Cox對項目的開(kāi)發(fā)和管理有了深刻的認識。在對該項目的總結中,他認為Fred Brooks在《人月神話(huà)》所提到的“要做好拋棄最初設計的準備”確實(shí)是金玉良言。ABERMUD給他最大的教訓是,在確信前面的工作有嚴重錯誤時(shí),要敢于舍棄原有的設計,從頭再來(lái)。
眾里尋它千百度
開(kāi)發(fā)ABERMUD對Alan Cox產(chǎn)生了重要的影響,Cox不但具備了一定的項目管理經(jīng)驗,而且還結識了日后為之奮斗的Linux。在推翻原計劃從頭再來(lái)的過(guò)程中,Cox越來(lái)越感到自己的Amiga計算機已經(jīng)很難勝任這項工作了。
于是,他模仿Unix的風(fēng)格編寫(xiě)了大量的代碼,來(lái)為自己的計算機做最大限度的優(yōu)化,但古老的Amiga常常令他捉襟見(jiàn)肘,最終他不得不決定為自己換一臺新計算機。
1992年春,Cox買(mǎi)了一個(gè)當時(shí)主流的386處理器和一條4MB的內存,然后用它們和自己原來(lái)的硬盤(pán)組裝了一臺新電腦。有了新電腦之后,Cox接下來(lái)要做的是選一種合適的操作系統作為ABERMUD的開(kāi)發(fā)平臺,這使他很傷腦筋。
Cox考慮過(guò)使用當時(shí)已開(kāi)始流行的DOS和Windows 3.0,但這兩種操作系統的穩定性很難達到ABERMUD的要求,對他的幫助不大。后來(lái)Cox又把目光轉向了較為穩定的FreeBSD。他花了好長(cháng)時(shí)間下載了386BSD,但該操作系統需要一塊浮點(diǎn)芯片。盡管BSD性能良好,但浮點(diǎn)芯片價(jià)格不菲,對于當時(shí)的Cox來(lái)說(shuō)不啻為天文數字。
值得慶幸的是,這個(gè)時(shí)候Linux出現了,盡管從技術(shù)上講,當時(shí)的Linux在各方面都與BSD相去甚遠,但它也有著(zhù)自身的優(yōu)勢。首先,Linux對硬件的要求不高;其次,其穩定性已能夠滿(mǎn)足Cox的開(kāi)發(fā)需要;此外,當時(shí)的MCC Linux,以及稍后的SLS Linux安裝起來(lái)也很簡(jiǎn)單。
當然,最令Cox感興趣的還是Linux是開(kāi)放源代碼的。于是,Cox為自己的新電腦安裝了Linux,并從此與Linux結下了10多年的不解之緣。
不拘一格攬人才
自從安裝了Linux之后,ABERMUD的開(kāi)發(fā)進(jìn)展順利。而且,Alan Cox還用它搭建了威爾士大學(xué)的BBS,這使得Cox對Linux更加情有獨鐘。在業(yè)余時(shí)間,Cox為Linux寫(xiě)了一個(gè)補丁,并發(fā)給了Linus。很快Linus就給他回了信,告訴他這個(gè)問(wèn)題已有人解決了。
但Cox的熱情不減,很快又寫(xiě)了一個(gè)用于進(jìn)程計數的補丁,這次被Linus加入了Linux的內核,并先后經(jīng)過(guò)了10個(gè)人的修改,一直保存下來(lái)。
后來(lái),Cox又把Linux安裝到了威爾士大學(xué)計算機協(xié)會(huì )的電腦上,試圖通過(guò)使用Linux,使得學(xué)校的BBS每天能夠穩定地開(kāi)放3小時(shí)以上。Cox回憶說(shuō),他和計算機協(xié)會(huì )的其它成員可能是最早把Linux用于大型的、多協(xié)議網(wǎng)絡(luò )中的人。這使得他們能夠比其它人更早地發(fā)現當時(shí)Linux在網(wǎng)絡(luò )方面的許多問(wèn)題,比如他們用自己的新方法在Linux上實(shí)現了TCP/IP協(xié)議等。
Cox和同學(xué)們對發(fā)現的錯誤一一進(jìn)行改正,并寫(xiě)了許多新代碼來(lái)彌補從前的漏洞。就這樣,Cox把他寫(xiě)的好多補丁合在一起,命名為net2debugged,發(fā)給了Linus,并且被采用。就這樣,Cox給Linus留下了深刻的印象,并被Linus邀請作為Linux網(wǎng)絡(luò )代碼的管理者。
1994年,Cox在第一屆國際Linux大會(huì )上見(jiàn)到了Linus,并與后者就Linux的重要問(wèn)題進(jìn)行了深入的探討。Linus認為,Cox對Linux網(wǎng)絡(luò )代碼的管理非常成功,希望他能夠管理整個(gè)Linux的內核,Cox欣然應允。
維護整個(gè)Linux的內核無(wú)疑是一項艱巨的任務(wù)。Cox要做的是每天接收大量的來(lái)自世界各地的代碼,然后根據自己的經(jīng)驗并結合實(shí)際測試進(jìn)行過(guò)濾,把那些自己認為優(yōu)秀的代碼發(fā)給Linus,由Linus決定是否采用。
而對于那些不合適的代碼,Cox要返回給作者本人,并指出哪些屬于想法很好,但實(shí)現的卻很糟糕;哪些結果很好,但代碼本身有錯誤;哪些代碼與原有的內核有沖突等。
在這一繁瑣的工作過(guò)程中,Cox積累了一整套行之有效的、獨特的Linux項目管理經(jīng)驗,并經(jīng)過(guò)整理寫(xiě)成了《大教堂、集市和委員會(huì )》這一在開(kāi)源領(lǐng)域內堪稱(chēng)經(jīng)典的文章。在這些經(jīng)驗中,Cox對人的管理和使用的經(jīng)驗最值得稱(chēng)道。
眾所周知,Linux的開(kāi)發(fā)人員分散在世界各地,比如Linus來(lái)自芬蘭,Cox來(lái)自英國等。如何讓這些來(lái)自不同國度、文化背景各異的志愿者齊心協(xié)力地工作,是Cox面臨的最大難題。事實(shí)證明,Cox確實(shí)很好地做到了人盡其才,不拘一格。
對于那些為Linux寫(xiě)過(guò)很多代碼的程序員,Cox在表示感謝的同時(shí),總是能夠恰當地使用“激將法”激勵他們向更高的目標前進(jìn);對于那些水平不是很高,所寫(xiě)的代碼被拒絕的作者,Cox則總會(huì )詳細地指出這些代碼為什么被拒絕,可以考慮從哪些方面進(jìn)行改進(jìn)。
他認為在這方面不要害怕浪費時(shí)間,詳細地指出問(wèn)題所在,積極地與作者進(jìn)行討論,耐心地解答作者的問(wèn)題將往往會(huì )事半功倍。一次,為了一段被Cox拒絕的代碼,他與作者進(jìn)行了激烈地、反復地討論。最后,作者心悅誠服,認識到了自己的代碼針對性太強,不具備一般性,并不是對絕大多數Linux用戶(hù)都有用。這之后,這位作者成功地為Linux的內核寫(xiě)了幾部分的代碼。
對于那些非常想參與Linux內核項目,但水平又不高的作者,Cox總是一邊鼓勵他們,一邊耐心地告訴他們從何入手,并盡自己所能來(lái)回答他們的各種問(wèn)題。事實(shí)證明,有些人確實(shí)通過(guò)這種方式成了高手,并為Linux內核做出了很大的貢獻。
比如,有一位葡萄牙人通過(guò)這種方式使自己的水平得到了極大的提高,后來(lái)負責Linux IPv6部分工作,并寫(xiě)了75%的Linux IPv6的代碼。目前,他已成為美國Cisco公司的高級雇員。而對那些沒(méi)有任何編程經(jīng)驗的志愿者,Cox也總有辦法讓他們在網(wǎng)絡(luò )管理、郵件列表管理、書(shū)寫(xiě)文檔等除編程以外的、其它不可缺少的方面發(fā)揮作用。
二號人物的魅力
與其它Linux業(yè)內重要人物一樣,Alan Cox除了維護Linux內核以外,也有自己的工作。他大學(xué)畢業(yè)后,先后工作于Cable Online公司、3Com公司、CymruNet公司、CERT公司等,甚至連微軟公司也曾向他拋出過(guò)橄欖枝,但Cox沒(méi)有接受這一邀請。最后,他來(lái)到了Red Hat公司做技術(shù)支持工作。
Red Hat給了Cox足夠的自由,他可以在家中工作,有足夠的時(shí)間來(lái)從事自己心愛(ài)的Linux內核的維護工作。
除了公司的工作外,Cox每周至少做60小時(shí)的Linux內核的維護工作。因此,有人曾傳說(shuō)Cox是個(gè)精力極其旺盛的家伙,根本不睡覺(jué)。正是他的這種孜孜不倦的工作,使得Linux的內核越來(lái)越棒,人們也習慣把他所維護的、尚未公開(kāi)發(fā)布的內核稱(chēng)為Linux內核的AC(Alan Cox)版。
此外,Cox有著(zhù)很大的人格魅力,無(wú)論是在Linux內核的維護工作中,還是在Red Hat的技術(shù)支持過(guò)程中,他對問(wèn)題的回答總是能夠讓提問(wèn)者滿(mǎn)意。他認為,能夠使別人快樂(lè )才是世界上最大的快樂(lè )。
出色的工作加上特有的人格魅力,使Cox在Linux業(yè)內贏(yíng)得了極高的聲譽(yù)。業(yè)內人士普遍認為,沒(méi)有Alan Cox的杰出的貢獻,就不會(huì )有Linux今日的輝煌。
在著(zhù)名的計算機作家Nikolai Bezroukov所著(zhù)的《開(kāi)源運動(dòng)先驅》一書(shū)中,作者認為在Linux業(yè)內,Alan Cox的貢獻僅次于Linus Torvalds,是Linux業(yè)內的二號人物。就連Linus Torvalds本人也認為,Linux能有今天,Alan Cox功不可沒(méi),是他最應該感謝的人!
聯(lián)系客服