21

开源社区对开发者的价值到底有多大?

 4 years ago
source link: https://www.infoq.cn/article/zP9erqJmIK6IAWfUHBoW
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

自去年 9 月 openEuler 操作系统宣布开源以来,其开源进展,尤其是社区生态的构建,时刻牵动着软件产业的关注和好奇。

从去年 12 月份其源代码正式上线后,所有关于服务器操作系统相关的代码、能力、文档在 openEuler 社区( 链接 )全部进行了开放。随着这个新生开源社区不断发展,参与其中的开发者队伍也逐渐壮大起来。那么在开发者的眼中, openEuler 社区是否满足了他们的期待?开发者们究竟从开源社区获得了什么?为此,我们采访了参与 openEuler 社区的两位开发者,试图从他们的经历和感受中寻找答案。

f6Jr2yY.png!web

在 openEuler 社区的 8 个月

作为 openEuler Infrastructure SIG Committer ,马俊杰在社区启动之初便投入其中,从事基础设施建设工作。Infrastructure 组负责社区中 2000 多个包的维护与管理。回顾在社区的 8 个月,马俊杰总结道:“这个过程,痛并快乐着。”

抱怨(2019.9-2019.10)

去年 9 月至 10 月,是马俊杰刚刚加入 openEuler 社区的时候,此时的社区还处于建设筹备阶段,很多功能尚待完善,比如维护人员在更新代码时缺乏代码审查机制;社区中每个软件包的详细信息还未做到充分的公开透明,只能通过 .spec 或 changelog 去猜测… 马俊杰经常出入 oVirt、Istio 等发展相当完备的社区,openEuler 在一开始的表现无不令他抱怨。

“现在这些问题已经逐步得到解决,发起人经常会对我们这些参与者说,你们还有什么想吐槽的地方就尽管吐槽。而我们的意见也会得到及时的响应。所以,我觉得整个 openEuler 社区是很开放的,也在朝着非常健康的方向发展。”

早期尝试(2019.10-2019.12)

在参与者的“抱怨”中,社区里的很多问题得到快速解决,马俊杰也开始了自己的尝试。在去年 10 月至 12 月这段时期,他将精力主要投入到社区治理方面,包括社区的贡献准则(contribution guidelines)、项目说明(project specification)的制定等。与此同时,他也在积极地参与到 go-gitee、ci-bot、Jenkins 等基础设施团队的建设工作中。

从 0 到 1 组建团队(2020.1-2020.3)

进入 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。现在很多招聘职位中会有‘开源社区贡献’一项,这对应聘是很大的加分项。”

开发者如何更好地参与到 openEuler 社区?

对此,作为资深的参与者,马俊杰给出了如下几点中肯的建议:

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 社区,还是参与其中的众多开发者,相信都能在良性的互动中,相互促进,获得快速且长足的发展。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK