標籤:

一位貓奴的編程傳奇

作者:Vamei,嚴禁任何形式轉載。

1991年年中,林納斯·托瓦茲(Linus Torvalds)在自己房間里敲著鍵盤。他全神貫注地盯著14寸的黑色屏幕,都沒感覺到自己寵愛的小貓Randi在扒自己的褲腿。他擺弄電腦時極為專心,唯一能接受的噪音就是心愛貓咪的咕嚕聲。

「我想讓自己的辦公室絕對安靜……除了貓咪的呼嚕聲。」

這台電腦價格高達3500美元,對於任何一個芬蘭家庭來說都是奢侈品。更何況,托瓦茲的父母沒有太多閑錢來贊助兒子。托瓦茲把獎學金和零用錢加在一起,付了電腦三分之二的錢。剩下的三分之一,要在接下來的三年里分期支付。拿到電腦之後,托瓦茲連著幾個月都耗在上面。不過,托瓦茲的母親對此並沒有太大意見,只是偶爾會提醒托瓦茲吃飯。倒是妹妹薩拉(Sara Torvalds)會在隔壁咆哮,逼著正在撥號上網的哥哥讓出電話線。

由於父母早年離異,所以托瓦茲大部分時間都是跟著母親長大的。他的外公是一位統計學教授,因此有一台工作用的Commodore電腦。這個品牌的電腦和BBC Micro一樣,都曾在歐洲流行。不知是為了培養外孫,還是純粹的偷懶,外公經常會口述程序,讓托瓦茲敲入到電腦里。年幼的托瓦茲很快發現,這個其貌不揚的「盒子」並不介意用戶是個兒童。只要輸入程序,電腦就會根據指令工作,不多也不少。除了服兵役的那將近一年的時間,托瓦茲把大部分時間都花在電腦編程上。進了赫爾辛基大學時,托瓦茲已經有了豐富的編程經驗。

學生時代的林納斯·托瓦茲

托瓦茲寫了一個終端模擬程序。通過這個程序,托瓦茲可以通過電話線連接到學校機房的電腦,再通過機房的電腦在互聯網上收發郵件。在90年代初,電子郵件還是少數「極客」才能玩得轉的高科技,一般人甚至不知道電子郵件是什麼。因此,當托瓦茲向妹妹展示終端模擬器時,薩拉一臉茫然,完全不知道哥哥在拽什麼。托瓦茲很難向妹妹解釋清楚這個程序厲害的地方。

這個程序其實是一款粗糙的操作系統,可以直接和電腦硬體互動。在普通人的眼裡,操作系統是個模糊的概念,大概就是電腦上預裝的Windows。我們可以在Windows上安裝《魔獸爭霸》這樣的程序、打開和關閉程序、把文件拖到不同的文件夾,卻很難給操作系統一個清楚的定義。其實,操作系統就是一套軟體,能充當計算機的大管家,管理計算機的各項資源。當任何一個用戶和程序想用電腦時,都可以通過操作系統提供的文字或圖形化界面進行互動。如果沒有操作系統,用戶就要懂得如何控制計算機的每個硬體,才能玩轉計算機。那樣的話,計算機就不可能流行。

托瓦茲實現的功能要比常見的操作系統簡單得多,但作為業餘項目,已經是很厲害了。下一步,他把Unix操作系統下常用的文本交互器bash嫁接到自己的終端模擬程序上。有了這個文本交互界面,家裡的電腦就像學校里的Unix操作系統一樣好用。

Unix也是一個操作系統程序,比Windows年長了20歲。貝爾實驗室的肯·湯普森(Ken Thompson)想在一台PDP-11型號的電腦上玩一款叫做《太空旅行》的遊戲,就編寫了最初的Unix。和之前的操作相比,Unix非常簡單。計算機的各項活動,無論用戶交互,還是編譯程序,都組織成結構相似而在運行上相互獨立的「進程」。進程之間可以通過文本形式相互通信,從而能協同工作。計算機上的數據,從程序文本,到配置信息,再到硬體介面,都儲存成文件。Unix與其說是一個程序,倒不如說是一套關於操作系統的哲學。肯·湯普森就好像計算機世界裡的牛頓,把計算機可以實現的複雜活動分解成幾條簡單的物理定律。Unix流行了將近半個世紀,並影響了非Unix陣營的其他操作系統,如微軟的MS-DOS和Windows。

在PDP-11前工作的UNIX創造者們

擁有貝爾實驗室的AT&T(美國電信電報公司)當時有政府禁令在身,不能涉足軟體業務。因此AT&T允許教育機構免費Unix。因此,Unix系統在大學裡傳播得很快。肯·湯普森的母校伯克利大學推出了一個更加好用的BSD(Berkeley Software Distribution)版本。這些計算機系的大學生用慣了Unix系統,所以步入社會之後,也把Unix系統推廣到IT公司。Unix成為黃金萬兩的生意,並衍生出各種各樣的商用版本。赫爾辛基大學也在剛剛購置的小型機安裝了Unix系統,可以讓十多個學生同時在線使用。托瓦茲就是這台電腦的常客之一,並很快喜歡上Unix。他不但花了一整個夏天去鑽研操作系統的經典教材,還學會了用來開發Unix程序的C語言。

只可惜,Unix對於家用電腦來說並不免費,一個最便宜的Unix系統也要數千美元。已經負債纍纍的托瓦茲可負擔不起。這也是托瓦茲要自制操作系統的主要原因。移植好bash之後,托瓦茲已經能在自家電腦上體驗到使用Unix的痛快。他很快又給自己的電腦安裝了C語言編譯器gcc。由於Unix下的大部分應用程序都是用C編寫,托瓦茲意識到,自己可以把Unix體系下積累的應用程序全部移植到自己的操作系統上。這樣,他的操作系統就可以直接實現文本處理等各種各樣的應用功能。

托瓦茲又一次充滿了創造者的驕傲。這一次,他選了一個更加專業的聽眾來宣布好消息。1991年8月,托瓦茲在Minix新聞組上發帖:

各位Minix用戶,大家好。我正在製作一個(免費)的操作系統(只是作為愛好,不會像gnu那樣專業)。這個項目從4月就啟動了,並將要準備好。我想聽聽大家的意見,特別是大家喜歡或不喜歡Minix的地方,因為我的操作系統將會和Minix有些像。我正在移植bash和gcc。這意味著接下來的幾個月里,我將獲得一些實質性的成果…… 此外,它沒有用Minix的代碼……

當時,Minix是操作系統世界裡的明星,Minix新聞組也聚集著操作系統專家和愛好者。編寫Minix的是生活在阿姆斯特丹自由大學的一位計算機教授安德魯·塔能鮑姆(Andrew Tananbaum)。為了教學方便,他仿照Unix編寫了Minix這款操作系統,並開放源代碼,以便學生更好地理解操作系統的原理。他編著的操作系統教材,也非常暢銷。托瓦茲就是借著那本700多頁的教科書,才摸清了操作系統的原理。

Minix並不如Unix成熟,但比起托瓦茲的操作系統還是強很多。Minix已經有不少擁躉。還有不少高手給Minix編寫補丁,已經大大提高了Minix的可用性。托瓦茲自己工作時,主要用的就是Minix。因此,托瓦茲在Minix新聞組裡發布自己的操作系統,看起來就像是闖入瓷器店惹事的公牛。意外的是,托瓦茲在新聞組裡獲得了不少支持。發帖不久,就有Minix用戶向托瓦茲反饋,說明自己想要的功能。有的用戶還為托瓦茲建立FTP伺服器,用於上傳正式發布的操作系統代碼。

Minix用戶看起來有些薄情,隨隨便便就背棄了Minix系統。但這應該歸咎於塔能鮑姆。畢竟,他有言在先,不希望人們拓展他的源代碼。即使有熱心用戶編寫了改進程序,塔能鮑姆也不會把這些改進加入到正式發行版本里。因此,人們只能編寫非正式的補丁並私下交流。Minix的發展陷入停滯。

相反,托瓦茲採用了GPL協議。任何用戶都可以自由地使用並修改GPL協議的代碼,但基於此修改出的代碼,也必須遵照GPL協議開放,供他人使用或修改。這個行動充滿了理想主義的味道,意味著托瓦茲不能從自己編寫的程序獲得直接的經濟利益。考慮到托瓦茲的父母都曾是學生運動領袖,他的父親還是芬蘭左翼的重要成員,有人疑心托瓦茲的做法來自於家庭的影響。但按照托瓦茲自己的解釋,他用GPL的唯一原因,就是懶。有了GPL協議,愛好者們可以毫無顧忌地貢獻代碼。他只要從中擇優,加入到正式版本中,就可以省了自己去開發的麻煩,從而有足夠的時間來照顧貓咪。

這一「詭計」確實奏效。愛好者們不但貢獻了代碼,還湊錢幫托瓦茲付了電腦的欠債。他們還按照Unix的傳統,把托瓦茲名字「Linus」的最後一個字母改成「x」,來命名這款新的操作系統。一個名為Linux的操作系統誕生了。

Linux的標誌企鵝,背景是Ubuntu發行版本的Linux

圈內的很多人都不看好Linux。在Linux大約一年後,Unix之父肯·湯姆普森和Minix之父安德魯·塔能鮑姆公開批評Linux的實現方式。塔能鮑姆甚至是說,如果托瓦茲是他班上的學生,那這個學生的成績一定不及格。開源運動領袖艾里克·雷蒙(Eric Raymond)後來回憶說,當他第一次接觸Linux代碼時,他有每一個理由相信Linux會最終失敗。

顯然,他們低估了社區的重要性。即便托瓦茲不是最天才的程序員,但社區愛好者的貢獻能讓任何天才程序員都跟不上Linux的速度。另一方面,托瓦茲在保持開源理想的同時,又有足夠的實用精神。Linux採用了GPL協議,但托瓦茲並不鼓吹「自由軟體就是好」的絕對論斷。在他看來,無論是哪一種力量,商業也好,非商業也要好,只有能促進Linux的發展,就都可以為Linux所用。在遇到問題時,托瓦茲也不會陷入「完美系統」的潔癖。他願意接受一個不甚完美的方案,然後快速迭代,不斷地優化方案。同樣採用GPL協議、但更富有理想主義的GNU項目也在內核開發上敗給了Linux。

1995年,用於HTTP服務的Apache伺服器發布。互聯網服務商發現,可以把同樣免費的Linux和Apache伺服器結合在一起,廉價地搭建網站所需的伺服器。此時的Linux已經以瘋狂的速度進化了好幾年,強健到完全可以勝任網站伺服器的工作。內容豐富的網頁取代電郵和新聞組,成為互聯網的主流。基於這套技術,最早的一批互聯網公司建立起來,如雅虎、亞馬遜、以及中國的搜狐。「dot-com"熱潮給Linux打了一劑強心針。在網路伺服器市場上,Linux徹底打敗微軟的Windows NT,成為大多數互聯網公司的選擇。網景、甲骨文、IBM等公司開始支持Linux系統,甚至同意把自己的部分代碼公開,貢獻給開源運動。托瓦茲的照片因此登上了福布斯的封面,成為很多青少年的偶像。

登上《福布斯》封面的程序員

來自芬蘭的窮小子打敗了統治天下的比爾·蓋茨,這本來就是話題性十足的故事線。更多人感到困惑,免費的Linux究竟怎麼賺錢。記者們搶著給托瓦茲打電話,想要獲得獨家採訪的機會。他們意外地發現,接電話的並非助手,而是這個傳奇英雄本人。事實上,托瓦茲也從來沒有私人助手。儘管Linux項目有數萬的參與者,但這些參與者組織成了不同的項目。托瓦茲真正需要打交道的,只是幾十個項目領導人。通過這種模式,托瓦茲驅動著成千上萬的程序員來為Linux做貢獻。

儘管領導著人類歷史上規模最大的軟體合作項目,甚至坐擁著Linux這個商標,托瓦茲並不富有。1997年,托瓦茲帶著妻子和剛出生的女兒遷居美國,他的賬戶只有幾千美元的餘額。在美國的第一個晚上,托瓦茲不得不和妻子擠在充氣床墊上,而他的貓咪也只能睡在旅行用的簡易籠子里。

不過,如果托瓦茲願意,他完全可以憑自己的身份獲得更好的生活。微軟的史蒂夫·巴爾默對Linux極為警惕,而史蒂夫·喬布斯曾親自邀請託瓦茲加盟蘋果。紅帽Linux和VA Linux這樣提供Linux服務和支持的公司也成立起來,獲得令人矚目的成功。托瓦茲接受了這些公司表達感謝而贈送給他的期權,卻不願到其中任何一家任職。托瓦茲樂意看到Linux在商業上的突破。他只是在做個人選擇時極為謹慎,免得自己因為商業利益而無法保持中立。

不過,生活總是給托瓦茲帶來意外的驚喜。隨著紅帽Linux和VA Linux的上市,托瓦茲手裡的股票價值一度高達2000萬美元。但托瓦茲還是住在普通的房子里,把大部分時間花在維護Linux上。真正令托瓦茲驕傲的是,社會徹底改變了對像他這樣的極客的看法。極客不再是70-80年代留著長鬍子穿著拖鞋整日躲在黑暗房間里的怪胎。相反,人們把他們看做技術先鋒。大公司願意出高薪聘用參與Linux核心項目的程序員。除了高超的技術,這些為開源社區做貢獻的極客們還能帶來一種已經改變了歷史的軟體開發方式。

如今的雜誌封面上,托瓦茲的Linux已經被人工智慧、手機、虛擬現實、物聯網取代。但想想把,IBM的超級電腦、谷歌的安卓手機、虛擬現實和物聯網的嵌入式設備上,都運行著Linux系統。就連樹莓派這樣的超小型電腦,都可以毫無困難地運行Linux。在四分之一個世紀的時間裡,Linux已經成為技術世界不可或缺的基礎設施。曾經見證Linux誕生的Randi已經過世。接替Randi的是黑貓Minky。於是,在這位極客的編程時間裡,又有貓咪的輕聲咕嚕作陪。

小貓Minky


推薦閱讀:

dingo:一個安全可靠的DNS代理
2017 年成為 Linux 專家的 4 個熱門技能
應用層協議那些事
非 NTFS 的日誌式文件系統上,比如Ext4,能實現類似 Everything 這個軟體的利用日誌進行快速搜索的功能么?
如何輕鬆記住 Linux 命令

TAG:Linux | 科技史 |