Linux 核心開發報告 2017 版

適兕發表於2017-11-01

正如文中所說,Linux 核心無論從那個角度來看都是值得研究的物件,社會、人文、協作、工程、管理、技術本身等等。如此看來,這是人類非常了不起的創造!值得上帝為之驚歎!令所人讚揚、尊敬的工程。

摘要

全球公有云上執行的負載有 90% 是 Linux 作業系統,在嵌入式市場的佔有率是 62%,而在超算的市場佔有率更是達到了 99%,還有,它執行在世界上超過 82% 的智慧手機中,也是所有公有云廠商的主要支撐伺服器(90%)。

這一組百分比的資料能夠激發你什麼樣的想象?這麼形容,你覺得是否合理:“幾乎整個(移動)網際網路以及支撐它的雲端計算和大資料,都是由 Linux 來負責掌控的。” 這樣一個神奇的系統的開發方式是什麼樣的?已經經過了 26 年的發展,它是如何保持活力的?龐大的社群又是如何協作的?我們不妨來解讀一下Linux基金會剛剛釋出的Linux核心開發報告2017PDF 在此下載)。

Linux 核心開發報告 2017 版

我很榮幸能夠在 Linux 社群和一些具有高水準的人打交道。 –Julia Lawall(來自 Inria 的高階研究員如是說)

Linux 專案的現狀

本次的報告,所統計的資料是從核心的 4.7 算起,到 4.13 止,先看看Linux都增加了那些新的特性吧:

  • 透明 Huge 頁現在可以支援基於檔案的頁,以及可程式設計的資料的頁,可以更加高效的利用記憶體。
  • 核心的文件系統切換到了新的工具鏈,即 Sphinx:為了更好的組織和加強核心的文件。
  • 核心的核心計時機制,被替代為新的更加高效。
  • 網路棧中的“易捷版資料路徑”機制的實現,可以處理使用者 BPF 程式負載的高速網路包。
  • BBR 擁塞控制演算法改善了多種設定中的網路效能。
  • ……

以及更多的驅動、更安全、更多的測試。

當你的程式碼是執行在數十億臺裝置上的時候,感覺真的不一般。 ——Jens Axboe(Software Engineer, Facebook)

都有誰為 Linux 做的改變?

自從進入 Git 時代(即 2005 年 2.6.11 釋出之後),共有 15,637 名開發者為 Linux 核心的開發做了貢獻,這些開發者至少是來自 1,513 家公司。

儘管那些獨立的開發者看起來是很多,但其實是少部分人做了大量的工作,在幾乎所有的開發週期中,大約有 1/3 的開發者,每人僅貢獻一個補丁。自 2.6.11 版本之後,貢獻最多的前十位工程師,他們加起來的貢獻有 45,338 次改變,大概佔了總數的 7.1%,前 30 名加起來的貢獻是 16%。他們的名字是:

Linux 核心開發報告 2017 版

Linux 仍然是存在這個人英雄主義色彩的,是的如此龐大的系統,必須是群體智慧的產物。但是精英們、英雄們付出了他們智慧與努力,理應得到榮耀。

我一直以來都喜歡底層的軟體打交道,因為他們靠近硬體的邊界。 ——Kees Cook(Software Engineer, 來自Google)

都有那些公司為 Linux 做了贊助?

沒錯,你能想到的 IT 公司基本都是 Linux 的貢獻者,他們僱傭開發者專門來對核心進行開發,有晶片廠商如 Intel、AMD、ARM、TI 等,也有網際網路巨頭 Google、Facebook,是誰並不重要。

正如有的評論家稱,無論哪家公司,若是去說開源對於他們的發展相比於他們的貢獻都是不成比例的,無論怎麼反饋都是他們有利。商業公司考慮的因素更多,但是不能失去核心,核心的開發無論其處於何種目的。都是應該的。拿 Intel 來說吧,即使 Intel 在過去的一年貢獻率達到 13%,但相比於它的營收,這點都是微不足道的。

開源固然感激商業公司的贊助,但是反過來,商業公司更應該感激開源能夠讓他們有機會贊助,並賺取利潤。

新的開發者

像很多的社群一樣,或者更大範圍的道理,很多人是淺嘗輒止,從 kernel 的歷史來看,在每個版本都會有新人提交那麼一個或幾個 patch,然後絕大多數人都離開了,只有少部分人留下來。目前社群的貢獻者人數是:4,319,而其中過去一年中的新人有:1,670 位。另外,新人們所提交的 patch 均是裝置驅動,按照數量排名依次是:網路驅動、文件、顯示卡驅動、USB 驅動、和聲音子系統。

這樣我們可以有一個直觀的推論,那就是能上手核心開發的,並沒有傳說中的那麼難,更難的在於堅持下來一直去做。當然,這一點,有商業公司的支撐會好很多。

誰在做著 Review 程式碼的工作?

到現在你是不是還沒有看到 Linus Torvalds 的名字?

Linux 作為最大的開源專案之一,不是隨便的無章法的,每一個補丁並非是直接就能進入主幹的,而是要經過很多個子系統的。而每個子系統都是有對應的維護人員的,這些維護人員要稽核人們的提交。每個補丁經過這些維護者稽核之後,都會加上 “Signed-off-by”,這意味著這個補丁可以進入核心。分析核心程式碼時,關注 “Signed-off-by”,你就能明白都有誰是核心的守護者。

沒錯,Linus Torvalds 現在就是其中之一,由他本人 “Signed-off-by” 的補丁在過去的一年中有 207,佔總共的 0.3%。

Linux 在 26 年以來所學到的

很少有開發專案能夠擁有這麼久的歷史,大多數的專案在經歷瞭如此長的歷史之後,都會有“穩定狀態”這樣感覺,會有日薄西山的感覺。但是 Linux 核心沒有這樣,26 年了,它依然保持活力和旺盛的生命力。是的,有很多的學術研究 Linux 社群的成功之處,但是在我們徹底的將它搞明白之前,我們先總結下我們的教訓:

  1. 短的開發週期真的很重要。
  2. 流程的可擴充套件性需要一個分散式的、層級的開發模式
  3. 工具很關鍵
  4. 強烈的共識導向模式非常重要。要作為一般規則。
  5. 核心還有一個相關的因素是“無迴歸”規則。
  6. 企業的參與在過程中蠻重要。
  7. 專案內部不應有邊界。

以上這 7 點,對於任何的大型開源都有重要的參考價值。26 年,核心用實際行動告訴我們,持續、合作的努力能帶來巨大的共享資源,這本身沒有任何一家單獨的公司可以做得到。

開源之道點評

Linux 迎來了巨大的成功,所有人都直接或間接的受益於它。Linux 現在成了幾乎整個IT領域的基石,當下發展的多數技術如雲端計算、大資料、IoT、機器學習,預設都是以 Linux 為基礎,向上構建。然而就是這樣的技術,其背後 26 年尤其是前 13 年,走過的曲折道路,艱辛道路。讓我們重溫下 1998 年的開源人物合影:

但是從技術和工程、協作、治理的角度講,Linux 核心是人類史上的奇蹟。其背後蘊含的哲學、方法都是我們值得挖掘的寶庫。

Linux 基金會所做的報告,看起來都是非常成功的資料。但是要知道,微觀上是那些開發者殫盡竭慮、夜以繼日的工作、除錯、試驗、溝通的結果,4319 人共同打造的藝術品。難道這本身不應該被銘記和尊敬?感謝你們!

相關文章