编者按:在 OpenHarmony 生态发展过程中,涌现了大批优秀的代码贡献者,本专题旨在表彰贡献、分享经验,文中内容来自嘉宾访谈,不代表 OpenHarmony 工作委员会观点。
OpenAtom OpenHarmony(以下简称“OpenHarmony”)是由开放原子开源基金会孵化及运营的开源项目,每一位开发者都可以基于 OpenHarmony 做开发。自成立以来,OpenHarmony 吸引了众多开发者的加入,现有 6 大开发者社区专区建设(CSDN、51CTO、开源中国、思否、电子发烧友、InfoQ,排名不分先后),104 个高校阵地(有组织者的高校)。发布的技术直播、视频课程、技术解读文章、开发者稿件等累计覆盖观众人数 2500 万人。
构建开源生态,需要让开发者先用起来,而这离不开各种类型、可提供各种功能需求的开发板。提供基础集成开发环境、软件源代码、硬件原理图,方便初学者快速地了解和学习 OpenHarmony 系统的硬件和软件知识,开发板是 OpenHarmony 开源生态建设中的重要一环。将 OpenHarmony 版本移植到 Hi3516DV300、rk3568 等多套开发板套件中的,正是熊磊及其团队。
本期 OpenHarmony 开发者故事,我们采访了 OpenHarmony 启动子系统的负责人,OpenHarmony PMC 委员会推举的“代码贡献月度之星”——熊磊。
熊磊和团队一起负责启动子系统的特性开发、产品定制、生态拓展和代码维护等工作。这个模块控制整个系统的启动管理,体系非常复杂,如此艰巨的任务,他们要如何完成?开发过程中,遇到典型的内存溢出难题,他们又是如何精准排查,并形成问题分析文档,后续防患于未然的?满满干货,不容错过!我们将专访内容整理如下,希望对你有所启发。
Q1 请熊磊简要介绍下自己和所带团队
大家好,我是熊磊,目前是 OpenHarmony 启动子系统的负责人。我和我的团队负责启动子系统的特性开发、产品定制、生态拓展和代码维护等工作。我对物联网、嵌入式、操作系统有着浓厚的兴趣,从事这个行业有12年的时间了。
Q2 作为开发领域知名的技术大牛,您最初为什么会选择加入OpenHarmony生态、参与开源共建呢?您认为,OpenHarmony项目最吸引人的点在哪里?
在移动操作系统领域,不管是 iOS,还是 Android,我们始终都是追随者。先是丰富 iOS 的应用市场,后来集成 Android 系统,与全世界一起共建 Android 生态,一直都在跟随别人的脚步前行。
我几年前听说 OpenHarmony 的时候,就希望能够参与进去开发我们自己的移动操作系统。如今能够有幸参与到 OpenHarmony 的生态共建中,也算是实现了当初的愿望。
OpenHarmony 吸引我的地方很多,从定位来看,它是一个创新的移动操作系统,令人振奋;从技术架构来看,它的模块化设计,也让人眼前一亮。我相信 OpenHarmony 新服务、新硬件、新交互的设计理念,将会给大家带来全新的体验。
Q3 这次您被OpenHarmony PMC委员会推举为“代码贡献月度之星”,意味着您对OpenHarmony项目的贡献已经属于业界顶尖水平,十分了不起!加入OpenHarmony这么短的时间却达成了这样好的效果,请问您的“秘诀”是什么?您是否方便从业务角度具体介绍一下,怎么才能让开发者更加满意,把开源共建做得更好?
没有什么”秘诀“啦,我一直相信兴趣是最好的老师,也是最大的动力。OpenHarmony 还处在起步阶段,尚有大量的工作需要完成。我非常荣幸能够在初始阶段就参加到这样一个事业中。我参与的模块,是系统的启动部分,负责整个系统的启动管理。它涉及到各子系统,而每个子系统又都有自己的诉求,整个体系非常复杂。肩负如此重要的任务,我压力不小,也动力十足。
OpenHarmony 作为一个年轻的 OS,需要吸引更多的开发者进行生态共建,才能更好地发展。项目组需要多倾听开发者的声音,了解大家的痛点和诉求,解决开发者参与共建过程中的现实问题。另外,做好 OpenHarmony 的宣传也很重要。开发者了解这个系统,对它产生兴趣了,就会愿意参与进来。
Q4 您和您的团队小伙伴,在参与OpenHarmony项目贡献(例如撰写 SIG DOCS)的过程中,一定有一些刻骨铭心/印象深刻的经历,比如文档被转载、被committer认可、被合并代码、被授予荣誉、被开发者夸赞之类。可以给我们分享一下吗?
每一次的 master 代码提交,都是非凡的体验。看到我们的努力成果,终于要合入主线了,内心既激动,又忐忑。
有时候,一个重大特性的合入,涉及的代码量会非常大。我和团队的小伙伴们,就需要每天晚上忙活很久,确保编译通过、设备能正常启动,并关注静态检查的告警。当我们看到已合入的标签时,才会如释重负,感觉所有的辛苦都很值得。
Q5 在整个开发进程中,您和您的团队遇到过哪些技术上或其他方面的难题呢?这些难题又是如何被逐一解决的?在这些难题被解决的过程中,您总结了哪些宝贵的经验or教训呢?
首先简单介绍下 OHOS 启动,init 组件负责处理从内核加载第一个用户态进程开始,到第一个应用程序启动之间的系统服务进程的启动过程。OHOS 启动简单的逻辑框架如下图 5-1 所示,其中 init 阶段主要负责启动引导管理、服务管理,以及系统、服务的配置项的管理等。
$$ 图 5-1 $$
我们在前期 init 提供的能力基础上,通过持续改进方案,不断增强能力、优化效率。例如增加进程频繁退出的抑制机制,增加支持应用、系统组件及芯片组件进程的沙盒运行环境,增加支持服务分组的配置、并行启动依赖的同步机制、可通过沙盒孵化的应用等,如下图 5-2 所示。
$$ 图 5-2 $$
我们各种各样的难题都遇到过,比较典型的是一个内存问题。当时,我跟团队里面的技术专家,一整天在远程电话会议讨论这个问题。大家群策群力,提出自己的想法并逐个排查验证,最后发现问题是另外一个流程里面的 malloc 内存空间访问越界所致。两个似乎完全不相关的流程,发生了内存踩踏的情况。问题得到解决后,我们进行了内部的复盘,并输出一份问题分析文档。
内存问题一旦出现,会很难排查,关键在于预防。所以一个良好的编码规范非常重要。只要有良好的编码习惯,就能有效规避内存的越界、溢出。后期,我们不定时在团队内部进行分享、总结,就是要确保同样的错误,绝不再犯。
Q6 加入OpenHarmony生态以来,您最大的惊喜是什么?或者有哪些具体的收获?
最大的喜悦是成功将 OpenHarmony 版本移植到多套开发板套件(Hi3516DV300、rk3568 等)中,为开发者提供了方便学习的开发环境。当看到开发者能将理论付诸实践,所有人共同开发、共同贡献,OpenHarmony 系统不断完善,心中的成就感难以言表。
此外,在这个过程中结识了很多朋友,参与不同的 SIG 组,学习到了很多新的知识,这些也都是收获。
Q7 您期待未来OpenHarmony哪些方面能够得到改善、提供更多支持?
我觉得性能方面有待提高,上手体验不是特别良好。OpenHarmony 的调试手段也比较缺乏,没有 trace。
Q8 OpenHarmony目前仍处在开发探索阶段,很多共建单位和生态伙伴还不清楚开源项目的玩法,或不如该如何着手进行开发。可以请您给大家分享一条,您认为最重要或最值得分享的心得吗?
重要的是多关注社区,多参与 SIG,多交流。现在网上的 OpenHarmony 资料,确实不是特别多,但代码都是开源的。社区有各种微信群,其中的绝大多数开发者也都是中国人,大家在沟通方面不会有任何困难。我相信共建单位和生态伙伴之间多多交流,一定会有非常大的收益。
Q9 开放性问题,可以畅所欲言,请问您还有什么掏心窝的话想告诉大家?
我这一路走来,从刚开始参与 OpenHarmony 时的不知所措,到如今在 OpenHarmony 社区贡献了大量的代码,是有苦也有甜。
OpenHarmony 从一开始的几十个仓,成长为现在的庞然大物。看到有越来越多的人在关注和了解 OpenHarmony,也有越来越多的人参与到系统的开发中来,我的内心有种自豪,因为我也是其中的一员。衷心祝愿 OpenHarmony 越来越好!