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