沒有 Linus,Linux 的未來是什麼樣子?
這次採訪是《Linux For You》雜誌在2007年進行的,現在我們發表在這裡是為了存檔的目的。
Q:對於 Linux 核心,未來的計劃/道路/提升是怎樣的?
Linus:我從來沒有太多的預見性 — 與其從巨集大的計劃上看未來,我傾向於從一個相對短的時間框架,比如“幾個月之後的事情”。我是一個忠實的‘細節成敗論’的信仰者,如果你抓住了細節,再大的問題也會大事化小,小事化無。
所以,對於五年後核心會是什麼樣,我真的沒有任何遠見 — 僅僅是希望我們能夠持續專注於Linux的發展。實際上,對於我個人來說,我最擔心的事情之一甚至不是技術問題,而是確保這個‘過程’正常,這樣人們才可以相互協作好。
Q:你怎麼看 Linux 和 Solaris 之間的關係在未來的發展?它會如何使使用者受益?
Linus:我並沒有看到太多交叉的地方,除了我認為 Solaris 會使用更多的 Linux 使用者空間工具(對我自己來說並沒有太多關注這個,因為我真的只關心核心)。Linux 桌面比起傳統 Solaris 桌面好多了,而且我希望 Solaris 移植越來越多的 Linux 的東西,朝著一個更加類 Linux 的模式前進。(LCTT 譯註:時至今日,我們還需要討論 Solaris 嗎?/cry ,但是當時,整個開源社群確實期望接受 Solaris 一些遺產。)
從純核心方面講,許可證的存在意味著沒有太多的合作空間,但是如果這種情況發生改變將會變得很有趣。Sun 已經聲稱將在 GPL(v2 或 v3)下授權 Solaris,如果這種許可證的差異消失,那麼會導致一些有趣的技術出現。但對此,我持觀望態度。
Q:現在 GPL v3 已經完成併發布了,你是否預見有什麼情況會鼓勵你開始移植核心到 Solaris 上去?或者,從你的角度看,它是否很糟糕以至於你從來沒考慮過它?
Linus:我覺得相比於早先的草稿,v3 有了很多提高,並且我也不認為它是一個糟糕的許可證。我只是認為它沒有 GPLv2 一樣‘偉大’。
所以,如果沒有 GPLv2,我覺得自己將會使用 GPLv3。不過,既然我已經有了一個更好的選擇,我為什麼還要考慮它呢?
這就是說,我始終秉承實用主義精神,並且我認為“ GPLv3 不像 GPLv2 一樣好”這件事並不是一個‘非黑即白’的問題。這就像是一個天平,如果 GPLv3 有了其他的優點作為砝碼,很有可能那些優點會讓我對 GPLv3 更偏愛一些。
恕我直言,我到現在還並沒有看到任何優點,但是如果 Solaris 真的在 GPLv3 下發布,可能避免不必要的許可證不相容性這一條就分量足夠了,足以值得我們去嘗試將 Linux 的核心重新在 GPLv3 許可證下發布。不過,請不要誤解,我認為這是不大可能的。但是我確實想澄清我本質上並不是一個許可證偏執者。我認為 GPLv2 是毫無疑問的好許可證,但是許可證並不是一切。(LCTT 譯註:事實上,Solaris/OpenSolaris 最終也沒采用 GPL 許可協議釋出,而 2010年之後,已經沒有什麼動靜了。而 Linux 核心最終也沒有更換到 GPLv3 上。)
總的來說,我使用很多其他許可證下的程式。我可能沒有把任何一個我自己做的專案放在 BSD(或 X11—MIT)許可證下,但是我認為它是一個偉大的許可證,對於其他專案來說,它可能是最佳的選擇。
Q:目前有沒有任何你想特別提出作為 Linux 核心的關鍵貢獻者的印度人?
(LCTT 譯註:本篇訪談中提到多次印度,是因為訪談者是印度人。)
Linus:我不得不承認,我並沒有與來自印度的任何人直接合作過,儘管我已經非常有意識地努力建立一個規模龐大的核心開發團隊,這樣我不用總是獨自工作。
我相信大多數人的社交基本上是受限制的,只對很少的人十分了解(比如你最親近的家人和朋友),我也努力構造這樣一個開發模型來改變這種狀況:通過一個‘開發者網路’,人們可以在此互動,可能是與一批你信任的人,而且那些人反過來與他們信任的一群人互動。
所以,我偶然會與上百個發給我一兩個不確定的補丁的開發者聯絡。我試著去建立一些由我熟知的人組成的小團體,我認為那就是人們工作的方式,當然也是我喜歡工作的方式。
同時,坦白地說,我甚至不知道許多與我一起工作的人生活在哪裡。地理位置成了十分次要的東西。所以我很確信與我工作最緊密的前10—15個人中,沒有印度的,可能這話稍後傳到公眾耳裡,然後被指出確實有一些人來自那裡!
Q:因為 Linux 的核心開發對你依賴如此嚴重,你如何計劃組織或重組,讓它在沒有你的情況下繼續發展,假設你決定花更多的時間在你自己的生活和家庭上面的話?
Linus:現在 Linux 比我重要得多,為了今天這一步我已經工作了很長時間。是的,我仍然十分密切地參與其中,而且我對其有著想當大的日常影響,我最終會是這樣一個人——在某種 程度上,扮演著許多核心開發活躍者的中心;但是,我不會說 Linux “嚴重依賴”於我。
所以,如果我得了心臟病並且明天就死了(很高興沒這種可能:我顯然在任何方面都很健康),人們肯定會注意到,但是有成千上萬的人為核心工作,並且不止一兩個人能夠毫無困難地接替我的角色。
Q:印度是軟體工程師的主要產地之一,但是我們沒有在 Linux 領域做太多貢獻。你覺得為什麼印度人沒有積極參與Linux?如果我們鼓勵印度人蔘與併為 Linux 做更大的貢獻,你覺得如何?你會樂意用你個人作為榜樣激勵印度工程師嗎?
Linus:對我來說,這確實是一個不好回答的問題。參與開源取決於兩方面的基礎條件:資訊流和文化(用你的話說是網際網路和教育),我甚至不知道這其中哪個是最大的障礙。
在很多方面,至少在那些印度講英語文化的地方,參與 Linux 和其他開源專案是相對容易的,如果僅僅是由於語言門檻的話。這當然比起亞洲的許多地方,甚至歐洲的一些地方要容易些。
當然,這只是一些人,並不等同於印度的大部分群體,而且我自己關於印度的情況也知道不多,甚至沒法不太負責的猜測最好的途徑是什麼。我猜一個熱情的本地使用者社群會是最好的途徑,而且我猜測你們已經擁有這樣的社群了。
至於我的‘偶像’形象,我自己不以為然。我不是一個偉大的公眾演講者,而且我最近些年已經避免出遊,因為被看做符號化的‘偶像’讓我很不自在。我就是一個工程師而已,而且我僅僅是喜歡我做的事情,並與社會上其他人一起工作。
Q:什麼樣的理由會讓你考慮去訪問印度?
Linus:如前一個回答中提到,我十分討厭公開演講,所以我才想避免開會等等這些事。我更願意某天去印度度個假,但是如果我這樣做,我可能悄悄地 幹 — 出行之前不告訴任何人,僅僅作為一個遊客去遊覽印度!(LCTT 譯註:所以 Linus 不來中國的道理是同樣的,除非在中國召開一次世界性的 LinuxCon。)
Q:最近你好像在抨擊 Subversion 與 CVS,質問他們的架構基礎。現在你已經從 Subversion 和 CVS 社群那裡得到迴應,你是否改變了看法,還是說並沒有被說服?
Linus:因為我發現這個爭論很有趣,所以我想做一個強硬的宣告。換句話說,我確實‘喜歡’爭論。並不是不經思考的,但是我確實想要讓爭論更熱烈些,而不僅僅是完全的柏拉圖式的。
做出強硬的爭論有時會引來一個非常合理的反駁,然後我會很高興地說:“噢,好吧,你是對的。”
但是話說回來,對 SVN/CVS 並不會發生這種情況。我懷疑很多人並不是真的很喜歡 CVS,所以我真的不覺得會有誰堅持認為 CVS 就是一切,而不是一個老舊系統。要是我知道之前就有人這樣認為的話,我就不會那麼不禮貌地反對 SVN(嘿,這麼說沒錯 — 我真的不是一個非常禮貌的傢伙!),我不相信任何人會認為 SVN 是‘好的’。
我認為,SVN 就是一個‘還好’的經典案例。人們過去經常使用 SVN,並且它也‘還好’地廣泛使用,但是它的‘還好’就如 DOS 與 Windows 的‘還好’一樣。不是什麼偉大的技術,只是普遍適用而已,同時它對人們來說執行良好,看著十分熟悉。但是很少有人以此為傲,或者對其感到興奮。
Git,從另外方面講,其身後有一些‘UNIX 哲學’,這和 UNIX 無關。實質上,就像原始的 UNIX,在它身後有一個基本理念。對 UNIX 來說,最底層的哲學就是,“所有東西只是一個檔案”。對 Git 來說,“則是每個東西只是內容定址資料庫中的一個物件”。
Q:現在如此多的發行是好事還是壞事?選擇是很有意思的,但是選擇太多了就是干擾。相較於這麼多的人每天花費數小時去構建成百上千的發行版,如果人們可以一起來支援少數的發行版,這樣在企業級市場去挑戰微軟是不是更容易些呢?對此你怎麼看?
Linus:我認為多個發行版是開源不可迴避的部分。它會造成困惑嗎?當然。它會變得低效率嗎?是的。但是我喜歡拿它與政治比較:‘民主’也有那些 令人困惑的選擇,往往沒有任何一個選擇是你‘真正’想要的。而且有時候,如果你不需要操心選舉、不同黨派和聯合等等方面的困惑的話,你可能會感覺事情更加 容易一些,更有效率一些。
但是最後我想說,選擇可能會導致低效率,但是它也讓每個人至少保留了‘所謂的’誠信。我們可能都希望我們的政治家更誠信,我們也希望不同的發行版可以讓我們有一天有其他的選擇,而如果沒有選擇的話,事情可能會更糟。
Q:為什麼你覺得 CFS 比 SD 更好?
Linus:一部分原因是我與 Ingo [Molnar] 工作過很長一段時間,也就是說,我瞭解他,並且知道他會對發生的任何問題非常負責。那種品質是非常重要的。
但是一部分原因就簡單的與使用者有關,大多數人實際上表示 CFS 比 SD 好。包括許多 3D 遊戲方面(這是人們聲稱 SD 最強的一點)。
儘管如此,我認為並不是任何一段程式碼都十分‘完美’。最好的情況是,想成為 SD 支持者的人會努力提高 SD,從而通過其它方式取得了平衡 — 而我們會保持兩個陣營都嘗試有趣的事情,因為內部的競爭會刺激他們。
Q:在 Google 的一次關於 Git 的訪談中,有人問你如何將當前集中存放的超大程式碼庫遷移到 git 上,而不用將開發工作停止六個月。你對此的回答是什麼?
Linus:啊哈,那個問題我在現場沒有聽清楚(在錄音裡,問題會聽得更清楚些),當我回頭去聽錄製的音訊,注意到了我沒有回答他的問題,但是我覺得這問題他問過。
無論如何,我們確實有很多匯入的工具,所以你實際上可以僅僅是將一個大的專案從任何其他的早期的 SCM (原始碼控制系統)匯入到 git 裡,但問題顯然不是經常以匯入動作本身結束,而是需要‘習慣’這種新模式!
坦白來說,我認為關於如何‘習慣它’沒有任何其他答案,而只能是去開始使用和嘗試它。顯然,你不會冒險率先匯入你現有的最大、最重要的專案,那確實會導致工作停頓下來,然後使得每個人都很不高興。
所以沒有任何理智健全的人會擁護在一夜之間將一切移到 git 上去,並強迫人們改變他們的環境。是的,你需要從公司裡的小專案開始,可能是一些由一個小組主要控制和維護的專案,然後開始轉移其到 git。這是你能讓人們習慣這種模式的方式,你應該以一個核心的組開始,他們知道 git 如何工作,如何在公司裡面使用它。
接著,你就會鋪展開來。並不需要一次到位。你會匯入越來越多的專案 — 甚至是在你公司裡採用‘單一大型倉庫’模式;那個倉庫基本上是作為許多模組的集合,因為讓每個人去檢查每件事不是一個可執行的工作模型(除非這個‘每件事’並不非常大)。
所以,你基本上只會一次轉移一個模組,直到你發現使用 git 是如此酸爽,這時你可以移植餘下的所有(或者‘餘下’的太舊了,沒有人用了)。
git 最讚的一個功能是,它實際上可以同很多其他 SCM 相處很好。很多 git 使用者使用它的時候,與他們一起工作的人並沒有發現,因為他們看到 git 的結果,會聯想到一些傳統的 SCM 上去。
Q:Linux 用了你在 Transmeta(全美達)上實現備用指令集的經驗嗎?[Transmeta Crusoe 晶片看起來像一個非常輕量級的 CPU — 記得有一臺 Burroughs B1000 直譯器,它實際上實現了多個虛擬機器。有的用於系統軟體,有的用於 Cobol,還有的用於 Fortran;如果沒錯的話,那麼人們可以在晶片上實現 Burroughs 6/7000 或者 HP3000 類似的堆疊架構,或適用於 JVM 的指令集,等等。(LCTT 譯註:Linus 於 1997-2003 期間就職於全美達)]
Linus:我們確實有一些備選的結構集合,不過我不打算談論太多這個,我可以說的是我們已經做了一個混合結構集合的公開演示。我們有一個技術展示,在那裡你同時可以跑 x86 指令和 Java 位元組碼(實際上,它是一個輕量的擴充套件 pico—java,iirc)。
我想我們展示的這個應用會在 Linux 上執行 DOOM,這裡 Linux 的部分是一個完全標準 x86 發行版。但是 DOOM 的二進位制程式是一個特定的編譯版本,它實際上編譯為 pico-java 程式碼。而 CPU 最終以相同的方式來執行它們——從 JIT 到原生 VLIW 指令集。
(選擇 DOOM 的原因僅僅是其原始碼可用,並且遊戲的核心部分非常小,足以很容易拿它來做一個驗證 — 而且它也顯然看起來十分有趣。)
有更多的事情是在內部運作,但是我不能談論他們。而且實際上,就我個人而言,對 Java 不怎麼感冒。
Q:386BSD 衍生了 NetBSD,FreeBSD 和 OpenBSD,在 Linux 出現之前已經發展不錯了,但是 Linux 傳播比 386BSD 及其衍生者更為廣泛。這在多大程度上左右你對許可證的選擇,這個選擇的發展過程是怎樣的?你不認為比起 GPLv2 來,是 GPLv3 創造了發展空間,迄今為止,讓 Linux 比 BSD 變得更好?
Linus:我認為這不僅是一個許可證問題,也是一個社群及人格問題。BSD 的許可證總是鼓勵分叉,但是這也意味著,如果某些人取得了成功並做了商業性的分叉,他並不需要將他的修改返回來。因此,哪怕實際上這種事情沒有(而實際 上,這種事情的確發生了,比如 BSDi),人們也難以建立彼此信任。
相比之下,GPLv2 也鼓勵分叉,但是它不僅僅鼓勵分叉出去,它也鼓勵(並‘要求’)能夠融合回來。所以,我們現在達到了新的層次的信任:你‘知道’每個人都被許可證所約束,所以每個人都不會佔你便宜。
所以,在我看來,GPLv2 作為許可證來說,它允許人們在要求總是回饋貢獻的前提下,在另外的方面取得了最大可能的自由。沒有人能阻止你對原始碼的改進。
那麼,BSD 許可證是更‘自由’的嗎?是的,毫無疑問。但是我不會在我在意的任何專案裡面使用 BSD 許可證,因為我不僅僅想要自由,我也想要信任,可以讓我總是能使用其他人為我的專案所寫的程式碼。
所以對於我來說,GPLv2 最終在‘儘可能自由’上取得了完美的平衡,這樣,我們做到了讓每個人都能信任,他們總是可以取得原始碼並使用它。
這就是為什麼我認為 GPLv3 最終並沒多大意思,它不再是那種‘返回原始碼’的信任;它退化成了‘我寫了這些程式碼,所以我能控制你如何使用它’。
換言之,我只是覺得 GPLv3 太狹隘和自私了。我認為 GPLv2 在‘自由’和‘信任’之間取得偉大的平衡。它不如 BSD 許可證自由,但是它讓你安心回饋,而且它符合我認為的‘以德報德’:我給你原始碼,你也回饋我原始碼。
而 GPLv3 試著控制原始碼的‘使用’。現在它就是“我給你我的原始碼,如果你使用它的話,你就準備好讓我對你的裝置動手動腳吧”,看見了沒?在我看來,不但小氣,而且小心眼。
Q:-rt 程式碼樹的功能正在緩慢而穩定地逐漸整合到主線程式碼中。你對將剩餘的 -rt 樹合併到主線程式碼的看法是什麼?(我說的不是 CFS)
Linus: 我不能保證來自 -rt 的一切‘都’會被合併進入標準核心(有一些部分肯定不適合常規的核心),不過是的,這些年來我們實際上將它的大部分都整合進去了,剩下的部分最終以後也會合並進去。
我提倡高效工作,但是我同時也很保守。我退回了一些激進的合併請求,只是因為我需要確保它們對我們所有人都有意義,不僅僅是用於極端情況下的實時環 境,而且也對並不需要這種環境的‘普通’使用者有用。這解釋了為什麼這個過程相當緩慢卻穩定不斷地合併程式碼,因為它需要足夠穩定和有意義。
順便說一句,這不僅僅是針對 -rt ,它也出現在許多開發中。-rt 出現這種情況是因為它是更‘直接’的核心專案,而且也是因為它的一個主要開發者直接參與到了常規核心開發。通常其它功能的遷移(安全、虛擬核心變化、虛擬 化,等等)也遵循類似的方式:他們針對特定的環境進行開發,然後這些功能片段緩慢而穩步地合併到標準核心。
Q:我對 Linux 核心所支援的檔案系統發展很感興趣。你覺得 Reiser4、XFS4、ZFS 以及 Oracle 的新專案哪個更有前途?這些天 ZFS 有不少新聞,Reiser4 也釋出了很不錯的效能基準測試,XFS4 正緊隨其後,而 Oracle 釋出的那個也有很多像 Sun 的 ZFS 一樣的特性。我們將走向何方呢?以你的觀點來看,哪個檔案系統更有前途?
Linus: 實際上,就在昨天我們發現了一個 git 的效能問題,有一個使用者發現他採用 ZFS 要比 UFS 慢一個數量級(不是在 Linux 下,git 已經得到了許多關注,甚至是來自核心開發團隊之外)。所以,我認為許多‘新檔案系統’的擁護者部分原因是因為他們瞭解到舊檔案系統的不足,然後(有點不切 實際地)期望一個‘嶄新的、改進的’檔案系統能使一切都完美。
最後,這是一個永無止境的領域,看看誰是最終的贏家——也許並不需要(看起來不需要)一個贏家。幾乎總是這樣,對檔案系統的選擇最終取決於負載和環境。
相比你提到的這些檔案系統,我個人對基於快閃記憶體的硬碟很快就可以供甚至是‘普通’使用者使用的這個事實更感到興奮。當然,它們仍然很昂貴(而且相當的 小),但是基於快閃記憶體的儲存和傳統硬碟的效能完全不可同日而語,我懷疑它們最終將對檔案系統的設計有巨大的影響。而現在,多數檔案系統的設計都是在考慮如何 處理硬碟延遲。
Q:作業系統變得越來越不重要。你說過好幾次使用者根本不應該‘看見’作業系統。應用更為重要。基於瀏覽器的應用,如 Google 的辦公軟體影響力越來越大。你認為作業系統將走向何方?
Linus:我並不真的認可‘瀏覽器 OS’,因為我認為人們總是需要在本地做一些事情。也許是因為安全,或者僅僅是因為隱私的原因。而且即便當到處可以接入時,它也並不是‘無處不在’。
所以我認為,整個‘Web OS’這件事有一部分是真實的,但是另外一部分人們也許忘記了作業系統已經存在了幾十年,它已經相當穩定,而且它的發展是有目共睹的。人們真的不應該期望 作業系統有魔法般的變化,現在已經不是作業系統剛剛起步的六十年代,甚至連硬體也和過去完全不同了!
所以,別指望一場革命。我認為作業系統將在很大程度上繼續它們所擅長的,當然,我們也會進步,但是我不認為會從根本上改變。也許會發生鉅變的是介面和作業系統頂層的那些東西(當然,作業系統下面的硬體也會繼續進步),這顯然才是人們所關心的。
至於作業系統?它顯然是應該儘可能隱藏起來的東西。你真的不應該在意它,除非你特別想知道在機器裡面真正在發生什麼。
Q:最近我聽說你正在使用一臺 PPC G4/5 作為個人計算機,你使用它來做什麼?為什麼呢?
Linus:我最終放棄了那臺 PowerPC,因為沒有人能在這臺工作站上做到更多,特別是,自從 x86-64 開始變得越來越強大了。所以這些天,我在用一臺標準的 PC,裡面是一個普通的 Core 2 Duo CPU。
在其它架構下執行是非常有趣的(alpha 作為我的主要架構運行了好幾年,所以這並不是第一次),但是這種 CPU 得當成商品買得到才行。我認為,唯一能取代 x86 架構的,也許未來十年並不需要使用 x86 作為主要架構,我認為或許是 ARM,這得益於移動裝置市場的發展。
Q:Linux 對你意味著什麼?一種業餘愛好、哲學、人生意義、工作、最好的作業系統,還是什麼?
Linus:它是所有的這一切。它是愛好,而且是具有深刻意義的愛好。最好的愛好是你‘真的’非常在意它。這些日子裡,它顯然也是我的工作,我非常高興工作和興趣能合二為一。
我不瞭解所謂的‘哲學’,我並不真的是因為深層次的道德或哲學的原因才做的 Linux,但是可以肯定的是,對開源的深層思考是我非常重視的。所以我並不是因為什麼明確的理由做 Linux,也不能說是它在激勵我,但是我的確在思考開源是如何工作。
Q:微軟的‘黑衣人’有沒有和你交談過?
Linus:我從來沒有真正和微軟交談過,沒有。我偶爾會和一些微軟的人出現再同一個會議上(我比以前參加的會議更多了),但是我從來和他們沒有任何關係。我認為彼此都很謹慎吧。
原文出處:https://linux.cn/article-5769-1.html