自去年 9 月 openEuler 操作系统宣布开源以来,其开源进展,尤其是社区生态的构建,时刻牵动着软件产业的关注和好奇。
从去年 12 月份其源代码正式上线后,所有关于服务器操作系统相关的代码、能力、文档在 openEuler 社区(链接:https://openeuler.org)全部进行了开放。随着这个新生开源社区不断发展,参与其中的开发者队伍也逐渐壮大起来。那么在开发者的眼中, openEuler 社区是否满足了他们的期待?开发者们究竟从开源社区获得了什么?为此,我们采访了参与 openEuler 社区的两位开发者,试图从他们的经历和感受中寻找答案。
作为 openEuler Infrastructure SIG Committer ,马俊杰在社区启动之初便投入其中,从事基础设施建设工作。Infrastructure 组负责社区中 2000 多个包的维护与管理。回顾在社区的 8 个月,马俊杰总结道:“这个过程,痛并快乐着。”
去年 9 月至 10 月,是马俊杰刚刚加入 openEuler 社区的时候,此时的社区还处于建设筹备阶段,很多功能尚待完善,比如维护人员在更新代码时缺乏代码审查机制;社区中每个软件包的详细信息还未做到充分的公开透明,只能通过 .spec 或 changelog 去猜测...... 马俊杰经常出入 oVirt、Istio 等发展相当完备的社区,openEuler 在一开始的表现无不令他抱怨。
“现在这些问题已经逐步得到解决,发起人经常会对我们这些参与者说,你们还有什么想吐槽的地方就尽管吐槽。而我们的意见也会得到及时的响应。所以,我觉得整个 openEuler 社区是很开放的,也在朝着非常健康的方向发展。”
在参与者的“抱怨”中,社区里的很多问题得到快速解决,马俊杰也开始了自己的尝试。在去年 10 月至 12 月这段时期,他将精力主要投入到社区治理方面,包括社区的贡献准则(contribution guidelines)、项目说明(project specification)的制定等。与此同时,他也在积极地参与到 go-gitee、ci-bot、Jenkins 等基础设施团队的建设工作中。
进入 2020 年,马俊杰开始在公司组建开源社区团队。起初,团队中的成员对开源及开源社区不太了解,于是他首先担起布道师的角色为大家讲解开源,并耐心教导他们如何使用 git、pull request 和 issue。由于 openEuler 是一个国际化社区,英语是社区的首选语言,因此帮助团队成员进行英文读写训练也成了他日常工作的一部分。此外,马俊杰还不忘鼓励每一个人去做博主,将自己的经验写下来,以此帮助更多的人。
待 5 个人的团队组建完毕,马俊杰开始带领团队成规模地为社区做贡献。他们组建起了社区第一个外部引入的 SIG 组——oVirt SIG。很快,其他参与者积极响应,越来越多的 SIG 组在 openEuler 社区里如雨后春笋般成立起来。
在积极参与各种 SIG 组之外,该团队还基于以往的产品研发经验,在 Shadow、PAM、protobuf、gRPC 等软件包中踊跃提交 issue 和 patch。在社区网站、博客进行经验传播也成了家常便饭...... 在社区开放的环境下,马俊杰觉得自己和团队能做的事情有很多。
由于工作变动,马俊杰从全职负责 openEuler 开源社区回归到了个人开发者参与其中。对此,他表示,“接下来我将更专注于社区基础设施的建设工作,另外,还会根据自身工作的特点贡献特定的软件包,并为更多加入到社区的参与者提供及时的帮助。”
作为一名程序员,马俊杰早期的工作内容并非原从业公司最核心的部分,尽管在编码阶段有不少付出,但并没有获得较大的成就感。在接触开源社区之后,他结识到了很多志同道合的朋友,大家一起写代码,一起为社区做贡献。对于他而言,做开源让他“实现了自我价值的超越”。
“能够从早期就参与到如此大规模的社区建设中,并且能够与来自华为、阿里及其他兄弟厂商的同事一起工作,是我特别喜欢的。”马俊杰由衷说道。在他看来,做开源能够与来自于全国乃至全世界的优秀工程师一起工作,非常具有吸引力。
对于“开源”这件事,马俊杰有自己的亲身经历和体会。在做了近三年的开源后,如今他也开始以布道者的身份带动更多的人参与其中。不过,谈及周围人对开源的认知,他还是感到有些无奈。
他坦言:“其实以前也经常宣传开源,但是大家的观念与自己不太一样。比如很多人觉得开源即免费,只要拿来包装成产品销售就可以,贡献开源没有价值;或者认为做开源只是为了个人,对公司毫无价值。甚至觉得做开源是不务正业,即使你用的是业余时间,也会认为你没有好好工作。”
在开源社区里,志同道合的人显得非常重要。所谓志同道合,无外乎是大家对“开源”这件事的看法一致。其中,openEuler 开源生态的负责人李永乐、技术架构组工程师李中华让马俊杰印象颇为深刻。这二人不仅在其参与社区治理、贡献代码的过程中给予了他很大的帮助,也为他参与开源带来了足够的信心。
“我们经常一起探讨如何做好 openEuler 社区,如何让更多的开发者或企业用户参与进来,也会相互鼓励。永乐和中华让我觉得开源这条路是可以做下去的,对我而言,他们不只是工作上的助力者,更在精神层面给予我支持。”
丁丽丽是一位接触开源社区不久的年轻女性开发者,她对此也深有感触。尽管还没有足够的技术沉淀和经验积累,但在 openEuler 社区中,她依然能很快找到自己的参与方式。“参与社区的形式是非常多样化的,并不是只有提交核心代码才算是贡献,而且一开始就着手向社区提交核心代码显然是有难度的,所以可以从社区文档方面着手。我刚开始参与社区就是先从社区文档、网站建设等方面提出自己的建议,后续才开始慢慢提交代码。社区中的李老师(李永乐)、马老师(马俊杰)对我提出的意见、提交的 PR(Pull Request)给予了很多帮助和鼓励。对于我自己来讲,参与社区是一个提升技能、扩展知识面的机会,我们的付出最终都会反哺到工作当中,提高效率。”
除此之外,openEuler 社区也给丁丽丽的生活带来了不小的改变。以前她每天”上班时努力完成领导布置的任务,下班后看看书、查阅一些资料”。在加入 openEuler 社区 之后,她每天打开电脑首先想到的是:社区里有没有新的 PR 被提出来;自己之前提交的 PR 有没有被合并,是否需要修改;今天又有哪位老师给了自己新的意见;自己为别人提供的意见有没有被采纳,如果没有,原因又是什么...... 用她的话来讲,“每天又多了一种期待”。也正是在这样的“期待”和社区参与者的帮助下,从今年 2 月至今,丁丽丽在短短三个月的时间里不仅成为了 openEuler 社区中活跃的参与者,其技术能力也得到了快速提升。
无论是有经验的开发者,还是初阶发者,他们都在积极拥抱开源,并在 openEuler 社区中找到了适合自己的成长路径。
从上述内容我们知道,尽管开源社区为参与者带来了诸多好处,但周围也不乏对“开源”抱有不同认知和理解的人。这并非个例。
对企业和开发人员来说,开源贡献同样具有重要意义。它能帮助企业建立自己的开源标准,同时能够吸引多样化人才,可以帮助开发人员丰富开发经验,提升个人能力。但事实上,如此明显的优势并没有吸引更多的开发人员从事这个行业。
在 CSDN 的《2019-2020 中国开发者调查报告》中,53% 开发者表示很少参与开源项目,但企业不支付工资,纯粹靠热爱“发电”的志愿投入也不少,占比达到 22%,而公司让全职参与的仅占 8%。
纵观 IT 行业这二十多年的发展,开源软件从黑客的“理想之国”,已经形成了一股推进计算机及相关行业不停进步的巨大力量。我们使用的计算机、手机、电视,甚至是小小的数码产品中都运行有开源软件,尤其是互联网服务器端软件,几乎全部都有开源软件的影子。而无论是大数据、区块链、人工智能还是物联网领域,其中最为重要的、最受欢迎的技术也都是开源的。但是尽管如此,还是有超过一半以上的国内开发者鲜少参与开源项目,这种情况多少都令人遗憾。
马俊杰表示:“其实贡献开源社区的难点不在于开发者能力不够,或者找不到贡献的点,而在于心中没有开源的思想。其实开源已经在重构整个 IT 产业了,我真的不认为在这个行业里,有谁做的工作和开源项目、开源代码没有一点关系。”
谈及为什么会选择 openEuler 社区并一直坚持到现在,马俊杰告诉 InfoQ:“不同于以前参加的其他社区,我感觉加入到 openEuler 社区相当于在从头做一个操作系统社区,你有很多地方可以做贡献,也有更多施展能力的空间,同时在社区的不同发展阶段,都能学习到丰富的知识。其实,在推动社区发展的同时,我们做的这些努力也会回馈到我们自身,这其实是一个相互促进、共同成长的过程。”
“开源社区是能让你快速成长,因为在开源社区里没有职业天花板,我对此深信不疑。”马俊杰谈到,以前自己的视野太窄,只看到公司产品使用的技术,接触的人也仅限于同事,对行业、技术、人脉的认知,会局限起来,公司在无形中成为自己的天花板。“但是当你进到开源社区,你是看不到天花板的,因为到处都是新的知识、新的技术,于是只想着要抓紧时间去学,这对于个人发展是非常有帮助的。”
作为开发者,只看到自己头顶上方的蓝天并不利于个人发展,开源社区能够提供更广阔的天空。马俊杰表示:“做开源社区不仅仅是写代码,还需要学会与不同的人打交道。很多开发者可能平时在公司坐一天都说不了几句话。但是在社区里,如何跟来自世界各地、有不同文化背景的人交流,如何提意见能让大家都愿意回答你,而不是每天一看到你就烦...... 其实这些都是需要积累,很多程序员恰恰缺乏这种能力。”
退一步讲,对个人开发者而言,有一句话叫“开源社区是程序员最好的简历”。“说的更功利和直白一点,随着开源社区在国内开始蓬勃发展,我相信大家都能通过贡献开源社区拿到一个更好的 offer。现在很多招聘职位中会有‘开源社区贡献’一项,这对应聘是很大的加分项。”
对此,作为资深的参与者,马俊杰给出了如下几点中肯的建议:
1、多学多看,先从“小事”做起。他表示:“参与社区并非写出一个模块才算贡献。新加入的开发者可以从看文档、改文档里的错别字开始,从安装 openEuler、把安装时的 Bug 提交给社区开始,在积累自身能力之后,一定找到合适自己的 SIG 组去贡献代码。openEuler 社区成立不到四个月,还有很大的发展空间,这也意味着开发者有很多领域可以参与进来,能做的事也非常多。”
2、对于新人而言,如果实在不知道怎么去贡献,可以从到上游社区搬 patch(补丁)到 openEuler 社区开始。“这是非常有价值的,比如 openEuler 有一个名为‘A’软件包的 1.0.0 版本,但是该版本有一个严重的安全漏洞,在最新的 1.0.1 版本中解决。如果没有人将 1.0.1 版本的 patch“搬”到 openEuler 社区,那么所有用了 1.0.0 版本的 openEuler 用户,将面临巨大的安全风险。"
3、对开发者而言,“搬 patch”最终的目的是要对自己搬的 patch 非常了解,能在代码层面有比较深刻的认识,能清楚地知道它是如何解决问题的。在这之后,马俊杰建议开发者可以尝试给上游社区提 patch。他表示:“当提交的 patch 在上游社区合并后,开发者可以再把这个 patch 再搬到 openEuler 社区中,因为 openEuler 社区的理念是‘Upstream first’,即上游社区优先。”
丁丽丽也结合自身的实践建议:“在 openEuler 社区最重要的是勇于参与,不要担心自己会犯错。在尊重他人劳动成果的前提下,有什么问题或意见可以随时提出来,社区的人都很友好,大家会很快速地帮你解决。另外在 openEuler 社区推荐使用英文,所以大家也需要好好学习英文。”
“目前我们可以看到 openEuler 社区有 2000 多个包,未来肯定会更加完善,规模也将越来越大。无论是社区理念、氛围、还是协作模式,整体都在朝着一个健康的方向发展,我个人是对 openEuler 社区寄予厚望的。”马俊杰在采访最后如是说道。
其实,在开发者真正拥抱开源的同时,一个开放、多样且极具成长空间的开源社区不该被错过,它将为开发者回馈更大的价值。无论是 openEuler 社区,还是参与其中的众多开发者,相信都能在良性的互动中,相互促进,获得快速且长足的发展。
点个在看少个 bug 👇