尋找為 Linux 內核貢獻數千補丁的「超能力者」!
在 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/
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive