我是如何成為首位OpenHarmony野生Committer的?
想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
什么是開(kāi)源?
開(kāi)源興起于軟件行業(yè),以開(kāi)放、共享、協(xié)同為本質(zhì),成為眾多科技公司和個(gè)人開(kāi)發(fā)者的利器之一,而它在逐漸滲透到各個(gè)領(lǐng)域的同時(shí)也為技術(shù)創(chuàng)新提供了重要的渠道。如今,開(kāi)源已經(jīng)成為一股潮流,開(kāi)源文化流行,開(kāi)源項(xiàng)目層出不窮…
6 月 1 日,開(kāi)放原子開(kāi)源基金會(huì)正式發(fā)布 OpenHarmony 2.0 Canary,引起了眾多開(kāi)發(fā)者的關(guān)注。
OpenHarmony 是自主研發(fā)、不兼容安卓的全領(lǐng)域下一代開(kāi)源操作系統(tǒng)。迄今為止,該項(xiàng)目已有 240 多位貢獻(xiàn)者。
在這眾多的代碼貢獻(xiàn)者中,一位名叫“老凱”的開(kāi)發(fā)者備受關(guān)注。
他是首位晉升為 OpenHarmony 開(kāi)源項(xiàng)目 Committer 的野生開(kāi)發(fā)者,下文來(lái)自老凱,一起來(lái)探究他是如何一步步成為 OpenHarmony 開(kāi)發(fā)者的吧。
我參與 OpenHarmony 社區(qū)開(kāi)發(fā)
我既非 IT 圈內(nèi)人,也沒(méi)有技術(shù)成就,竟然獲得了聲名響亮的鴻蒙開(kāi)源社區(qū)的殊榮–OpenHarmony 第一位野生 committer,也就是在某些項(xiàng)目中有權(quán)去審查核準(zhǔn)別人提交的代碼了!
大家可能會(huì)認(rèn)為一定是做了多么了不起的貢獻(xiàn)…確實(shí)做了一些事,提交并被采納了十?dāng)?shù)個(gè)補(bǔ)丁、千把行的代碼;但如果你仔細(xì)看看,你會(huì)發(fā)現(xiàn)很平凡,不過(guò)如此而已…
沒(méi)錯(cuò),我也是這么認(rèn)為的,但為什么就獲得了殊榮呢?我以為是鼓勵(lì),但更重要的是,這就叫社區(qū)、開(kāi)源–小白也可以由此實(shí)現(xiàn)人生價(jià)值!
為啥參與
做點(diǎn)有意義的事,能夠在家人朋友面前,在老去的時(shí)候向孩子們吹吹牛,是個(gè)樂(lè)事,人之常情。
恰好幾年前,我離開(kāi)了原來(lái)的單位,面臨著如何再選擇的問(wèn)題,那時(shí)也正是美國(guó)佬開(kāi)始瘋狂打壓我們,國(guó)內(nèi)深刻反思“缺芯少魂”的時(shí)候。
很自然地,我把目標(biāo)瞄準(zhǔn)了這個(gè)方向。既然有閑還有點(diǎn)小錢(qián),為什么不選擇既喜歡又有意義的事情去做呢。
于是重新?lián)炱鹆嘶膹U已久的技術(shù)“特長(zhǎng)”,樂(lè)此不疲地回歸到了碼農(nóng)行列,再做點(diǎn)有意義的事!
前前后后轉(zhuǎn)了幾個(gè)國(guó)內(nèi)與操作系統(tǒng)有關(guān)的社區(qū),總的感覺(jué)是“淡”,新人不知如何入門(mén),參與更是困難。
可能有我個(gè)人的因素,但總體感覺(jué)那時(shí)國(guó)內(nèi)開(kāi)源社區(qū)就是這樣一個(gè)通常情況,似乎是近兩年,“開(kāi)源”、“貢獻(xiàn)”、“社區(qū)”的氛圍才開(kāi)始深厚起來(lái)。
后來(lái)去國(guó)外的社區(qū)轉(zhuǎn),就當(dāng)取經(jīng)了,還真是在 Debian 社區(qū)收獲了不少新認(rèn)識(shí)。
2019 年特朗普給我介紹了一個(gè)機(jī)會(huì):來(lái)鴻蒙吧。全程觀看了鴻蒙的首次亮相演說(shuō),暢想的愿景,描繪的藍(lán)圖,對(duì)我產(chǎn)生了很大的吸引力。
清楚地記得,聽(tīng)到鴻蒙一定開(kāi)源時(shí),我鼓了掌。一個(gè)面向未來(lái)的 OS 足夠有意義,一個(gè)可以與個(gè)人興趣相結(jié)合的機(jī)會(huì)太難得。于是,我結(jié)束了搖擺,不再浪費(fèi)時(shí)間,就這個(gè)了。
干了點(diǎn)啥
到 2020 年 9 月份真正開(kāi)源,這一年時(shí)間挺考驗(yàn)人啊。為了不耽誤功夫,也為了更加有的放矢地參與進(jìn)去,我跑到了 seL4 社區(qū),因?yàn)槁?tīng)說(shuō)是微內(nèi)核嘛,并且還是世界鼎鼎大名的。
說(shuō)起來(lái)也是有趣,這樣一個(gè)著名的、至少有二十年開(kāi)發(fā)歷史的項(xiàng)目,想找 Bug 也很容易!為此還結(jié)識(shí)了一位項(xiàng)目組的新朋友。
終于等到鴻蒙開(kāi)源了。說(shuō)實(shí)話,剛看到代碼時(shí)還是有失落的,因?yàn)槲覍?duì)嵌入式一無(wú)所知,和想象中的通用型操作系統(tǒng)不一樣。
大概踟躇了二十多天,飯要一口一口地吃,事要一件一件地做,十一過(guò)后才開(kāi)始全身心投入,直到現(xiàn)在。
01 閱讀源代碼
開(kāi)源的一大好處就是真理都擺在明面上,誰(shuí)有心都可以了解,掌握了就有發(fā)言權(quán)!
我的興趣點(diǎn)在內(nèi)核,于是用了大概三個(gè)月的時(shí)間,把 liteos-a 的大部分代碼都讀完了,期間做了很多注釋?zhuān)涗浟瞬簧贈(zèng)]看懂和有疑惑的地方,陸陸續(xù)續(xù)地這些記錄成了開(kāi)始真正貢獻(xiàn)的基礎(chǔ)。
02 提交 issue 和 pr
以前在參與別的社區(qū)各種各樣的項(xiàng)目時(shí),最多聽(tīng)到別人對(duì)我說(shuō)的回復(fù)是,“good catch”,“good eye”。
說(shuō)起來(lái)好笑,我擅長(zhǎng)挑別人的毛病!不管多有名,甚至是標(biāo)準(zhǔn)規(guī)范:-)有人對(duì)這類(lèi)偏 typo 問(wèn)題不以為然,對(duì)此我持正面看法:不認(rèn)真看不出來(lái)這些問(wèn)題;看了別人的東西,學(xué)了別人的成果,發(fā)現(xiàn)問(wèn)題不去說(shuō),不講究,也不足以表達(dá)對(duì)作者們辛勤勞動(dòng)的敬意和些許回報(bào)。
所以我的原則是,只要程序有錯(cuò)誤,會(huì)產(chǎn)生誤會(huì),不管大小,就是 Bug。當(dāng)然在提的時(shí)候是慎重的,因?yàn)楫吘故窃诮o精英大佬們挑刺。
為此,在這一過(guò)程中又有了另外一份收獲:獲取確鑿證據(jù)和信息。參與 OpenHarmony 大概一個(gè)月左右的時(shí)候,第一個(gè) pr 被采納了,這對(duì)我是個(gè)極大的鼓勵(lì)。
03 誤打誤撞 QEMU
之前從未接觸過(guò)嵌入式,也不懂硬件、驅(qū)動(dòng)。有限的 QEMU 經(jīng)驗(yàn)僅是依葫蘆描瓢地用,從沒(méi)想過(guò)與之有關(guān)的開(kāi)發(fā)。
今年初的時(shí)候,歐洲的一個(gè)孵化小組貢獻(xiàn)了 device_qemu 的初始代碼(注:我了解的 qemu 項(xiàng)目?jī)H限于 liteos-a 內(nèi)核部分),能夠帶起最小化的內(nèi)核態(tài)命令行。
這個(gè)最初的版本,幫助我驗(yàn)證了自己想提的一個(gè)問(wèn)題,我向他們表示了感謝,并順道問(wèn)了一個(gè)問(wèn)題。
就是這個(gè)問(wèn)題,讓我“深陷”其中,竟然成了 QEMU 項(xiàng)目現(xiàn)在主要的開(kāi)發(fā)者之一。
我問(wèn)的問(wèn)題是是否能實(shí)現(xiàn)用戶態(tài),他們的回答很委婉:還沒(méi)有時(shí)間來(lái)投入。大家知道,純內(nèi)核態(tài)的模擬能發(fā)揮的作用是很有限的。
繼續(xù)等人家現(xiàn)成的?有點(diǎn)不太得勁。我有時(shí)間,于是抱著試試的想法請(qǐng)教了缺什么,有沒(méi)有樣例。
現(xiàn)在想來(lái)那時(shí)真是連問(wèn)題都問(wèn)不出來(lái)。最后得到的信息就三字–CFI。
趕鴨子上架大家都聽(tīng)過(guò),那時(shí)我就是這個(gè)狀態(tài)。頭一周象無(wú)頭的蒼蠅一樣,找規(guī)范、搜代碼、翻書(shū)、認(rèn)識(shí)各種縮寫(xiě),猜、試…
第二周奇跡出現(xiàn)了,我寫(xiě)的一堆也不知是什么的東西有反應(yīng)了!之后就稍有點(diǎn)譜了,用 QEMU 源代碼校正錯(cuò)誤,與內(nèi)核對(duì)接接口。
大概一個(gè)月左右,在項(xiàng)目組、社區(qū)的鼓勵(lì)和幫助下,經(jīng)過(guò) raw 字符、塊設(shè)備、jffs2 格式等多個(gè)版本,終于成形了,順道還開(kāi)啟了用戶態(tài)模式。
就這樣誤打誤撞地 OpenHarmony 里有了我的幾百行!
04 做事情總要花時(shí)間,時(shí)間精力投入不少
OpenHarmony 是個(gè)龐大的項(xiàng)目,倉(cāng)庫(kù)眾多,關(guān)系復(fù)雜,代碼量巨大,想要參與其中自然更需要時(shí)間和精力。
我的情況有些特殊,是把這當(dāng)成了全職工作或說(shuō)是事業(yè),再加上本來(lái)技術(shù)積累與更新就不夠,深入進(jìn)去后更感到不懂不會(huì)的東西太多,因此切身體會(huì)到時(shí)間的寶貴。
好在興趣在其中,時(shí)間安排也自由,因此并不覺(jué)得累,相反能收獲快樂(lè)和友誼,也有一定的成就感。
幾點(diǎn)感受
01 開(kāi)源需要社區(qū)推動(dòng)
我這里想說(shuō)的是推動(dòng)而不是主導(dǎo),社區(qū)不是散沙,需要有強(qiáng)有力的主導(dǎo),而繁榮則需要社區(qū)廣泛的推動(dòng)。
一方面是人力的問(wèn)題,另一方面是廣泛受益的問(wèn)題。就以我參與的 QEMU 項(xiàng)目來(lái)說(shuō),一個(gè)顯著的問(wèn)題是官方有心但無(wú)精力。
從 OpenHarmony 代碼迭代速度、版本路標(biāo)就可看出來(lái),項(xiàng)目組很繁忙。多次看到他們?cè)诎胍沟臅r(shí)候提交代碼,以至于我都不太好意思再去打擾他們。
這樣龐大的系統(tǒng),區(qū)區(qū)百十來(lái)人,顯然有太多的事情照顧不過(guò)來(lái)。而我參與 QEMU 的初衷恰恰是因?yàn)槲易约合胗谩?/p>
正所謂眾人拾柴火焰高,OpenHarmony 搭出了一個(gè)大平臺(tái),各路神仙都可以在審慎評(píng)估的基礎(chǔ)上各顯其能,各取所需。
事物發(fā)展的初創(chuàng)期正是醞釀新的獨(dú)角獸、大神的良機(jī)。我愿意相信,共同的理想和認(rèn)知,能夠凝聚起強(qiáng)大的力量,推動(dòng)社區(qū)良性快速發(fā)展。
02 參與社區(qū)的最佳實(shí)踐是做
每個(gè)人參與的目的不同,關(guān)注點(diǎn)不同,利益訴求不同,但目標(biāo)都是相同的,伴隨著 Openharmony 發(fā)揚(yáng)光大。
那么在參與路徑上,我感到學(xué)習(xí)、研究、做,是有效的辦法。學(xué)習(xí)是為了了解掌握主干思路方法,研究是為了準(zhǔn)確、言之有物地發(fā)揮聰明才智,做則是順理成章地貢獻(xiàn)與獲取回報(bào)。
比如就從一個(gè)略顯簡(jiǎn)單的 issue 開(kāi)始,我甚至設(shè)想對(duì)稍微大一點(diǎn)的問(wèn)題從郵件列表開(kāi)始。
有時(shí)看到社區(qū)愛(ài)好者想使力卻發(fā)不出或不知如何發(fā)力的情形,我感到好像對(duì)開(kāi)源和社區(qū)的認(rèn)識(shí)還有些保守,或者說(shuō)是有顧慮。
實(shí)踐告訴我,持續(xù)地去做而不是只停留在說(shuō)上,不僅個(gè)人想法會(huì)實(shí)現(xiàn),社區(qū)也會(huì)感謝我們的付出。當(dāng)然參與過(guò)程中準(zhǔn)確了解社區(qū)準(zhǔn)則、貢獻(xiàn)流程等是必要的。
03 良好的社區(qū)文化還需每個(gè)人的努力
不得不承認(rèn),經(jīng)常與利益不直接掛勾的社區(qū)開(kāi)源文化,正成為推動(dòng)經(jīng)濟(jì)發(fā)展的重要?jiǎng)恿?。社區(qū)文化的逢勃發(fā)展,一定程度上反映出的是先進(jìn)性。
我感覺(jué)國(guó)內(nèi)開(kāi)源社區(qū)似乎是近兩年才火了起來(lái),對(duì)于如何參與社區(qū),如何組織社區(qū),如何共建社區(qū)仍是在摸索前進(jìn)中。
從這幾年轉(zhuǎn)過(guò)的國(guó)內(nèi)國(guó)外社區(qū)情況看,我感覺(jué)文化差異還是很大的,倒不是說(shuō)誰(shuí)好誰(shuí)不好,而是說(shuō)我們普遍的社區(qū)角色意識(shí)還有些模糊。
在 IRC 交流平臺(tái)上我也加過(guò)很多頻道,感覺(jué)到了一個(gè)明顯特點(diǎn):有熱心人、能與大牛對(duì)話、無(wú)用的調(diào)調(diào)少。
這樣的氛圍對(duì)于入門(mén)、探討、貢獻(xiàn)都容易進(jìn)行。所以,包括我自己在內(nèi)的每個(gè)參與者,還真的需要重視一下開(kāi)源和社區(qū)意識(shí),多一些工匠精神,多一些志愿者形象,多一些公眾角色。
04 客觀看待問(wèn)題障礙
鴻蒙懷抱遠(yuǎn)大理想而來(lái),卻是倉(cāng)促降生,套用一句話“時(shí)也運(yùn)也”。由于倉(cāng)促必不完美,因?yàn)椴煌昝辣厝粰C(jī)會(huì)多多。
鴻蒙說(shuō)是誕生已有五、六年了,但對(duì)于一個(gè)面向未來(lái)的操作系統(tǒng),這點(diǎn)時(shí)間太短了,并且目標(biāo)、條件可能都有變化和調(diào)整,期望看到的都是完美的這不現(xiàn)實(shí),反倒是壞了心境。
把這個(gè)問(wèn)題反過(guò)來(lái)看,如果一切都是完美的,那我還怎么可能成為 committer。
這么長(zhǎng)時(shí)間參與 OpenHarmony,我發(fā)現(xiàn)華為的精英們還是相當(dāng)謙虛的,這一點(diǎn)令我這沒(méi)有技術(shù)背景的小白非常敬佩。
那么我們遇挫、遇到障礙的時(shí)候,完全可以 issue、pr 等形式,拿出我們認(rèn)為更合適的解決方案來(lái)探討交流,僅僅泛泛而談可能與事無(wú)補(bǔ)。
device_qemu 項(xiàng)目啟動(dòng)已半年了,進(jìn)展仍很初步,中上層組件集成困難重重;OpenHarmony 的一些應(yīng)用框架、緊耦合等也頗受爭(zhēng)議…
我理解這都是發(fā)展中的問(wèn)題,要用發(fā)展的眼光去對(duì)待,社區(qū)中已有很多人在為此出謀劃策并實(shí)踐著。
3 月 11 日 OpenHarmony 發(fā)生了一件我認(rèn)為是里程碑式的事件–過(guò)程開(kāi)源,鴻蒙的團(tuán)隊(duì)和開(kāi)發(fā)開(kāi)始實(shí)時(shí)地呈現(xiàn)在公眾面前,從此我們有了與其一道去克服各種困難的可能。
最后,鴻蒙“初開(kāi)”,其路漫漫,心若有光,便不懼道阻且長(zhǎng)!
想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)