华为 Linux 内核贡献者被质疑刷 KPI,真实情况是怎样的?有哪些信息值得关注?

我来搬运一下知乎上关于这件事一点点赞较多的回答。

作者:任晶磊
链接:https://www.zhihu.com/question/466111598/answer/1964012912
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

去年开源峰会上Linus Torvalds与Dirk Hohndel的对话,表达了对Linux维护者逐渐老去、新生代贡献者或日益匮乏的担忧。虽然这次KPI patch事件由争论乃至批评而起,但让更多开发者关注到为Linux项目贡献代码的话题,也并非坏事。或许会有开发者学着从简单patch做起,或许资深开发者会更注意提升贡献的质量和价值。明星们为电影推广还要参加综艺活动呢,Linux这件“艺术品”和开发者大众的”话题”并没必要对立起来。当然,大家会希望讨论回归事实和理性,所以下面的回答都是基于数据分析。

这件事情可以拆分出两个焦点:一是这类patch提交的行为本身;二是华为对Linux kernel的贡献如何。我们不妨看下代码库数据分析的结果,比较客观。

在列结果之前,我们当然要说下代码库分析的算法。既然提交次数和代码行数都容易受到个体行为的影响,我们做了两点更深入的分析,一是把源代码编译成了抽象语法树(AST)然后统计AST的复杂度,从而避免受提交次数、代码换行等影响,这个指标称为ELOC(equivelant lines of code),命名上与传统SLOC(source lines of code)相对;二是解析出代码间的依赖关系(如函数调用),跑了一个类似PageRank的算法,用于估计代码的“核心”程度——越被广泛依赖,“核心”程度趋向于越高。两者综合为“影响力”(Impact)的评分。如果想了解更多技术细节,可参阅我们在软件工程顶会FSE上发表的论文(https://per.pub/A1Pd7xaM.pdf)。

贡献者提交patch情况

Linux主干上过去三个月的提交共涉及1941位作者。其中事件双方的贡献情况如下:

开发者提交次数代码修改ELOC(排名)综合影响力(排名)提交影响因子(排名)
Patch方32+79/-8877 (726)7.4E-5 (746)2.4 (1476)
批评方20+746/-981611 (99)0.2% (91)105.8 (229)

我们可以看到,批评方不论ELOC还是综合影响力都位列前5%,能称得上Linux的核心开发者了——当然,我们不想论“身份”或“资格”,只是为其他该角度的评论呈现出一点实事。这里定义的提交“影响因子”是用综合影响力除以提交次数占提交总数的百分比,大概反映单个提交平均的“含金量”。如果把批评方作为核心开发者的一个样本,他每提交的“含金量”是patch方的44倍!根据patch方自述,他也是多年资深的Linux开发者,最近的提交行为似乎有失水准了。批评的声音在积极意义上能够提醒开发者,尽量自觉地把多个小修改归类归并提交,以节省maintainer的宝贵时间,毕竟大家都很忙。如果是一些评论所说的脚本或bot所为,那不妨改进下程序逻辑,或者开源出来请大家一起帮着优化。

另外,我们注意到,虽然patch方的提交“含金量”排在尾部,但后面“含金量”更小的贡献者还有不少,他们又是什么情况呢?其中一些是maintainer,直接代码贡献很少,而大量merge commits的贡献在我们算法中暂未计入;另一些只做过零星几次提交,可能就是批评方所说的新手,社区通常会理解和欢迎;但也有一些和此次patch方行为类似。所以我们统计出了比patch方的提交影响因子还低并且提交数在同一个数量级(10+次)的开发者(排除了修改文档和其他格式暂未支持的文件的开发者),一共有23位,他们按邮箱域名归并如下:

邮箱域名人数平均提交次数平均提交影响因子
个人邮箱8351.2
http://huawei.com8171.6
http://alibaba.com2601.1
http://vivo.com2400.9
http://linux.org1692.2
http://zte.com.cn1141.3
http://fau.de1102.1

一方面,来自华为的人数确实比较多;另一方面,从提交的平均次数和影响因子看,华为似乎又比其他几家略显“克制”。

华为对Linux kernel的贡献情况

传统上,按提交数统计贡献的做法居多。按这个指标计算,华为的贡献仅次于个体开发者(http://gmail.comhttp://kernel.org邮箱后缀,可能存在一定误差),位列全球科技公司之首。

数据来源:https://ranking.merico.build/oss-orgs/

而如果我们按开发当量ELOC计算,通过程序分析屏蔽掉提交次数和源代码层面的各类噪音,那么华为的排名会掉到十名左右,如下表所示。排在前三名的科技公司是英特尔、AMD和NVIDIA。

数据来源:https://ranking.merico.build/oss-orgs/

进而,如果我们把代码间的依赖关系也算进来,综合影响力排序如下:

数据来源:https://ranking.merico.build/oss-orgs/

华为依然在十名左右,与Google、微软等公司相近。

查看完整榜单可访问  https://ranking.merico.build/oss-orgs/ ,背后的数据和分析工具来自这个项目  https://github.com/merico-dev/build,欢迎关注!

从提交数这种浅层指标,到ELOC或Impact这类深度指标,很遗憾华为的排名确实下降了。但华为的贡献仍然排在全球科技公司的前十,是国内公司做出贡献最多的,同样值得大家点赞!反过来说,我们也不能被提交数最高所误导,有不切实际的心态,或忽略更深层次的问题。期待华为和其他中国科技公司为Linux等开源项目做出更多核心贡献!

榜单比较容易引起争议,最后想特别说明的是,一定不存在绝对意义上的排名,我们的分析数据只是为大家提供了更多的视角;目的也不是评价特定公司,而是让各家的贡献都能够被看到。如果可以带来一点“打怪升级”的游戏化意味,或许能更好地鼓励各个公司以及开发者参与开源项目,做出更多贡献,促进开源生态的繁荣。

当然,如果公司只宣传以提交次数计算的贡献,难免导致此次事件暴露的一些负面影响。而作为技术人,我们希望的就是通过开发技术、打磨细微之处,让事情变得更加合理一点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值