Linux 內核的故事

Linux 內核的故事

通過 29 年的努力,Linux 內核前不久接受了它的第一百萬次提交。有史以來最偉大的開源項目已經從它的「愛好」開始走了很長的路。

做者:Steven J. Vaughan-Nichols
編譯:徐九 丨發佈自:思否編輯部
原文標題:《Commit 1 million:The history of the Linux kernel》linux


1991 年 8 月 25 日,芬蘭研究生 Linus Torvalds 告訴 Minix 新聞組,他正在開發他的新的免費操做系統,這將「只是一個愛好。」但在 29 年後,Linux 幾乎統治了計算機世界。git

在 2020 年的 Linux 內核歷史報告中,Linux 基金會講述了從 Linux 內核發佈的第一天到 2020 年 8 月 Linux 內核 5.8 發佈的故事。程序員

雖然基金會之前發佈過幾份 Linux 內核歷史報告,但這份報告是獨一無二的。這是由於,多虧了 Daniel German 博士和他的 cregit 工具,如今能夠跟蹤全部三個內核的不一樣開發階段: 前版本控制,1991 年 9 月到 2002 年 2 月 4 日; BitKeeper,2002 年 2 月 4 日到2005年4月15日; git,2005年4月16日到今天。編程

Git 與 BitKeeper

若是您是 Linux 的新玩家,您可能不知道版本控制在 2000 年代是一個熱點問題。十多年來,Linux 徹底沒有版本控制系統(VCS)。你能夠把你的補丁發佈到郵件列表上,若是 Torvalds 接受了,他會把它應用到他本身的源代碼樹上,而後再發布整個源代碼樹的新版本。segmentfault

當時有 VCSs 可用,好比 CVS 和 Subversion,可是 Torvalds 不喜歡其中任何一個協做版本系統。然而,因爲社區的壓力,Torvalds 最終選擇了 BitKeeper。網絡

委婉地說,這不是一個受歡迎的選擇。BitKeeper 是一個封閉源代碼的商業系統。Torvalds 認爲自由軟件很是好,但他須要的是儘量好的 VCS 和 BitKeeper。架構

多年來,關於這件事情一直在進行着激烈的討論。最終,Samba 開發負責人 Andrew Tridgell 逆向工程 BitKeeper 網絡協議,建立了一個兼容 BitKeeper 的開源 VCS。BitKeeper 的建立者 Larry McVoy 曾經說過,若是有人這樣作了,他不會讓 Linux 開發者使用他的程序,他也真的這樣作了。工具

這使得 Linux 沒有 VCS。做爲迴應,Torvalds 本身作了一個: Git。但他後來講他其實並不想這麼作,「我真的歷來都不想作源代碼控制管理,我以爲這是計算機世界裏最沒意思的事情。」測試

不管無聊與否,十天的工做以後,Torvalds 終於完成了他的工做。現在,git 很容易成爲開源領域最受歡迎的 VCS,以及 GitHub 和 GitLab 等編程站點的基礎。spa


說回代碼,最開始的 linux-0.01.tar。操做系統 z kernel,後來被稱爲 Linux,只有 88 個文件和 10,239 行代碼,運行在一個單一的硬件架構 i386 上。

以後狀況逐漸發生了一些變化。如今的 v5.8 內核中包含 69,325 個文件和 28,442,673 行代碼,它運行在超過 30 個主要的硬件架構上。Torvalds 本身說: 「5.8 看起來是咱們有史以來最大的發行量之一。」

但從第一天開始的一些代碼仍然存在於今天的 Linux 中。將輸出寫入 stdout 的 vsprintf 例程仍然在代碼中。Torvalds 說,這部分「是和 Lars Wirzenius 合寫的。」這也讓 Torvalds 在大學時的朋友 Wirzenius,成爲了第一個與 Linux 合做的開發者。

從 1996年1月的 v1.3.68 版本開始,維護者的文件中會列出主要開發和維護內核的開發者。初版的文檔中只有三個維護人員: Alan Cox、 Jon Naylor 和 Linus Torvalds。到了 2020 年的 5.8 版本,已經有了 1501 個維護人員。

固然,要真正深刻了解 Linux 內核的歷史,您須要查看早期的 Linux 開發郵件列表。Linux 老是在郵件列表上討論和設計的。「不幸的是,」報告指出,「在 1997 年以前,只有部分討論記錄是公開的,由於 Linux 開發跨越了多個郵件列表和 USENET 組。」

在 Linux 內核的歷史中有一件事是很清楚的: 變化來得愈來愈快。從 2005 年到 2008 年,平均每小時有 2 次提交;到 2019 年,每小時則有了 9.4 次提交。最新的 v5.8 內核,平均每小時提交 10.7 次。

儘管步伐如此之快,Linux 的發佈週期已經變得至關可預測。每一個發佈週期開始於一個兩週的「合併窗口」這就是爲下一個版本的 git 倉庫添加新功能的時候。一旦這個版本被標記爲 rc1,集成測試、調試和穩定週期就開始了。多個 rc 候選者被標記,直到 Linus 和他的主要維護人員認爲它足夠好,足夠穩定就能夠發佈了。以後,循環再次開始與下一個合併窗口。

有個傳言一直持續到今天,說 Linux 和其餘開源軟件是業餘愛好者在他們媽媽的地下室裏寫的。雖然這對於少數程序員來講多是真的,可是大部分的 Linux 內核開發人員都是在 IT 公司工做。至少從 2008 年開始就是這樣了。在那一年,74.2% 的 Linux 內核是由領薪水的程序員編寫的。

的確,也存在至關數量的志願 Linux 開發者。在過去的 12 年裏,74.2% 領薪水的程序員當中的 11.95% 開發者都是在「爲愛發電」,剩下的 52% 開發者則是由公司和顧問牽頭來編寫的。

參與人員的比例,從上到下前十名分別是: 英特爾,紅帽,IBM,SUSE,Linaro,谷歌,三星,AMD,Renesas,德州儀器和甲骨文。

在某種程度上,因爲公司,尤爲是 Linux 發行商,如 Canonical,Red Hat,和 SUSE,對 Linux 的健康發展相當重要。

這些內核最初都是穩定的內核,開發人員承諾會長期維護它們。而後,當在穩定的內核中發現 bug 時,它們會被上游修復並回移植到長期發佈的內核中。目前,這些是長期內核版本:

Linux 內核的故事

一些 Linux 用戶但願看到更長的支持窗口。土木基礎設施平臺(CIP)正在支持 4.4 和 4.19 版本,做爲超長期穩定(SLTS)內核發佈。CIP 工做於基礎設施的開放源代碼,如發電和運輸、石油和自然氣分配、水和廢水管理。這些項目將獲得 10 年或更長時間的支持。

在過去的幾年中,內核開發人員在自動調試工具上也付出了更多的努力。零日自動測試機器人和華爲的 hulk 機器人天天都在 Linux 內核樹上運行諸如 spares,smatch 和 coccicheck 之類的靜態分析工具。模糊測試器(例如 Trinity 和 syzkaller)也變得愈來愈流行。最終結果將是 Linux 的代碼比以往更乾淨。

Linux基金會指出,「內核社區的重點是保持一個共同的目標,即擁有一個沒有退化的高質量操做系統,願意根據須要建立新的流程和工具來幫助他們提升效率。」在當今最大的科技公司的支持下,Torvalds 及其成千上萬的同事已經成功實現了這一目標。

對於「只是一個愛好的操做系統」來講還不錯。

segmentfault 思否

相關文章
相關標籤/搜索