Linux 內核維護者難尋:“我不想被Linus 噴”
近日,Linus Torvalds與VMware首席開源官Dirk Hohndel關於Linux內核維護未來的討論引起了技術圈的關注。Linus認為,在他們這批Linux內核維護者老去之後,很難再找到新的繼任者,因為在很多年輕開發者看來“ Linux內核項目並不那麼有趣”。
內核開發令年輕人感到無趣
在與Dirk 的談話中,Linus 認為Linux 內核開發對大多數人來說是無聊的。“ 我說過內核很無聊,但我的意思是從某種意義上說,許多新技術應該比內核開發更有趣。但是對我和其他內核開發者來說,沒有什麼能夠比與底層硬件交互的內核開發更有趣的了,因為這能真正控制所有將在計算機中發生的事情。所以內核對我來說並不是很無聊,但是我想大多數人應該會認為它們很無聊。”
該談話很快就轉到了一個令人不安的問題上:既然現在對於內核開發感興趣的人越來越少,那麼當Linux內核在當前一代的維護者老去之後,社區的未來該怎麼辦?
目前,Linux 內核維護者主要還是即將年滿51 歲的Linus 和一些50 或60 後的老程序員。“ 在某個時候,Linux 社區需要開始考慮交接變革,屆時我們該怎麼辦?” Dirk 問。
對此Linus 本人倒是頗為樂觀,他認為目前整個Linux 內核社區其實還不算老。“很多新人還不到50 歲,他們通常是從事真正工作(給項目貢獻代碼)的人。而那些已經在社區裡近三十年的老人,比如我和一些早期的項目參與者,我們的主要精力已經放在了項目的維護和管理上。”
維護者難尋
“我們確實有不少編寫代碼的人,但缺少維護者。” 在Linus 看來,Linux 內核項目未來交接的難點在於尋找一個自己的繼任者。“ 事實證明,我們現在很難找到合格的新維護者。因為成為內核維護者,你必須一直存在,這意味著你每天都要在電腦前閱讀來自全球各地的電子郵件,對郵件做出反應,就像我這30 年來做的一樣,從不間斷。我們現在很難找到真正看待他人代碼,並在上游嚴格把關每一個提交,判斷它們能否合併到我們的主幹代碼上的人。這是我們面臨的最主要的問題。” Linus 說。
還有一個問題是維護者必須花費很長的時間才能獲得整個社區的信任。Linus 說:“這不僅是其他維護者的信任,也是所有代碼貢獻者的信任……這需要時間。30 年前,當我們剛開始做這個項目時,我們其實並不需要什麼信任。只要你出現在社區裡,就能參與進來,我們一起把這個東西做好。但現在有很多人依賴著Linux 內核,你不能像我們曾經那樣做一些瘋狂的事情。”
“ 我不想被Linus 噴”
作為一個在世界範圍內舉足輕重的開源項目,Linux內核項目正面臨著開發者老齡化、維護者難尋的局面。而針對這次討論,國外的一些開發者也在論壇上表達了自己的看法。很多人認為,造成這一局面在一定程度上歸咎於Linus與外界溝通的態度。
“維護者難尋?提這問題是認真的嗎,我想不會有人願意收到這樣的答复—— ‘這也算是一個BUG?你已經成為內核維護者多長時間了?還沒有學會內核維護的第一條規則?我再也不想收到這種明顯的垃圾,像白痴一樣的提交…… ‘ —— 當時看到這樣的回復真的讓我很震驚。” 一位網友引用了此前Linus 在郵件列表中公開的一段回复,指出Linus 在人際溝通中的惡劣態度是很多人對這項工作望而卻步的關鍵因素。
跟帖的網友認為,在一段正常的工作關係中,上級領導對員工的支持往往比責備更有利於項目的進展。“我承認Linus 至今為止所取得的一切成就,但如果有人按照上述的溝通方式與我的團隊溝通,那我一定會糾正這個人的態度再開始工作。儘管Linus 有著比絕大多數老闆都聰明的大腦,但他的態度和那些狗屎老闆一樣的爛。” 更何況Linus 還不是任何人的領導,沒有人願意被一個從未見過面的人劈頭蓋臉地公開數落。
也有理性的開發者表示,儘管Linus 的嘴巴“很笨拙”,但不可否認要做好這項工作真的很難。這名開發者認為Linux 內核項目目前存在的問題是學習門檻太高,缺乏曲線平滑的學習資料。“ 雖然我同意大多數人會因為害怕像狗屎一樣被Linus 拒之門外,但這對於我們中一些臉皮比較厚的人來說,這其實倒也無所謂。我自己作為一個年齡比較大的技術人員,我可以理解Linus 的憤怒來自何處,他需要保護成千上萬的Linux 用戶;也能理解為什麼年輕的技術人員可能將其視為純粹的侵略性。我喜歡能夠在內核級別進行開發,但是相關的學習資源卻是稀缺且通常難以理解的。我已經用各種不同的語言編寫了20 多年的代碼,但現在我仍然不知道Linux 內核開發該從哪裡開始才能對項目做出有用的貢獻。”
僅有文檔還不夠
建立由淺及深、完善的學習文檔和示例是一個項目吸引新人才加入所必需的,Linux內核項目也是如此。但是以Linux內核項目如今的體量,要做出一份完美的文檔將是一個非常艱難的工作。一位已經退休的開發者認為,如今的Linux內核項目的上手難度和幾十年前相比已經呈指數倍增長。“當我退休時,我為我的項目留下了詳細的文檔和示例偽代碼,據我估計,這些代碼,文檔和示例偽代碼將使開發團隊足足工作8個月才能完全接手項目。顯然,Linux內核的文檔和示例代碼帶來的工作量將遠超這一數字。而我剛開始編程那會,在佔用2kW以下功率的16位微處理器上處理機器代碼程序,我可以理解最少的文檔並了解整個過程。但現在,考慮在程序中使用C語言進行極其複雜的處理並帶有各種引用和與其他事物的關係協同工作,我甚至完全不知道該從哪裡開始思考。對一個新人開發者來說,要完全掌握Linux內核的全貌是一個巨大的、艱難的過程。”
也就是說,Linux內核項目要吸引更多年輕開發者的加入,所需要解決的問題已經不僅僅是文檔,管理一切事務的組織機構是必須的。“問題必須是Linus是否創建了一個自我維持和管理的成熟體係來將整個事情整合在一起。”由淺及深的教程資料,年輕人才的招募等等,這些工作將需要社區裡具有出色的組織和人際交往能力的人才能實現,而不是光靠代碼可以解決的問題。
很難想像,當Linus 這批程序員老去時,Linux 將走向何方?