LWN:5.15 開發(fā)周期數(shù)據(jù)統(tǒng)計!
關(guān)注了就能看到更多這么棒的文章哦~
Some 5.15 development statistics
By Jonathan Corbet
November 1, 2021
https://lwn.net/Articles/874283/
5.15 內(nèi)核在 10 月 31 日正式發(fā)布了,code name 也就順利成章地起名為 "Trick or Treat" 了。當(dāng)時,已經(jīng)有 12,377 個 non-merge changesets 合入了 mainline,凈增了 322,000 行代碼。請繼續(xù)閱讀來了解 5.15 kernel 中的貢獻(xiàn)都來自哪些力量。
LWN 一直在閱讀這類總結(jié)文章的讀者應(yīng)該會注意到 5.15 中的總 patch 數(shù)量相對偏少。確實,我們應(yīng)該跟 kernel 之前的情況比較一下,就從 2019 年早期發(fā)布的 5.0 版本來開始吧:
| Release | Changesets | Developers |
|---|---|---|
| 5.0 | 12,808 | 1,712 |
| 5.1 | 13,034 | 1,707 |
| 5.2 | 14,024 | 1,716 |
| 5.3 | 14,605 | 1,846 |
| 5.4 | 14,619 | 1,802 |
| 5.5 | 14,350 | 1,885 |
| 5.6 | 12,665 | 1,712 |
| 5.7 | 13,901 | 1,878 |
| 5.8 | 16,306 | 1,991 |
| 5.9 | 14,858 | 1,914 |
| 5.10 | 16,308 | 1,971 |
| 5.11 | 14,340 | 1,912 |
| 5.12 | 13,015 | 1,873 |
| 5.13 | 16,030 | 2,062 |
| 5.14 | 14,735 | 1,912 |
| 5.15 | 12,377 | 1,797 |
可以看到,從合入的 changeset 數(shù)量來看,5.15 是在 5.x 時代里面最安靜的開發(fā)周期了。要想找到一個比它的改動更少的版本,要回到 2016 年 8 月份的 4.7 版本了,當(dāng)時有來自 1.582 位開發(fā)者的 12,283 個 changeset。這個周期的改動這么少,確實很意外,因為 5.15 基本上已經(jīng)確定會是下一個 long-term support release 了。kernel 開發(fā)者經(jīng)常會擔(dān)心各個廠商把還沒有準(zhǔn)備好的代碼急著塞到 LTS release 里面,不過這次看來沒有這種問題。
也許這里的事實情況是開發(fā)社區(qū)正在疫情中期進(jìn)行了一個短暫的休息。
Individual contributors
與此同時,參與到這次 release 的開發(fā)者的數(shù)量雖然比之前幾個 cycle 要少,但是還是比 5.x 時代的某些 release 要多的。在 5.15 的這 1797 位開發(fā)者中,有 251 位是首次貢獻(xiàn)者。這個數(shù)字偏低,不過跟之前幾次 release 還是差不多同一個水平。本輪中最活躍的開發(fā)者是:
Most active 5.15 developers
By changesets Christoph Hellwig 252 2.0% Namjae Jeon 171 1.4% Takashi Iwai 161 1.3% Vladimir Oltean 138 1.1% Colin Ian King 131 1.1% Arnd Bergmann 119 1.0% Andy Shevchenko 109 0.9% Thomas?Zimmermann 108 0.9% Geert Uytterhoeven 100 0.8% Michael Straube 92 0.7% Linus Walleij 91 0.7% Krzysztof Kozlowski 91 0.7% Pavel Begunkov 83 0.7% Sean Christopherson 82 0.7% Thomas Gleixner 82 0.7% Dan Carpenter 80 0.6% Phillip Potter 79 0.6% Bart Van Assche 76 0.6% Randy Dunlap 73 0.6% Christophe JAILLET 73 0.6%
By changed lines Phillip Potter 137584 17.0% Namjae Jeon 42483 5.2% Konstantin Komarov 32228 4.0% Christoph Hellwig 22177 2.7% Jin Yao 16772 2.1% Hu Haowen 13102 1.6% Trevor Wu 12407 1.5% Linus Walleij 11863 1.5% Zack Rusin 11163 1.4% Lukas Bulwahn 9211 1.1% Konrad Dybcio 8728 1.1% Takashi Iwai 7994 1.0% Vladimir Oltean 7024 0.9% Arnd Bergmann 6965 0.9% Fabio Aiuto 6864 0.8% Kumar?Kartikeya?Dwivedi 5493 0.7% Quinn Tran 5319 0.7% James Smart 5287 0.7% Matthew Brost 5219 0.6% Iskren Chernev 5176 0.6%
Christoph Hellwig 這輪是貢獻(xiàn)最多 changeset 的人,他仍在對 block 和 SCSI 子系統(tǒng)進(jìn)行深入地重構(gòu),偶爾也會涵蓋一些其他工作,比如移除了 m68k 架構(gòu)中的 set_fs()。Namjae Jeon 是在對新增的 ksmbd 文件系統(tǒng)實現(xiàn)進(jìn)行貢獻(xiàn),Tkashi Iwai 繼續(xù)作為 sound 子系統(tǒng)的 maintainer 進(jìn)行貢獻(xiàn),Vladimir Oltean 對網(wǎng)絡(luò)驅(qū)動進(jìn)行了很多改進(jìn),Colin Ian King 在 kernel 代碼中進(jìn)行了許多小清理。
這一輪里修改了最多行代碼的人是 Phillip Potter,他增加了 rt8818eu wireless network driver。Konstantin Komarov 在做 ntfs3 filesystem driver,Jin Yao 對 Intel 許多 subarchitecture 添加了 perf event 支持。
內(nèi)核項目非常依賴 tester 和 reviewer,他們的貢獻(xiàn)不亞于開發(fā)者們。在 5.15 cycle 里面,進(jìn)行了最多的 test 和 review 工作的人是:
| Test and review credits in 5.15 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
很多對 kernel test 進(jìn)行了貢獻(xiàn)的朋友一般在我們社區(qū)里面沒有怎么看到。我們只是從一些公司的內(nèi)部 review 流程里面打上的 tag 來看到的。很多公司都有這個流程,不過他們并沒有都通過 patch tag 方式來記錄這些工作。review tag 也有類似的情況,不過這次不是這么回事。review 最多的參與者在 kernel 項目中都有一些不同的職責(zé)。比如這次 review 最多的人(Christoph Hellwig) 就是這次貢獻(xiàn)最多 changeset 的人。
Employers
5.15 的開發(fā)工作中可以看到有來自 213 個公司的身影。其中最活躍的公司是:
Most active 5.15 employers
By changesets Intel 1216 9.8% (Unknown) 958 7.7% 718 5.8% (None) 687 5.6% Red Hat 633 5.1% Linaro 577 4.7% SUSE 553 4.5% AMD 504 4.1% Huawei?Technologies 465 3.8% NVIDIA 368 3.0% IBM 349 2.8% (Consultant) 306 2.5% 305 2.5% Canonical 275 2.2% NXP Semiconductors 264 2.1% Oracle 255 2.1% Renesas Electronics 236 1.9% Samsung 214 1.7% Arm 193 1.6% Linutronix 147 1.2%
By lines changed (None) 166216 20.5% Intel 79492 9.8% (Unknown) 50642 6.2% Samsung 46431 5.7% Linaro 35003 4.3% Paragon Software 32228 4.0% Red Hat 24395 3.0% (Consultant) 23610 2.9% AMD 22864 2.8% NVIDIA 21705 2.7% 20215 2.5% MediaTek 19706 2.4% SUSE 19547 2.4% 13960 1.7% VMWare 13518 1.7% SoMainline 11581 1.4% Huawei?Technologies 11070 1.4% Renesas Electronics 10557 1.3% NXP?Semiconductors 10443 1.3% Broadcom 10202 1.3%
跟往常一樣,這次也沒有多少意外。Paragon Software 以前沒有出現(xiàn)在這個榜單中,這次是因為對 ntfs3 的貢獻(xiàn)。還有一個值得注意的是華為為 5.15 貢獻(xiàn)了 465 個 changeset,雖然仍是很大數(shù)量的貢獻(xiàn)了,但是比起在 5.14 中的 1,731 個 changeset 來說大大減少了。如果華為能保持 5.14 階段的活躍度的話,這個開發(fā)周期比起之前幾個的 changeset 數(shù)量來說就沒有多少差異了。不過看起來列表中的幾乎所有公司在 5.15 中的貢獻(xiàn)數(shù)量比起 5.14 來說都要少。
Code longevity
最后,來看看這個有意思的數(shù)據(jù),就是每個 release 里面有多少代碼還在當(dāng)前 kernel 里面存活著。這個數(shù)據(jù)是通過用 git blame 對 kernel 代碼中每個文件進(jìn)行暴力搜索,然后把每一行都對應(yīng)到它第一次出現(xiàn)的 commit 上來獲取的。對當(dāng)前的 Git 歷史進(jìn)行這樣的統(tǒng)計的話,看到的結(jié)果就是這樣:

[plot]
絕大多數(shù) release 中添加的代碼在 5.15 kernel 中占據(jù)的代碼比例都不超過 2%,5.15 本身新增代碼占了總數(shù)的 2.1%。在 Git 剛開始應(yīng)用進(jìn)來的時候,也就是 2005 年的 2.6.12 release,kernel 就有了大約 1080 萬行代碼。大約 16 年過去了,那些代碼中仍然有 230 萬行(略少于四分之一)保留在 5.15 中,占現(xiàn)有代碼的 7.2%。如果仔細(xì)看進(jìn)去的話,會看到這些代碼很多都是用單獨的一行 "/*" 之類的內(nèi)容,不過當(dāng)然不是全部都是這樣。比如說 kernel 中到現(xiàn)在還有 72 個文件自從 2005 年的第一個 commit 加入進(jìn)來之后就從來就沒有被改動過。
關(guān)于上圖中其他比較顯眼的那些 release,也能有一個比較直觀的解釋。比如 4.12,就包含了那些巨大的 amdgpu register 定義頭文件之一,這些頭文件估計會永遠(yuǎn)存在,并且也不會有任何人去讀它們。5.3 和 5.9 的情況也類似。其他一些 release 的情況就沒那么直觀了,比如 5.6 里面加入了 ath11k 網(wǎng)卡驅(qū)動以及 WireGuard VPN ,不過光這兩項沒法解釋為什么這么多代碼還保留著。
5.15 開發(fā)周期中的新代碼會在今后存活多久,現(xiàn)在還說不清。不過從上圖來看,內(nèi)核代碼還是挺長壽的。許多代碼會一直存在著,也許直到今后某天用 Rust 完全重寫了。大家繼續(xù)期待開發(fā)社區(qū)不斷快速地添加和改動代碼吧。
全文完
LWN 文章遵循 CC BY-SA 4.0 許可協(xié)議。
長按下面二維碼關(guān)注,關(guān)注 LWN 深度文章以及開源社區(qū)的各種新近言論~
