LWN: 5.2内核改动相关的一些统计数字

640点击上方蓝色字关注我们~



Statistics from the 5.2 kernel — and before

By Jonathan Corbet
June 21, 2019


译者注:5.2已经于7月7日正式发布,但LWN此文撰写时5.2尚在开发周期中。


截至此时,在5.2开发周期中已经有13600个patch set (不包含merge合并点)被合入了mainline。因此是时候再一次来看看这一轮里的贡献来自何方了。有些数据跟此前还是有不少变化的。有1716位开发者为5.2贡献改动,其中245位是第一次贡献代码。这些开发者删掉了49万行代码(看起来很多),不过同时也加入了59万6千行新代码。所以kernel还是增大了10万多行。这一轮最活跃开发者如下:


LWN: 5.2内核改动相关的一些统计数字_第1张图片


Changeset第一名的Thomas Gleixner,其中349个改动是为了替换kernel源代码里面的SPDX授权信息,还有其他100多个其他改动,包括安全修正、重构stack trace的处理等等。Alexandre Belloni修改了非常多的realtime clock的内容。Yue Haibing对内核代码多处进行清理。Chris Wilson修改了i915显卡驱动,Guenter Roeck对硬件监控和watchdog子系统进行了很多改进。


修改行数排行里面,Greg Kroah-Hartman删除了staging kernel里面的rtlwifi驱动,替换为一个non-staging的更正式驱动。Gleixner的SDPX改动让他名列第二,因为不仅要加一行SPDX标记,同时会删掉大段大段的缘由license模板代码。他总共删除了10万多行。Yan-Hsuan Chuang只贡献了3个改动,不过这是整个一个全新的Realtek驱动代码,这个也不小。Gabriel Krisman Bertazi增加了ext4文件系统里的大小写忽略的文件名查找功能,这个引入了很多自动生成的UTF-8处理代码。Liam Girdwood增加了Sound Open Firmware系统支持。

下面是进行最多测试和代码审查的贡献者,这次跟前几次release的名单有不少差别:

LWN: 5.2内核改动相关的一些统计数字_第2张图片

Andrew Bowers测试了i40e网卡驱动,这是他在Intel的同事提出的patch。名单里像Allison Randal, Kate Stewart,Richard Fontana都是社区里面比较知名的贡献者,不过他们通常在patch里出现的次数不多。这次是因为他们(海包括Alexios Zavras和Armijn Hemel)全都review了SDPX的改动。这不是一个轻松的改动,每处SPDX改动都需要能跟那个文件的实际所用license要能对的上,绝对不能改变了原文件的license。


5.2版本中,我们已知的有215个公司、团体做出了贡献。其中最活跃的如下:

LWN: 5.2内核改动相关的一些统计数字_第3张图片

这里基本没有什么出乎意料的信息。不过很高兴看到Realtek上榜了。


开发者对别的作者的patch set增加sign-off标记的话,通常意味着他们是把相应patch set合入子系统代码库的代码维护者。因此看一下这类signoff的数量,我们就能知道这次kernel版本里主要的把关者有哪些。5.2中,最活跃的开发者和公司如下表:

LWN: 5.2内核改动相关的一些统计数字_第4张图片

子系统维护者通常都是在为那些比较常见的公司工作,尽管随着时间的变化这个数据变化也挺大,不过这次仍然是有超过50%的代码合入者属于那5家头部公司。


Code longevity (代码生命周期)

下面,我们用比较暴力的方法来看每个开发周期中有多少代码在5.2 kernel中仍然留存下来了。通过对kernel代码中每个文件进行git blame,检查blame中显示的每一行代码的commit,对应到相应的引入kernel的那个版本去,就能看出各个旧版本里面多少代码仍然存留了。结果如下:

LWN: 5.2内核改动相关的一些统计数字_第5张图片


可以看出,较新的版本里引入的代码肯定比较老的版本里引入的代码更易留存下来,毕竟对老版本代码来说,经过了更多时间之后,就更容易被改动。而且最近的几个版本比起过去许多都加了更多代码进来。仍然可以看出,我们加入的很多代码在kernel会保留相当长的时间。


其实多数的数据在图中看不到,否则就会让这个图太长了。有超过两百五十万行的代码(大概是总代码量的10%)都是2005年第一个Git commit里创建的。其实这些代码里面很多寿命都更加长。

回顾一下上一个版本,5.1 kernel里面有215个文件自从第一个Git commit之后一直没有改过。这个数字(215个文件)肯定是低估了的,因为更多文件中其实只有一个空格的改动,或者调整格式,修复错别字,都没有算到215之内。在5.2版本里面这个数字更没法统计了,因为SPDX改动会让绝大多数文件都显得好像是改动过了,不过其实一个好看的SPDX标记并不会真正改变这个文件内部的代码逻辑,其实这个代码仍然是老代码。

这些老代码,其实可能也就意味着多年以前它就已经足够完美了,不再需要改动。不过与此同时,长久不改动的代码可能也意味着这部分代码没有积极维护,用的人也不多,或者有一些安全漏洞。对于有兴趣来做一些代码清理工作的开发者来说,可能可以考虑从这部分代码里面找一些机会。


全文完

LWN文章遵循CC BY-SA 4.0许可协议。

极度欢迎将文章分享到朋友圈 
热烈欢迎转载以及基于现有协议上的修改再创作~


长按下面二维码关注:Linux News搬运工,希望每周的深度文章以及开源社区的各种新近言论,能够让大家满意~


640?wx_fmt=jpeg

你可能感兴趣的:(LWN: 5.2内核改动相关的一些统计数字)