我是如何成为首位OpenHarmony野生Committer的?

系统
6 月 1 日,开放原子开源基金会正式发布 OpenHarmony 2.0 Canary,引起了众多开发者的关注。在这众多的代码贡献者中,一位名叫“老凯”的开发者备受关注。

[[410194]]

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

什么是开源?

开源兴起于软件行业,以开放、共享、协同为本质,成为众多科技公司和个人开发者的利器之一,而它在逐渐渗透到各个领域的同时也为技术创新提供了重要的渠道。如今,开源已经成为一股潮流,开源文化流行,开源项目层出不穷…

[[410195]]

6 月 1 日,开放原子开源基金会正式发布 OpenHarmony 2.0 Canary,引起了众多开发者的关注。

OpenHarmony 是自主研发、不兼容安卓的全领域下一代开源操作系统。迄今为止,该项目已有 240 多位贡献者。

在这众多的代码贡献者中,一位名叫“老凯”的开发者备受关注。

他是首位晋升为 OpenHarmony 开源项目 Committer 的野生开发者,下文来自老凯,一起来探究他是如何一步步成为 OpenHarmony 开发者的吧。

[[410196]]

我参与 OpenHarmony 社区开发

我既非 IT 圈内人,也没有技术成就,竟然获得了声名响亮的鸿蒙开源社区的殊荣–OpenHarmony 第一位野生 committer,也就是在某些项目中有权去审查核准别人提交的代码了!

大家可能会认为一定是做了多么了不起的贡献…确实做了一些事,提交并被采纳了十数个补丁、千把行的代码;但如果你仔细看看,你会发现很平凡,不过如此而已…

没错,我也是这么认为的,但为什么就获得了殊荣呢?我以为是鼓励,但更重要的是,这就叫社区、开源–小白也可以由此实现人生价值!

为啥参与

做点有意义的事,能够在家人朋友面前,在老去的时候向孩子们吹吹牛,是个乐事,人之常情。

恰好几年前,我离开了原来的单位,面临着如何再选择的问题,那时也正是美国佬开始疯狂打压我们,国内深刻反思“缺芯少魂”的时候。

很自然地,我把目标瞄准了这个方向。既然有闲还有点小钱,为什么不选择既喜欢又有意义的事情去做呢。

[[410197]]

于是重新捡起了荒废已久的技术“特长”,乐此不疲地回归到了码农行列,再做点有意义的事!

前前后后转了几个国内与操作系统有关的社区,总的感觉是“淡”,新人不知如何入门,参与更是困难。

可能有我个人的因素,但总体感觉那时国内开源社区就是这样一个通常情况,似乎是近两年,“开源”、“贡献”、“社区”的氛围才开始深厚起来。

后来去国外的社区转,就当取经了,还真是在 Debian 社区收获了不少新认识。

2019 年特朗普给我介绍了一个机会:来鸿蒙吧。全程观看了鸿蒙的首次亮相演说,畅想的愿景,描绘的蓝图,对我产生了很大的吸引力。

[[410198]]

清楚地记得,听到鸿蒙一定开源时,我鼓了掌。一个面向未来的 OS 足够有意义,一个可以与个人兴趣相结合的机会太难得。于是,我结束了摇摆,不再浪费时间,就这个了。

干了点啥

到 2020 年 9 月份真正开源,这一年时间挺考验人啊。为了不耽误功夫,也为了更加有的放矢地参与进去,我跑到了 seL4 社区,因为听说是微内核嘛,并且还是世界鼎鼎大名的。

说起来也是有趣,这样一个著名的、至少有二十年开发历史的项目,想找 Bug 也很容易!为此还结识了一位项目组的新朋友。

终于等到鸿蒙开源了。说实话,刚看到代码时还是有失落的,因为我对嵌入式一无所知,和想象中的通用型操作系统不一样。

大概踟躇了二十多天,饭要一口一口地吃,事要一件一件地做,十一过后才开始全身心投入,直到现在。

01 阅读源代码

开源的一大好处就是真理都摆在明面上,谁有心都可以了解,掌握了就有发言权!

我的兴趣点在内核,于是用了大概三个月的时间,把 liteos-a 的大部分代码都读完了,期间做了很多注释,记录了不少没看懂和有疑惑的地方,陆陆续续地这些记录成了开始真正贡献的基础。

[[410199]]

02 提交 issue 和 pr

以前在参与别的社区各种各样的项目时,最多听到别人对我说的回复是,“good catch”,“good eye”。

说起来好笑,我擅长挑别人的毛病!不管多有名,甚至是标准规范:-)有人对这类偏 typo 问题不以为然,对此我持正面看法:不认真看不出来这些问题;看了别人的东西,学了别人的成果,发现问题不去说,不讲究,也不足以表达对作者们辛勤劳动的敬意和些许回报。

所以我的原则是,只要程序有错误,会产生误会,不管大小,就是 Bug。当然在提的时候是慎重的,因为毕竟是在给精英大佬们挑刺。

为此,在这一过程中又有了另外一份收获:获取确凿证据和信息。参与 OpenHarmony 大概一个月左右的时候,第一个 pr 被采纳了,这对我是个极大的鼓励。

03 误打误撞 QEMU

之前从未接触过嵌入式,也不懂硬件、驱动。有限的 QEMU 经验仅是依葫芦描瓢地用,从没想过与之有关的开发。

今年初的时候,欧洲的一个孵化小组贡献了 device_qemu 的初始代码(注:我了解的 qemu 项目仅限于 liteos-a 内核部分),能够带起最小化的内核态命令行。

这个最初的版本,帮助我验证了自己想提的一个问题,我向他们表示了感谢,并顺道问了一个问题。

就是这个问题,让我“深陷”其中,竟然成了 QEMU 项目现在主要的开发者之一。

[[410200]]

我问的问题是是否能实现用户态,他们的回答很委婉:还没有时间来投入。大家知道,纯内核态的模拟能发挥的作用是很有限的。

继续等人家现成的?有点不太得劲。我有时间,于是抱着试试的想法请教了缺什么,有没有样例。

现在想来那时真是连问题都问不出来。最后得到的信息就三字–CFI。

赶鸭子上架大家都听过,那时我就是这个状态。头一周象无头的苍蝇一样,找规范、搜代码、翻书、认识各种缩写,猜、试…

第二周奇迹出现了,我写的一堆也不知是什么的东西有反应了!之后就稍有点谱了,用 QEMU 源代码校正错误,与内核对接接口。

大概一个月左右,在项目组、社区的鼓励和帮助下,经过 raw 字符、块设备、jffs2 格式等多个版本,终于成形了,顺道还开启了用户态模式。

就这样误打误撞地 OpenHarmony 里有了我的几百行!

04 做事情总要花时间,时间精力投入不少

OpenHarmony 是个庞大的项目,仓库众多,关系复杂,代码量巨大,想要参与其中自然更需要时间和精力。

我的情况有些特殊,是把这当成了全职工作或说是事业,再加上本来技术积累与更新就不够,深入进去后更感到不懂不会的东西太多,因此切身体会到时间的宝贵。

好在兴趣在其中,时间安排也自由,因此并不觉得累,相反能收获快乐和友谊,也有一定的成就感。

几点感受

01 开源需要社区推动

我这里想说的是推动而不是主导,社区不是散沙,需要有强有力的主导,而繁荣则需要社区广泛的推动。

一方面是人力的问题,另一方面是广泛受益的问题。就以我参与的 QEMU 项目来说,一个显著的问题是官方有心但无精力。

从 OpenHarmony 代码迭代速度、版本路标就可看出来,项目组很繁忙。多次看到他们在半夜的时候提交代码,以至于我都不太好意思再去打扰他们。

这样庞大的系统,区区百十来人,显然有太多的事情照顾不过来。而我参与 QEMU 的初衷恰恰是因为我自己想用。

[[410201]]

正所谓众人拾柴火焰高,OpenHarmony 搭出了一个大平台,各路神仙都可以在审慎评估的基础上各显其能,各取所需。

事物发展的初创期正是酝酿新的独角兽、大神的良机。我愿意相信,共同的理想和认知,能够凝聚起强大的力量,推动社区良性快速发展。

02 参与社区的最佳实践是做

每个人参与的目的不同,关注点不同,利益诉求不同,但目标都是相同的,伴随着 Openharmony 发扬光大。

那么在参与路径上,我感到学习、研究、做,是有效的办法。学习是为了了解掌握主干思路方法,研究是为了准确、言之有物地发挥聪明才智,做则是顺理成章地贡献与获取回报。

比如就从一个略显简单的 issue 开始,我甚至设想对稍微大一点的问题从邮件列表开始。

有时看到社区爱好者想使力却发不出或不知如何发力的情形,我感到好像对开源和社区的认识还有些保守,或者说是有顾虑。

实践告诉我,持续地去做而不是只停留在说上,不仅个人想法会实现,社区也会感谢我们的付出。当然参与过程中准确了解社区准则、贡献流程等是必要的。

03 良好的社区文化还需每个人的努力

不得不承认,经常与利益不直接挂勾的社区开源文化,正成为推动经济发展的重要动力。社区文化的逢勃发展,一定程度上反映出的是先进性。

我感觉国内开源社区似乎是近两年才火了起来,对于如何参与社区,如何组织社区,如何共建社区仍是在摸索前进中。

[[410202]]

从这几年转过的国内国外社区情况看,我感觉文化差异还是很大的,倒不是说谁好谁不好,而是说我们普遍的社区角色意识还有些模糊。

在 IRC 交流平台上我也加过很多频道,感觉到了一个明显特点:有热心人、能与大牛对话、无用的调调少。

这样的氛围对于入门、探讨、贡献都容易进行。所以,包括我自己在内的每个参与者,还真的需要重视一下开源和社区意识,多一些工匠精神,多一些志愿者形象,多一些公众角色。

04 客观看待问题障碍

鸿蒙怀抱远大理想而来,却是仓促降生,套用一句话“时也运也”。由于仓促必不完美,因为不完美必然机会多多。

鸿蒙说是诞生已有五、六年了,但对于一个面向未来的操作系统,这点时间太短了,并且目标、条件可能都有变化和调整,期望看到的都是完美的这不现实,反倒是坏了心境。

把这个问题反过来看,如果一切都是完美的,那我还怎么可能成为 committer。

这么长时间参与 OpenHarmony,我发现华为的精英们还是相当谦虚的,这一点令我这没有技术背景的小白非常敬佩。

那么我们遇挫、遇到障碍的时候,完全可以 issue、pr 等形式,拿出我们认为更合适的解决方案来探讨交流,仅仅泛泛而谈可能与事无补。

device_qemu 项目启动已半年了,进展仍很初步,中上层组件集成困难重重;OpenHarmony 的一些应用框架、紧耦合等也颇受争议…

我理解这都是发展中的问题,要用发展的眼光去对待,社区中已有很多人在为此出谋划策并实践着。

3 月 11 日 OpenHarmony 发生了一件我认为是里程碑式的事件–过程开源,鸿蒙的团队和开发开始实时地呈现在公众面前,从此我们有了与其一道去克服各种困难的可能。

最后,鸿蒙“初开”,其路漫漫,心若有光,便不惧道阻且长!

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

 

责任编辑:jianghua 来源: 鸿蒙社区
相关推荐

2022-09-23 17:10:01

首席信息安全官安全团队

2013-10-12 09:56:51

大数据NoSQLMongoDB

2019-07-29 11:25:23

架构师架构方案架构

2012-03-21 12:57:29

JavaJettyServlet

2012-04-06 14:20:00

DEKRA

2023-08-29 23:50:48

2015-09-01 09:53:04

Java Web开发者

2019-09-05 19:56:23

开发编程程序

2022-08-18 14:54:00

安全首席信息安全官信息安全

2022-10-19 13:43:42

CocosOpenHarmon3D游戏引擎

2023-03-21 17:06:24

树莓派路由器

2020-07-13 07:49:45

程序员Java

2015-06-04 11:31:36

程序员12周内

2015-08-10 14:56:31

Google

2017-02-27 16:22:52

2011-09-06 09:59:58

VMware云计算虚拟化

2020-07-19 14:56:28

安全 信息安全数据信息

2021-08-07 07:23:08

Webpack中间件模型

2021-06-06 16:05:31

OpenHarmony
点赞
收藏

51CTO技术栈公众号