Development statistics for the 7.1 kernel Linus Torvalds 如期在 6 月 14 日发布了 7.1 内核。这一开发周期带来了大量新特性同时也迎来了大批新开发者。现在是时候按照传统来看看 7.1 的变更都来自何处并顺便探讨一下我们的社区整体上可能正在发生怎样的变化。本次发布合并了来自 2,479 名开发者的 15,849 个非合并变更集changesets。这使得 7.1 成为内核历史上最繁忙的开发周期之一只有另外四个版本的提交commits数量超过了它。6.7 版本仍是有史以来最繁忙的拥有 17,284 个提交不过该版本的规模主要是由倒霉的 bcachefs 文件系统的加入及其全部开发历史所推动的。5.8、5.10 和 5.13 的提交数也多于 7.1但领先优势要小得多。参与 7.1 开发的开发者数量创下了新纪录打破了 7.0 刚刚创下的 2,362 人的短暂纪录。这一趋势值得关注但我们先从常规的数据看起。在 7.1 中贡献最频繁的开发者包括Most active 7.1 developersBy changesetsJohan Hovold1811.1%Thomas Weißschuh1751.1%Eric Biggers1681.1%Stefan Metzmacher1551.0%Krzysztof Kozlowski1480.9%Rafael J. Wysocki1470.9%Russell King1300.8%Tejun Heo1250.8%Christoph Hellwig1220.8%Eric Dumazet1200.8%Jakub Kicinski1190.8%Sean Christopherson1130.7%Thorsten Blum1010.6%Thomas Zimmermann860.5%Dmitry Torokhov850.5%Andy Shevchenko840.5%Mauro Carvalho Chehab840.5%Chuck Lever790.5%Bartosz Golaszewski770.5%Lorenzo Stoakes770.5%By changed linesJakub Kicinski12636712.7%Roman Li10577710.7%Namjae Jeon544455.5%Andrew Lunn161801.6%Eric Biggers144711.5%Stefan Metzmacher144031.5%Taniya Das119561.2%Alexei Starovoitov114101.2%Andy Shevchenko76730.8%Mauro Carvalho Chehab76370.8%Christian Brauner74830.8%Pankaj Patil71810.7%Christoph Hellwig63680.6%Krzysztof Kozlowski59930.6%Besar Wicaksono58730.6%Dmitry Baryshkov57870.6%Tejun Heo56980.6%Derek J. Clark52880.5%Vincent Donnefort50330.5%Ratheesh Kannoth49920.5%Johan Hovold [KSDB] 是本周期变更集的最大贡献者他在 SPI 子系统及其他领域进行了大量的清理工作。Thomas Weißschuh [KSDB] 的工作涵盖了内核的许多部分包括构建系统、nolibc、SPARC 架构代码等。Eric Biggers [KSDB] 一直在忙着重构内核的加密代码。Stefan Metzmacher [KSDB] 为 SMB 文件系统的实现做出了改进而 Krzysztof Kozlowski [KSDB] 则继续在整个片上系统SoC和设备树devicetree子系统深耕。在代码行数变动lines-changed列中Jakub Kicinski [KSDB] 删除了大量陈旧且无人维护的网络代码包括 ISDN、蓝牙 CMTP 和 ATM 子系统。Roman Li [KSDB] 引入了又一套庞大的 amdgpu 头文件。Namjae Jeon [KSDB] 带回了较旧的 NTFS 文件系统实现并为其添加了许多新功能。Andrew Lunn [KSDB] 则删除了一批无人维护的网络驱动程序。7.1 中有近 8% 的提交带有 Tested-by测试者标签而近 51% 带有 Reviewed-by审查者标签。与最近的几个版本相比这两个数字都相对较低。本次最顶尖的测试者和审查者是Test and review credits in 7.1Tested-byDaniel Wheeler895.8%Fuad Tabba613.9%Gavin Shan402.6%Shaopeng Tan402.6%Mohd Ayaan Anwar402.6%Jesse Chick402.6%Mostafa Saleh362.3%Punit Agrawal342.2%Jon Hunter332.1%Zeng Heng312.0%Lad Prabhakar291.9%Peter Newman281.8%Eric Biggers271.7%Venkat Rao Bagalkote221.4%Randy Dunlap211.4%Reviewed-byKonrad Dybcio3343.1%Dmitry Baryshkov3002.8%Andy Shevchenko1971.9%Krzysztof Kozlowski1811.7%Christian König1701.6%Ilpo Järvinen1611.5%Simon Horman1401.3%Frank Li1341.3%Geert Uytterhoeven1221.1%Christoph Hellwig1191.1%Jonathan Cameron1181.1%Gary Guo1141.1%Andrea Righi1031.0%Rob Herring1000.9%Lorenzo Stoakes940.9%Daniel Wheeler [KSDB] 牢牢占据着内核头号署名测试者的常青树位置。在审查方面Konrad Dybcio [KSDB] 为 334 个变更添加了标签而 Dmitry Baryshkov [KSDB] 标记了 300 个两人的审查几乎完全集中在高通Qualcomm驱动程序和设备树文件上且大部分代码由他们的高通同事编写。有 230 家我们能识别身份的雇主支持了 7.1 版本的开发其中最活跃的是Most active 7.1 employersBy changesets(Unknown)216013.6%Intel14359.1%Google12277.7%AMD8285.2%Qualcomm7875.0%Red Hat7454.7%(None)6944.4%NVIDIA5953.8%Meta5353.4%(Consultant)5003.2%SUSE4592.9%Oracle3902.5%Arm3342.1%Renesas Electronics2891.8%NXP Semiconductors2541.6%IBM2151.4%Huawei Technologies2101.3%Kylin1811.1%Linutronix1711.1%SerNet1551.0%By lines changedMeta15658315.8%AMD13673613.8%(Unknown)767387.7%Qualcomm758477.6%Samsung553915.6%Google545375.5%Intel489174.9%NVIDIA373743.8%Red Hat357063.6%(None)351783.5%Oracle158371.6%SerNet144031.5%Arm130301.3%SUSE122081.2%NXP Semiconductors117771.2%Huawei Technologies115801.2%Realtek103141.0%(Consultant)99841.0%Marvell82820.8%Amutable74830.8%同往常一样这部分与以往的开发周期相比几乎没有变化。开发者源源不断而来然而有一件事正在发生明显的改变。在 7.0 开发统计文章中曾指出首次贡献内核的人数一直在增长。7.1 周期延续了这一趋势迎来了 530 名新贡献者 [KSDB]远超 7.0 创下的 489 人的前纪录。现在的数字呈现出以下态势这种毫无停歇迹象的趋势几乎可以肯定是由基于大语言模型LLM的开发工具日益普及所推动的它已经在多个方面显现出影响。7.1 中有 299 个提交包含 Assisted-by辅助者标签表明使用了此类工具。然而实际有 LLM 参与创作的提交数量肯定要高得多显然有很多开发者并没有遵守内核关于披露此类使用的规则。这些新开发者出现在了一些令人意想不到的地方。例如串行线路 IPSLIP协议的实现在过去多年里除了维护性变动外几乎无人问津但现在却看到了来自 Weiming Shi [KSDB] 的修复这位开发者最初是在 6.19 中崭露头角的。长期备受冷落的软盘驱动程序收到了来自 6.17 新人 Guangshuo Li [KSDB] 的修复该修复随后被撤销。OMFS 文件系统也迎来了多年来第一个非机械性的变更由新人 HyungJung Joo [KSDB] 贡献。7.1 中最高产的新人 Michael Bommarito [KSDB] 贡献了 60 个提交其修复涵盖了 SMB 文件系统、SCTP 网络协议、蓝牙子系统、io_uring、SCSI 子系统、amdgpu 驱动程序、RDMA RoCEv2 实现等诸多领域。这些补丁几乎全部带有 Assisted-by 标签。很少有内核开发者能跨越这么多内核子系统做出实质性的修改一个此前从未涉足的人能够做到这一点完全是件新鲜事。但无论是新开发者还是老开发者是否真的能完全理解横跨如此多内核子系统的实质性补丁则是另一个问题了。此外似乎无穷无尽的拼写错误修复如今已经演变成了一场不折不扣的洪涝。作为文档维护者我欢迎这些变动因为这是新开发者熟悉开发流程的一种方式但我也试图鼓励开发者转向更具实质性的修改——可惜这一建议被采纳的次数远没有我希望的那么多。当然接触 LLM 并不是开发者加入我们社区的唯一原因。在此开发周期中出现的首次开发者中至少有 132 人已经可以关联到具体的雇主。高通以 15 名新开发者领跑AMD 雇佣了 14 名谷歌有 12 名。总共有 51 公司雇佣了 7.1 的新一代开发者。将 Rust 引入内核的众多初衷之一就是希望能吸引更年轻的开发者加入社区。总共有 5 名新开发者略低于 1%触及了 Rust 文件以“.rs”结尾的文件。其中 3 名开发者贡献了单个且体量较小的补丁一人为 binder 驱动添加了若干追踪点tracepoints还有一人Eliot Courtney [KSDB]贡献了 23 个提交其中 19 个用于正在开发中的 NVIDIA GPU “nova” 驱动。因此Rust 或许正在带来新开发者但目前规模还不大。总的来说新开发者最常触及的领域包括Subsystem# developersDocumentation78net66other drivers52drivers/net49drivers/staging47sound46include36drivers/gpu/drm35other fs33tools32arch/arm6426kernel25fs/smb19drivers/usb17drivers/iio15drivers/hwmon13drivers/bluetooth10MAINTAINERS10drivers/platform10drivers/i2c9mm8这里有一些有趣的规律。有大批新开发者参与文档工作表面上看起来是件好事……但请参阅上文提到的“拼写错误修复”。修改 MAINTAINERS维护者文件的新人数量可能令人担忧最近发生过一两起陌生开发者试图夺取某个子系统维护权的事件其前景令人担忧原因显而易见。在本次 cases 中大约有一半的 MAINTAINERS 变更伴随着该新开发者提交的新驱动程序。还有几位此前从未见过的开发者出现并声称拥有某个现有子系统的维护权但他们使用的是相关公司的电子邮件地址乍一看似乎合情合理。与此同时staging暂存树初衷就是为了让新开发者进入社区现在看来它仍在发挥着这一作用。一个格外引人注目的数字是向 SMB 文件系统做出贡献的新开发者人数。这些开发者并不是在修复拼写错误相反他们正在解决看起来很严重、甚至可能涉及安全性的漏洞。目前尚不清楚这些开发者是自己运行工具来查找漏洞还是有某种组织在引导新开发者去解决这些漏洞。但显而易见的是任何在重视安全的场合使用 SMB 的人可能都需要在接下来的一段时间里更勤快地跟进内核更新。正如本文第一部分的数据所示内核的开发进程似乎正以其一贯的高速——甚至更快一点的速度——向前推进。但时代变了。新的开发工具加速了大批新开发者涌入社区。如果他们中有足够多的人选择留下来用不了多久内核社区的构成以及社区的运转方式都将发生实质性的改变。我们正生活在一个有趣的时代。