寻找为 Linux 内核贡献数千补丁的“超能力者”!

2021-06-08 14:03


在 LWN.net 发布的 Linux 内核报告中,常年可以看到一个贡献者 —— “Yue Hai Bing”,自 2018 年底以来,TA 对每个版本都会贡献大量的补丁,帮助 Linux 内核不断迭代。为了找到这个来自华为的优秀贡献者,我开始找到朋友圈的华为同学,了解相关信息。每次提到 “Yue Haibing” ,大家都是神秘的一笑,就不再说话。 

这让我更加好奇,到底是谁,能如此频繁的在 Linux 内核中贡献,又从未在各种会议聚会中见到 TA?这让我产生了极大的好奇心。直到 openEuler 的问世,我们和 openEuler 社区的合作渐渐变多,终于知道,原来 Yue HaiBing 背后,竟然是华为的自动内核缺陷发现机器人 HULK Robot!正是 HULK Robot 完成了如此高频且优质的内核代码贡献。没想到,我以为的大神,背后竟然是一个机器人!

而为了能够了解到更多关于 HULK Robot 的信息,我采访了 HULK Robot 的架构师 —— 魏勇军先生,和魏勇军先生聊了聊关于 HULK Robot 的故事。

魏勇军(左)接受老王(右)的专访

HULK Robot 的由来

提及 HULK Robot 的诞生,魏勇军提到,其实 HULK Robot 很早便已经在社区应用。在 2017 年的时候,HULK Robot 的前身已经进入到 Linux 内核社区当中,发挥自己的作用。

在当时,HULK Robot 以 “Wei Yongjun” 这个身份,在 Linux 内核社区中贡献代码,提交代码修复补丁。“Wei Yongjun” 提交代码的频率之高,质量之优,让 Linux 内核的核心维护者 Greg Kroah-Hartman 都为之惊叹。在 2017 年北京举办的首次 LC3 大会上,Greg Kroah-Hartman 还专门提到了“Wei Yongjun”。

而来自社区的积极反馈,让魏勇军意识到,这个机器人对 Linux 内核社区是有价值的,可以帮助 Linux 内核越变越好。那为什么不让这个事情更进一步呢?

于是,HULK Robot 正式立项了。 

但,说起来容易做起来难。HULK Robot 想要给 Linux 内核贡献代码、提供补丁,却绝非易事。但魏勇军找到了思路。华为多年来虽然在做自己的服务器操作系统,但始终坚持“上游优先”,积累了大量的 Linux 内核维护经验,HULK Robot 可以通过整理过去的华为开发者的经验、测试用例,并将这些进行对比验证,确保这些修改是正确的、有价值的,再将其迁移至 HULK Robot 中,让机器人自动进行更多代码的扫描。

而随着华为对于 Linux 内核的不断进行代码贡献,终于,HULK Robot 成为了一个拥有丰富的测试集和探测能力的机器人。

HULK Robot 如何提交代码?

HULK Robot 随着不断的发展,能够为社区贡献更多的代码,从 Linux 内核的统计报告来看,从 Linux 5.1 开始,一直到最新的 5.10、5.12 ,HULK Robot 的提交能力在逐渐变强,为社区贡献的代码也越来越多, 已经在内核社区历史 Reported-By 榜单排名 TOP2。

魏勇军说,HULK Robot 背后是一套非常复杂的分布式系统。其本质上是一个海量的测试集与一系列先进的自动化测试、问题检测的手段。HULK Robot 和别的 Linux 内核测试机器人不同的是华为因为开发 openEuler 发行版,在内核的维护上付出了不少的时间和精力,拥有丰富的经验,也因此可以在其中贡献更多的代码。

对于魏勇军来说,HULK Robot 如今的重点已经远不是准备更多的测试集,而是要进一步的优化整个内核检测的流程。目前每次版本变更 HULK Robot 都需要跑一次完整的测试集,费时费力,他希望可以让 HULK Robot 可以更加的智能,当代码更改之后,只检测牵涉到相应功能的测试集,而不是测试庞大的全部测试集。此外,加入更多的 DevOps 能力,让更多的人可以参与到 HULK Robot 的开发工作中,更好的为内核贡献代码。这些修改,都可以让 HULK Robot 可以更好的为整个社区提供贡献,更加高效的贡献代码。 

也正因为 HULK Robot ,让整个社区可以拥有一个更加稳健和安全的操作系统,整个社区都因 HULK Robot 受益。

社区、开源、机器人

其实一直以来,机器人的应用在开源项目的维护当中是广泛应用的,但对于开源项目本身的维护,一直以来机器人参与的都不多,我也借此机会与魏勇军交流了想法。

魏勇军表示,Linux 内核的维护风格是非常社区化的,社区的维护者默认信任每一个提交贡献者都是为了社区的长期发展而贡献代码,因此,社区的维护者并不拒绝机器人参与到内核的维护中。如果对于整个社区的长期发展是有益的、做出了优质的贡献,社区支持更多的自动化机器人参与到贡献当中。

也许在未来, 我们能看到HULK Robot 会开源,让整个社区一起参与到贡献当中,更好的让 Linux 内核得到维护。

用技术赋能社区

一直以来,Linux 社区都因为资深维护者的流失而担忧,担心社区不再有年轻的血液注入,最终失去了活力。

而 HULK Robot 则为这个事情提供了一种新的思路:可以将资深维护者的经验变成固化的代码,从而使得知识得以传承,而 HULK Robot 的自动化运行机制,又为社区提供了源源不断的贡献和补丁,让这个系统成为一个更加好用和安全的系统。从某种角度来看, HULK Robot 解放了 Linux 内核的贡献者,让贡献者们可以更加专心的做更加重要的事情,把这些繁琐复杂的事情,交给机器人来完成,从而降低了对于社区新鲜血液的需求度。

HULK Robot 不仅仅是为上游提供了新鲜的血液,也更是 openEuler 长期发展不可或缺的护道人,正是 HULK Robot 背后的默默无闻的工作,才能让 openEuler 可以更加稳固的运行,为广大开发者提供一个简单、好用、实用的 Linux 发行版。

我们需要新鲜血液么?当然需要,但如果我们能把门槛降低,这不也是一件好事么?


2021 年 6 月 10 日,openEuler 社区将发起一场面向社区开发者的技术盛会 openEuler Developer Day 2021 ,会上将对多样性计算、云原生全栈、全场景协同等技术发展方向进行持续探索和创新;技术委员会、用户委员会、品牌委员会等 20 个 SIG 组同期举办开放工作会议;技术委员会主席将深入解读 openEuler 21.03,发布下个社区版的技术定位并分享社区创新思路;客户、伙伴、厂商、研究机构将在开源圆桌中共同探讨开源软件供应链的意义和风险,开源模式如何推动以及独立演进操作系统的技术发展。

更多活动信息: https://openeuler.org/zh/interaction/summit-list/devday2021/