作為芬蘭Helsinki大學計算機科學系的學生,Linus Torvalds在1991年編寫了Linux操作系統的原始內核。很快,Linux就發展成為了一個全特征的操作系統,并開始運行在智能手機、服務器和各種設備中。在本次通過e-mail進行的訪談中,Torvalds回顧了過去25年的歷程,并展望了未來25年可能的發展。\
Stephen Cass(以下簡稱S.C.):相比于25年前,現在你已經是一個經驗非常豐富的程序員了。哪件事情是你現在知道,且最想讓年輕時的自己盡早學習到的呢?\
\\Linus Torvalds(以下簡稱L.T.):實際上,我一直在說一個事實:我當時并不知道我所做的工作會引起以后Linux的很多成功。如果我當時就一直知道了我現在所知道的事情,我可能沒有勇氣去編寫我自己的操作系統了:我需要一定的“天真”才會認為自己能完成這項工作。我真的認為,這份“天真”是啟動該項目并取得成功所必須的東西。不理解這個項目最終的形態以及在對其前景沒有很多預期的時候著手去做其實是幫了很大的忙的。\
我不知道該項目最終的結果形態意味著,我會比知道其最終形態抱有更加開放的心態,能夠接受被人的建議或影響。我認為,這種開放的心態使得其他人加入該項目更加容易,也更加有趣。人們不用一定要采用別人的版本,他們可以自己的需要進行修改。我認為這激勵了很多人的參與。
S.C.:有沒有一個在Linux發展早起所做的技術決策是你現在覺得最好當時選擇另外一個方向的呢?\
\\L.T.:有關錯誤的技術決策的事,好處的你總是可以回退。當然,錯誤的決策會讓人覺得泄氣,而且很多時間和努力都白費了。但同時,它最終也不是完全浪費了:肯定有一個原因導致你做了錯誤的決定,而意識到該錯誤就教會了你一些東西。我并不是說,錯誤的決策是一件好事——但我并不會在做決策時特別擔心。我寧可選擇一個在以后證明為錯誤的決策,也不愿意在可能的選擇中徘徊很久。\
在2001年左右,我們在Linux虛擬內存子系統方面就遇到了一個非常有名的壞情況。當時,大家對于采用那種方法起了很大的爭執,而且我們在某些內存配置方面存在很大的問題。系統的主要組件在大家認為的“穩定”時期的時候被清除。人們非常不開心。\
但是,現在回頭去看,虛擬內存子系統最終工作很好。當時,它給人們帶來了非常大的痛苦。如果能夠不再中期的時候再進行逆轉,那就最好了。但是,它并不是災難性的。
S.C.:隨著Linux的快速發展,從一個開發到多人參與的情況的轉變是什么呢?\
\\L.T.:對于我而言,的確存在兩個明顯的轉變。一個發生在大概1992年,我當時開始采用別的開發人員的補丁,而不再自己重寫。另外一個則比較晚,當時我自己親自應用所有的補丁已經非常痛苦,我不得不學會信任其他的維護者。\
第一步要相對容易很多——由于Linux內核編程的大約頭六個月都是我一個人完成的,當人們開始把補丁發給我的時候,我并不習慣采用這些補丁。所以,我會親自查看該補丁,確認編程人員的目的,然后我會重寫編寫代碼——有時,代碼類似;有時,我會采用完全不同的方法進行實現。\
這種情況很快就難以持續了。在我們開始足夠信任別人以致我不再重寫根據其想法編寫自己的代碼后不久,我就開始直接應用他們的補丁。但是,我仍然會經常對補丁進行修改。這么多年過去,我已經非常擅長閱讀并修改補丁,以至于我能夠一直修改直至睡著。而且這種模式在很多年內都工作的非常好。\
但是,正是因為“采用別人的補丁”這種模式多年來工作正常,我一直都非常適應這種模式。對我而言,改變這種模式非常痛苦。在2000年左右,我們在內核發展方面有了很大的進展(此時,Linux開始被商業玩家所注意)。人們開始抱怨我的工作流成為了系統發展的障礙,并提出“Linus不與時俱進”。但是,我們并沒有好的工具來進行源代碼的管理。\
這最終導致了我們將BitKeeper引入近來,作為源代碼的維護工具。盡管人們是在若干年以后因為brouhaha的版權問題而記住BitKeeper的,它的確是完成我們的工作的最合適的工具。而且,它教會了我源碼控制是如何工作的以及我們如何能夠根據一個更加分布式的開發模型進行合作。\
當然,關于分布式源碼管理的東西都是在2005年從Git學習到的。Git已經明顯成為了了源碼控制方面最成功的項目之一,而且它讓更多人學習到了分布式控制的優勢。我們在2000年左右內核方面所經歷的痛苦最終成為了一個很大的教訓,但是這中間的過程不可置疑是痛苦的。
S.C.:還存在像分布式源碼控制這樣的其他項目,使得你想自己去從頭開始完成的嗎?\
\\L.T.:沒有。而且我也真的希望不會有。我的所有大項目都來源于“天哪,沒有人替我完成這種工作!”的時候。當別人能夠替我完成工作時,我肯定會比較開心我可以不必花費時間來自己完成。相比于自己解決問題,我肯定會選擇躺在沙灘的大型遮陽傘下喝喝冰鎮飲料。\
好吧,其實我在撒謊。過一段時間,我肯定會開始厭煩這種生活。我非常開心能夠Linux項目的陪伴——它非常有趣,而且充滿了刺激。但同時,開始新的項目肯定是需要艱辛努力的。
S.C.:你為什么認為Linux絕對不會成為主流桌面電腦的主要操作系統?\
\\L.T.:好吧,我還努力在推進這項工作。我認為,即使Chromebooks只是一個非常有限的桌面環境而非傳統的全Linux工作站模型,它的表現越來越好。\
關于Linux為什么不能成為桌面電腦的主流操作系統,原因有很多方面。其中一個最大的原因就是用戶的惰性。在計算的世界中,桌面電腦是一個非常獨特的存在:它既非常個性化(如果你需要使用計算機進行工作,你基本上每天都會和它進行交互),又非常復雜化(很多其他的計算環境不會在這些方面不會如此復雜)。\
以智能手機為例。這是計算技術的直接應用場景,而且深入人們的日常生活(多虧Android系統,Linux在智能手機上工作的非常好)。桌面電腦由于很多歷史原因要復雜很多。它是一個非常難以進入的市場。與手機更加不同的是,人們有很多自己已經習慣的應用程序和工作流,這就導致很多人非常不愿意切換到別的操作系統。選擇將預裝的操作系統替換為其他操作系統的人數非常低。\
同時,即使整個通用桌面電腦的市場都在一定程度上存在凋零,在很多任務的更加專業化也更加簡單的平臺仍然是一個非常重要的市場。例如,智能手機、平板電腦和Chromebooks就是例子,它們都是非完全的通用環境。
S.C.:Linux的哪些應用場景最讓你覺得吃驚?\
\\L.T.:最近嗎?只從我認為Linux已經基本成為新的硬件或服務建模的默認環境后,就沒有那么多了。如果你有一些古怪的、特殊的設備,或者你正在設計一些新的互聯網框架,這些東西沒有采用Linux作為操作系統會真的讓我覺得吃驚。\
但是,當我將Linux視為工作站或服務器的操作系統時,這些設備的應用領域的確曾讓我非常吃驚。在一些早期的Linux會議中,人們會演示運行Linux的氣泵或冰箱。當時,我感覺非常意外。當第一個TiVo面世的時候,它運行Linux的事實就像“你可以將現場直播回退”一樣有趣。
S.C.:Linux現在面對的最大挑戰是什么?\
\\L.T.:內核現在實際上工作的非常好。人們開始擔心事情可能變得太復雜以至于超出人類理解和修復漏洞的能力。這是一個非常好理解的擔憂。但同時,我們有很多聰明的編程人員參與其中。系統已經發展的如此巨大和復雜以及很多人都依賴Linux的事實使得我們提前開始準備很多事情。讓系統變得功能豐富并做出很大的、能接受的改變是非常覺有挑戰性的。因此,我不會將其稱為令人感覺快樂的工作。但是,我認為,內核的發展目前十分正常。很多其他擁有這些資源的的開源項目可能已經都失敗了。\
這就意味著,我們在內核方面的一個持續性的挑戰就是硬件種類很多。我們支持很多不同的硬件——基本上肯定比其他任何操作系統都要多。但是,基本上每天都會有新的硬件面世。尤其是在嵌入式領域,硬件平臺的開發周期通常要短很多(在中國,你可以在1-2月內創建一個新的手機平臺)。在這種情況下,硬件和系統的整合就要艱難很多。好消息是很多硬件廠商也都在努力。過去,這些都不可能。
S.C.:你現在感興趣的技術趨勢是什么?有什么讓你氣餒的嗎?\
\\L.T.:我一直對新的硬件,尤其是CPU,非常感興趣。這就是我為什么一開始研究自己的操作系統,并看到新的平臺后非常開心。當然,新的平臺很多時候都是現有硬件的簡單修改版本(而且,我也相信這就是技術發展應該走的路線)。但是,這就是我努力去追蹤的東西。\
從更高的層次來看,但并非局限于我所參與的領域,觀察AI最終如何發生的是非常有趣的。以前,AI的技術都停留在20年前。但它也一直超前20年。而且,我對于人們過去做的基于規則的模型不感興趣。\
現在,神經網絡終于開啟了人工智能的新篇章。我發現,神經網絡非常有趣。這不是一個我正在參與或將來會參與的領域,但它的確讓人覺得非常有趣。與瘋狂的LISP和Prolog語言方法不同,我們所知的神經網絡都是從自然界而來。而且,我覺得,AI或許會像很多人所想的那樣,最終會出現。一點也不覺得意外!
S.C.:你認為Linux在其50年慶的時候仍然會處于活躍開發階段嗎?你認為Linux系統在25年后應該怎樣呢?\
\\L.T.:我不是一個非常有遠見的人。我是一個非常枯燥的宅男工程師,而且我一直努力將精力放在具體事務上。我會讓其他人在預測5年、10或2年后Linux的未來——我認為,只要我們盡力做好每天的工作,未來也一定會非常美好。\
如果25年后的社會經過了大的變革或變得與現在非常不同,肯定會非常有趣。但是,有很多基本的問題,無論是在Linux之前、真正的操作系統剛剛出現的19世紀60年代,還是在25年后的未來,肯定和現在一樣。我懷疑,我們在過去50年已經看到了很多發生在計算中的出乎意料的變化將來不會再發生。和軟件工程師一樣,硬件工程師已經學會了什么可以工作、什么不可以工作。\
當然,神經網絡等將改變整個世界,但你不會來對其進行“編程”。人工智能可以學習。他們是模糊的。我可以非常肯定的保證,他們不會替換傳統的計算模型。人們希望比機器聰明,但又希望機器能夠按照要求完成應該完成的工作。因此,我們老的計算模式不會消失,它將會得到增強。
對原文感興趣的讀者請點擊繼續閱讀
\\\感謝魏星對本文的審校。
\給InfoQ中文站投稿或者參與內容翻譯工作,請郵件至editors@cn.infoq.com。也歡迎大家通過新浪微博(@InfoQ,@丁曉昀),微信(微信號:InfoQChina)關注我們。