什么是开源?
开源兴起于软件行业,以开放、共享、协同为本质,成为众多科技公司和个人开发者的利器之一,而它在逐渐渗透到各个领域的同时也为技术创新提供了重要的渠道。如今,开源已经成为一股潮流,开源文化流行,开源项目层出不穷......
6 月 1 日,开放原子开源基金会正式发布 OpenHarmony 2.0 Canary,引起了众多开发者的关注。
OpenHarmony 是自主研发、不兼容安卓的全领域下一代开源操作系统。迄今为止,该项目已有 240 多位贡献者。
我参与 OpenHarmony 社区开发
我既非 IT 圈内人,也没有技术成就,竟然获得了声名响亮的鸿蒙开源社区的殊荣--OpenHarmony 第一位野生 committer,也就是在某些项目中有权去审查核准别人提交的代码了!
大家可能会认为一定是做了多么了不起的贡献...确实做了一些事,提交并被采纳了十数个补丁、千把行的代码;但如果你仔细看看,你会发现很平凡,不过如此而已...
没错,我也是这么认为的,但为什么就获得了殊荣呢?我以为是鼓励,但更重要的是,这就叫社区、开源--小白也可以由此实现人生价值!
为啥参与
做点有意义的事,能够在家人朋友面前,在老去的时候向孩子们吹吹牛,是个乐事,人之常情。
恰好几年前,我离开了原来的单位,面临着如何再选择的问题,那时也正是美国佬开始疯狂打压我们,国内深刻反思“缺芯少魂”的时候。
于是重新捡起了荒废已久的技术“特长”,乐此不疲地回归到了码农行列,再做点有意义的事!
前前后后转了几个国内与操作系统有关的社区,总的感觉是“淡”,新人不知如何入门,参与更是困难。
可能有我个人的因素,但总体感觉那时国内开源社区就是这样一个通常情况,似乎是近两年,“开源”、“贡献”、“社区”的氛围才开始深厚起来。
后来去国外的社区转,就当取经了,还真是在 Debian 社区收获了不少新认识。
清楚地记得,听到鸿蒙一定开源时,我鼓了掌。一个面向未来的 OS 足够有意义,一个可以与个人兴趣相结合的机会太难得。于是,我结束了摇摆,不再浪费时间,就这个了。
干了点啥
到 2020 年 9 月份真正开源,这一年时间挺考验人啊。为了不耽误功夫,也为了更加有的放矢地参与进去,我跑到了 seL4 社区,因为听说是微内核嘛,并且还是世界鼎鼎大名的。
说起来也是有趣,这样一个著名的、至少有二十年开发历史的项目,想找 Bug 也很容易!为此还结识了一位项目组的新朋友。
终于等到鸿蒙开源了。说实话,刚看到代码时还是有失落的,因为我对嵌入式一无所知,和想象中的通用型操作系统不一样。
大概踟躇了二十多天,饭要一口一口地吃,事要一件一件地做,十一过后才开始全身心投入,直到现在。
01 阅读源代码
开源的一大好处就是真理都摆在明面上,谁有心都可以了解,掌握了就有发言权!
02 提交 issue 和 pr
以前在参与别的社区各种各样的项目时,最多听到别人对我说的回复是,"good catch","good eye"。
说起来好笑,我擅长挑别人的毛病!不管多有名,甚至是标准规范:-)有人对这类偏 typo 问题不以为然,对此我持正面看法:不认真看不出来这些问题;看了别人的东西,学了别人的成果,发现问题不去说,不讲究,也不足以表达对作者们辛勤劳动的敬意和些许回报。
所以我的原则是,只要程序有错误,会产生误会,不管大小,就是 Bug。当然在提的时候是慎重的,因为毕竟是在给精英大佬们挑刺。
为此,在这一过程中又有了另外一份收获:获取确凿证据和信息。参与 OpenHarmony 大概一个月左右的时候,第一个 pr 被采纳了,这对我是个极大的鼓励。
03 误打误撞 QEMU
之前从未接触过嵌入式,也不懂硬件、驱动。有限的 QEMU 经验仅是依葫芦描瓢地用,从没想过与之有关的开发。
今年初的时候,欧洲的一个孵化小组贡献了 device_qemu 的初始代码(注:我了解的 qemu 项目仅限于 liteos-a 内核部分),能够带起最小化的内核态命令行。
这个最初的版本,帮助我验证了自己想提的一个问题,我向他们表示了感谢,并顺道问了一个问题。
我问的问题是是否能实现用户态,他们的回答很委婉:还没有时间来投入。大家知道,纯内核态的模拟能发挥的作用是很有限的。
继续等人家现成的?有点不太得劲。我有时间,于是抱着试试的想法请教了缺什么,有没有样例。
现在想来那时真是连问题都问不出来。最后得到的信息就三字--CFI。
赶鸭子上架大家都听过,那时我就是这个状态。头一周象无头的苍蝇一样,找规范、搜代码、翻书、认识各种缩写,猜、试...
第二周奇迹出现了,我写的一堆也不知是什么的东西有反应了!之后就稍有点谱了,用 QEMU 源代码校正错误,与内核对接接口。
大概一个月左右,在项目组、社区的鼓励和帮助下,经过 raw 字符、块设备、jffs2 格式等多个版本,终于成形了,顺道还开启了用户态模式。
就这样误打误撞地 OpenHarmony 里有了我的几百行!
04 做事情总要花时间,时间精力投入不少
OpenHarmony 是个庞大的项目,仓库众多,关系复杂,代码量巨大,想要参与其中自然更需要时间和精力。
我的情况有些特殊,是把这当成了全职工作或说是事业,再加上本来技术积累与更新就不够,深入进去后更感到不懂不会的东西太多,因此切身体会到时间的宝贵。
好在兴趣在其中,时间安排也自由,因此并不觉得累,相反能收获快乐和友谊,也有一定的成就感。
几点感受
01 开源需要社区推动
我这里想说的是推动而不是主导,社区不是散沙,需要有强有力的主导,而繁荣则需要社区广泛的推动。
一方面是人力的问题,另一方面是广泛受益的问题。就以我参与的 QEMU 项目来说,一个显著的问题是官方有心但无精力。
从 OpenHarmony 代码迭代速度、版本路标就可看出来,项目组很繁忙。多次看到他们在半夜的时候提交代码,以至于我都不太好意思再去打扰他们。
正所谓众人拾柴火焰高,OpenHarmony 搭出了一个大平台,各路神仙都可以在审慎评估的基础上各显其能,各取所需。
事物发展的初创期正是酝酿新的独角兽、大神的良机。我愿意相信,共同的理想和认知,能够凝聚起强大的力量,推动社区良性快速发展。
02 参与社区的最佳实践是做
每个人参与的目的不同,关注点不同,利益诉求不同,但目标都是相同的,伴随着 Openharmony 发扬光大。
那么在参与路径上,我感到学习、研究、做,是有效的办法。学习是为了了解掌握主干思路方法,研究是为了准确、言之有物地发挥聪明才智,做则是顺理成章地贡献与获取回报。
比如就从一个略显简单的 issue 开始,我甚至设想对稍微大一点的问题从邮件列表开始。
有时看到社区爱好者想使力却发不出或不知如何发力的情形,我感到好像对开源和社区的认识还有些保守,或者说是有顾虑。
实践告诉我,持续地去做而不是只停留在说上,不仅个人想法会实现,社区也会感谢我们的付出。当然参与过程中准确了解社区准则、贡献流程等是必要的。
03 良好的社区文化还需每个人的努力
不得不承认,经常与利益不直接挂勾的社区开源文化,正成为推动经济发展的重要动力。社区文化的逢勃发展,一定程度上反映出的是先进性。
从这几年转过的国内国外社区情况看,我感觉文化差异还是很大的,倒不是说谁好谁不好,而是说我们普遍的社区角色意识还有些模糊。
在 IRC 交流平台上我也加过很多频道,感觉到了一个明显特点:有热心人、能与大牛对话、无用的调调少。
这样的氛围对于入门、探讨、贡献都容易进行。所以,包括我自己在内的每个参与者,还真的需要重视一下开源和社区意识,多一些工匠精神,多一些志愿者形象,多一些公众角色。
04 客观看待问题障碍
鸿蒙怀抱远大理想而来,却是仓促降生,套用一句话“时也运也”。由于仓促必不完美,因为不完美必然机会多多。
鸿蒙说是诞生已有五、六年了,但对于一个面向未来的操作系统,这点时间太短了,并且目标、条件可能都有变化和调整,期望看到的都是完美的这不现实,反倒是坏了心境。
这么长时间参与 OpenHarmony,我发现华为的精英们还是相当谦虚的,这一点令我这没有技术背景的小白非常敬佩。
那么我们遇挫、遇到障碍的时候,完全可以 issue、pr 等形式,拿出我们认为更合适的解决方案来探讨交流,仅仅泛泛而谈可能与事无补。
device_qemu 项目启动已半年了,进展仍很初步,中上层组件集成困难重重;OpenHarmony 的一些应用框架、紧耦合等也颇受争议...
我理解这都是发展中的问题,要用发展的眼光去对待,社区中已有很多人在为此出谋划策并实践着。
3 月 11 日 OpenHarmony 发生了一件我认为是里程碑式的事件--过程开源,鸿蒙的团队和开发开始实时地呈现在公众面前,从此我们有了与其一道去克服各种困难的可能。
👇点击关注鸿蒙技术社区👇
了解鸿蒙一手资讯
点“阅读原文”了解更多
发表评论 取消回复