如何優雅地參與開源貢獻,向頂級開源項目提交 PR(Pull Request)。戰“碼”先鋒直播間第八期圍繞“OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)開源貢獻”話題,邀請了深圳開鴻數字產業發展有限公司(以下簡稱“深開鴻”)資深OS框架開發工程師巴延興為大家帶來《如何多方位參與OpenHarmony開源貢獻》主題分享。
本次分享主要介紹了巴延興帶領深開鴻開源共建團隊在主導/共建16個SIG、貢獻超過50萬行代碼的OpenHarmony “戰碼”經驗,在根技術、垂直領域、生態擴展等多方位參與開源貢獻的實踐與思考,以及輔助工具SIG和內核SIG兩大板塊的貢獻方式、價值與用途,希望有更多開發者參與開源共建。
參與戰“碼”先鋒,PR征集令!感興趣的開發者可以在Gitee的OpenHarmony代碼倉提交PR參與活動,和全球開發者同臺競技,比拼技藝,為OpenHarmony生態建設貢獻力量。
如何通過SIG進行開源貢獻
什么是SIG? SIG全稱Special Interest Group,即特別興趣小組,專注一個特定的技術領域,負責該領域技術競爭力分析和關鍵技術識別及決策,引領技術演進的方向,也是共建單位及個人開發者進行開源貢獻的基本單位。 通過SIG組參與開源共建的兩種方式 一、參與到已有SIG的共建參與者需要注冊自己的官方賬號,簽訂協議后,才能通過認領SIG leader發布的需求來承接共建任務。領完需求后是標準的開發過程,包括需求分析、功能設計、代碼開發、功能測試、功能交付等步驟;任務開發完成后,需要提交PR,將代碼、文檔等提交到社區,完成最終的開源貢獻。
二、主導SIG組
1、成立SIG
選取共建技術領域并給出規劃 → 向PMC例會提交議題并通過評審 → 通過架構SIG例會評估后建立新的代碼倉。
2、孵化SIG
啟動需求澄清、特性梳理方案設計、代碼開發、單元測試、功能測試等流程,完成SIG項目開發 → 對照Check List,完成法務、門禁、OAT等問題自檢。
3、畢業SIG
向架構SIG申請新SIG畢業 → 向QA SIG會申請新SIG準出 → 倉庫owner移倉。
輔助工具SIG實踐經驗分享
成立輔助工具SIG組的宗旨是“降低重復勞動,提高工作效率,讓專業的人做專業的事”。NAPI框架代碼生成工具、IDL轉換工具和開機動畫工具都是圍繞著這個宗旨開發而成的。
一、NAPI框架代碼生成工具
NAPI是標準設備上的JS API實現方式,實現了JS語言到框架C++層的調用,在OpenHarmony系統中,APP調用是調用JS語言的接口函數,最終具體功能是用C++語言來實現。
NAPI存在三個開發痛點需要解決:
1、NAPI框架代碼的重復率高:面對不同的JS接口,開發者要實現相似度高的框架代碼。
2、NAPI框架的學習成本高:框架機制涉及JavaScript、C++語言,以及編譯腳本工具。
3、NAPI 需求量大:OpenHarmony系統功能均是通過NAPI接口體現,目前已經支持1萬多個NAPI接口。
針對以上三個痛點,NAPI框架代碼生成工具將C++ 、JavaScript接口類型轉換等代碼抽取公共模塊,并且自動生成編譯腳本。開發者使用工具自動生成NAPI框架代碼,只需實現業務代碼調用即可,避免了大量重復的工作。
二、IDL轉換工具
OpenHarmony使用的是HDF驅動框架,驅動相應的硬件信息需要IDL文件來描述。
IDL存在兩大開發痛點需要解決:
1 、HDI開發難度大:HDI開發者比較熟悉C語言,習慣在.h文件中定義HDI接口,而對于IDL文件結構、語法并不是很熟悉,學習曲線相對較長。
2、HDI工作量大:HDI接口是驅動對外提供服務的必要條件,各個子系統均涉及,故HDI工作量較大。
針對以上痛點,深開鴻設計的IDL轉換工具將開發者熟悉的.h文件自動轉換為idl文件,開發者只需要在頭文件中定義自己的接口即可,工具自動實現.h頭文件到IDL文件轉換,開發者不需要關心IDL語法,大大降低工作量。
三、開機動畫工具
開機動畫工具是我們早期針對OpenHarmony2.0版本存在的問題做的一個輔助工具。
OpenHarmony2.0版本在開機動畫方面有兩個問題:
1、OpenHarmony2.0版本開機動畫只支持raw文件,不利于開發者在發行版和定制版進行直接展現。
2、因為產品的形態不一,對于不同的產品,其開機動畫的需求也是不同。
通過開機動畫輔助工具使以上兩個問題得到了更好地解決:
1、開機動畫工具支持圖片集或者 mp4等多種文件生成開機動畫,且支持設置開機動畫的分辨率等操作,更加方便開機動畫的制作。
2、做到一鍵生成開機動畫文件,并且支持在 windows平臺上查看其效果,不需要每次都去燒錄到開發板上,大大降低了演示的工作量。
四、輔助工具SIG共建方向
目前深開鴻主導的輔助工具SIG組主要提供給開發者文檔資料、測試用例和工具開發3個共建方向。
如果你擅長文檔編撰,那么可以參與到社區的文檔貢獻,撰寫文檔可以不需要有很強的開發能力。
如果你是測試人員,擅長自動化測試,那么通過測試用例也可以參與到社區的建設。
另外也歡迎各位開發者參與到各種工具的建設中來。SIG組的工具可以是獨立的工具,也可以通過插件的方式集成到IDE開發軟件中。
五、參與輔助工具SIG貢獻的具體方式
1、提交問題單。無論是文檔的bug、測試用例的bug、還是代碼的bug,提交了問題單就是對社區做了貢獻,那么輔助工具SIG組如何提交問題單呢?
首先找到對應的倉庫并登錄,例如https://gitee.com/openharmony/napi_generator/issues。
提交過程中要注意格式要求,必須寫清楚提單過程中問題出現的條件,預期的結果和錯誤的結果,問題的定位信息等,有了這些信息后,領取這個問題單的開發也方便定位問題。
登錄找到想要認領的問題單的頁面,在評論中表達出想要承接這個需求的意愿,SIG的負責人會定期跟蹤這些問題單并做出答復。
2、認領需求后進行開發流程
領到一個需求后要進行正常的開發,核心分為以下6步:
①通常開發者已經配置好配置碼云賬號、個人郵箱和簽署DCO(簽署DCO主要是保證貢獻者原創),有了這些前置工作以后,我們可以操作代碼倉庫進行需求的開發。
②Fork代碼到私倉。
③克隆fork出來的倉庫到自己的主機上。
④在本地開發代碼開發和功能驗證。
⑤開發完畢后向官方原始倉提交Pull Request,提交代碼后會觸發門禁等常規檢查。
⑥如果這個sig組是你自己主導的,那么作為Committer,需要評審別人提交的代碼,如果只是參與共建,提交完代碼通過門禁就完成任務。
內核SIG參與共建經驗
關于深開鴻內核SIG共建經驗,下面將以文件系統的優化為實例向大家分享具體的貢獻過程。
內核共建的方向比較多,體系架構有各個硬件平臺的移植,內核模塊中功耗管理、時間管理、任務調度、中斷管理、文件系統、三方庫相關的內核shell命令移植,目前深開鴻主要在文件系統和第三方庫方面做社區共建。深開鴻希望將來展開更多方向的優化工作,并向外提供具體場景下內核系統移植方案。
littlefs文件系統的共建過程:
1、了解社區需求,社區目前對littlefs文件系統隨機讀寫的速度不滿意。
2、了解到社區文件系統對隨機讀寫需求的前提下,對littlefs隨機讀寫IO性能瓶頸進行分析,找到能優化的代碼點,采用了“以空間換時間”的思路。
3、采用逐步優化的思路,明確方案后和社區負責人溝通,得到了社區負責人認可后,展開具體的代碼工作。
由于文件系統優化是一個比較復雜的過程,下面分享了一套社區共建流程。
1、從社區認領需求后,通過微信群的方式和社區負責人溝通并澄清需求。
2、從技術上分析需求并制定優化方案,再次和社區負責人溝通,做方案討論并得到認可。
3、具體任務開發,包括任務拆解、編碼實現、測試,最后提交PR。
針對littlefs文件系統優化過程中修改涉及到的相關文件,包括littlefs文件代碼,也就是點c和點h文件;也有編譯相關的文件,即.gn文件gni文件,之所以修改編譯相關的文件是為了測試littlefs的優化后的代碼,我們團隊增加了相關的測試用例,這些測試用例會調用內核文件系統的API,涉及到這些編譯相關的文件。
littlefs第三方庫代碼完成后提交到社區的過程
1、littlefs第三方庫repository路徑,并fork到用戶倉庫。
2、git clone用戶倉到本地。
3、提交修改到用戶倉。
4、點擊提交PR。
5、填寫PR單,PR單頁需要按照既定模板填寫,寫清楚原始需求,如何解決這個問題,怎么解決這個問題以及具體修改點。
6、在評論中添加“start build”點亮PR。這里有一個特別注意的點,需要在評論中是手動填寫“start build”這2個英文單詞,目的是觸發后續的門禁檢測。這是OpenHarmony社區比較特別的一點,其它開源項目中所沒有的。
歡迎感興趣的開發者多方位參與OpenHarmony開源貢獻,成為OpenHarmony Contributor,也歡迎各位提出寶貴的意見,為OpenHarmony貢獻一份力量。
參與戰“碼”先鋒,PR 征集令!在Gitee的OpenHarmony代碼倉提交PR參與活動,和全球的開發者一起共建OpenHarmony的繁榮生態!
文章中涉及的鏈接匯總:
NAPI框架代碼生成工具代碼倉地址:
https://gitee.com/openharmony/napi_generator
IDL轉換工具代碼倉地址:
https://gitee.com/openharmony/drivers_hdf_core/tree/master/framework/tools/idl-gen
開機動畫工具代碼倉地址:
https://gitee.com/openharmony/graphic_graphic_2d/tree/master/frameworks/bootanimation/data/bootanimation_tool
審核編輯 :李倩
-
開源
+關注
關注
3文章
3419瀏覽量
42762 -
代碼
+關注
關注
30文章
4841瀏覽量
69169
原文標題:30分鐘成為Contributor|如何多方位參與OpenHarmony開源貢獻?
文章出處:【微信號:gh_e4f28cfa3159,微信公眾號:OpenAtom OpenHarmony】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
開源鴻蒙OpenHarmony社區運營報告(2025年1月)
![<b class='flag-5'>開源</b>鴻蒙OpenHarmony社區運營報告(2025年1月)](https://file1.elecfans.com/web2/M00/8F/50/wKgZomTMciWAD54NAABOGP2pQZY452.png)
CCF開源創新大賽決賽結果發布!OpenHarmony應用開發賽道盡展風采
![CCF<b class='flag-5'>開源</b>創新大賽決賽結果發布!OpenHarmony應用開發賽道盡展風采](https://file.elecfans.com/web2/M00/35/6C/poYBAGIq5qqAQJzlAAA5OpNWiJA439.png)
星光璀璨,聆聽 OpenHarmony 貢獻者之聲
迅龍軟件OrangePi?5 Plus順利通過開放原子開源基金會XTS認證
![迅龍軟件OrangePi?5 Plus順利<b class='flag-5'>通過</b>開放原子<b class='flag-5'>開源</b>基金會XTS認證](https://file1.elecfans.com/web2/M00/05/C6/wKgZombepWqAG5vXAABsbp2d5sQ756.png)
英特爾中國開源技術委員會成立一周年
10萬獎金池!CCF開源創新大賽-OpenHarmony應用開發大賽,等你來戰!
![10萬獎金池!CCF<b class='flag-5'>開源</b>創新大賽-OpenHarmony應用開發大賽,等你來戰!](https://file.elecfans.com/web2/M00/35/6C/poYBAGIq5qqAQJzlAAA5OpNWiJA439.png)
新思科技宣布出售SIG業務
新思科技宣布以21億美元售SIG部門
新思科技將以超20億美元出售SIG部門
迅龍軟件加入開放原子開源基金會和OpenHarmony?項目,共建開源新生態
![迅龍軟件加入開放原子<b class='flag-5'>開源</b>基金會和OpenHarmony?項目,共建<b class='flag-5'>開源</b>新生態](https://file1.elecfans.com/web2/M00/DE/EC/wKgZomYwvtKASKMrAAB9ENBPsoM725.png)
深開鴻升為OpenHarmony項目群A類捐贈人,引領開源生態新篇章!
![深開鴻升為OpenHarmony項目群A類捐贈人,引領<b class='flag-5'>開源</b>生態新篇章!](https://file.elecfans.com/web2/M00/35/6C/poYBAGIq5qqAQJzlAAA5OpNWiJA439.png)
評論