在OpenStack社区中,中级贡献者介于岩石与坚硬的地面之间,他们既不是什么都不懂的菜鸟,也不是因精湛的技能给其他人留下深刻印象的高手。但他们无疑是OpenStack社区不可或缺的中间力量,中级贡献者如何提升有效提升自己的贡献指数,并且向着成为社区顶尖高手的目标不断迈进呢?两位来自惠普的中级贡献者代表Scott D’Angelo和Andrea Rosa为我们带来了一些宝贵的实战经验。
Scott D’Angelo和Andrea Rosa能够深刻感受到那些“中级”OpenStacker的苦恼。这两名惠普工程师已经不再是简单的bug fixer了,他们现在能够对复杂功能所涉及的东西,以及哪些东西可以被带来到OpenStack中展开不定期评估。
自OpenStack Folsom版本推出以来就一直从事公有云业务的高级软件工程师 D’Angelo 说:“我们的雇主会问,‘嗨,我们想要这个功能,但是这些东西太复杂了。’在这种情况下,你不得不开始制定蓝图和规范,并且向OpenStack社区进行反馈。你不得不搞明白这些怎么才能工作得足够好,甚至需要知道这个功能是否正在被添加。你不得不开始使用一些影响力让他们关注你的补丁。我们能够感觉到在新人和关于提供补丁的文档之间存在着隔阂。”
D’Angelo居住在美国科罗拉多,Rosa居住在英国,但是两人却相隔万里共同合作编写一个补丁。为了让Nova拥有一个新的功能,通过合作编写补丁,两人对如何展开合作积累了丰富的经验。通过总结PTL(项目团队主管)、Core Reviewer(核心评估人员)和同事们正在寻求什么和讨厌什么,他们将一些事情推向了新的高度。
而以下便是D’Angelo和Rosa在参与社区开发的过程中总结出的8条宝贵经验。
1. 知道自己要去向何方
与Rosa和D’Angelo沟通的人表示,他们最讨厌的是人们不知道这些补丁的历史。一名Core Reviewer曾经因此被激怒,在他将某个东西标记为“不要这么做,你必须移除这个参数”之后,在随后的补丁集中,这一参数又重新回来,并得到了其他人的批准,且与代码进行了合并。
D’Angelo说:“通过了解补丁的历史,你可以知道这些东西为什么会通过这种方式解决,你也可以避免同样的错误。这虽然很乏味,但是在我们的调查中,这是一个反复重复出现的事情。”他表示,我们需要确定哪些工作需要通过IRC与PTL进行沟通。“如果你发现了项目中一些被忽视的痛点,那么你将会得到鼓励、欢迎和帮助。”
2. 学习在拥塞的车流中行驶
D’Angelo说:“OpenStack是一个庞大的社区。这有点像交通阻塞一样。大家都非常乐于助人,也愿意给予别人鼓励,但是大家又都非常忙碌。为了把事情做好,你必须尽可能地提高效率,因为每个人的日程都安排得非常满。有些事情可以加快你的速度,但是有些事情会导致你的速度放缓。”
3. 通过提交信息和单元测试避开不良评估
D’Angelo说:“主动思考你将会遇到的所有问题,避开已知的扣分情况,或是会导致问题的情况。”他称,自己有时遇到的最大障碍是在单元测试和提交信息上没有花上足够的时间就匆忙地提交了代码。“由于没有考虑周全,导致整个程序会被打回来,并被扣分。”他说。
这个情况被反复地证明,由于没有做好补丁功能的解释工作,糟糕的提交信息只会让你迅速出局。Rosa称,不要期望Reviewer会打开漏洞说明书或是介绍,然后完整地阅读它们。Reviewer需要得到的关于补丁来龙去脉的所有相关信息必须被写入提交信息中。而解决这一问题的最简单方法就是使用相关的指南。
D’Angelo承认:“在提交补丁时,提交信息是我最后才编写的东西。由于没有在代码中的提交信息上下功夫,因此会出现一些脱节。目前我已经知道不能再这么做了。”
关注提交信息的规则会为我们减少许多麻烦。是让它们含有72个字符,或者是冒着被扣一分的风险?D’Angelo说:“要减少这些麻烦,至少要知道规则和提前考虑到在你提交补丁后会有人立即看到它们,并对其进行标记。”
4. 成功通过单元测试
D’Angelo说:“没有单元测试,你会立即被-1分。它们是我们应该提前规划的事情之一。提前写测试,因为你迟早都要写。”他还指出,如果先前没有通过Tox和Pep8,那么测试或补丁将无法通过Jenkins。“我没有统计过自己看明白了多少提交评估的补丁,但是对于那些不合格的补丁,大家会关注它们失败的原因。”他说。
5. 避开交通拥堵时间
D’Angelo说:“另一个令人讨厌的事情是,有人会强迫或是纠缠Reviewer,让他们对自己的东西进行评估。在Cinder中,我看到了许多这样的事情。我们为这一存储阵列批准了70多个驱动。一直会有新人加入进来,因为他们的公司希望让一个驱动加入到Cinder中。而这些驱动动不动就包含2000或3000行代码,这需要很多人花时间进行评估。”
那么有什么诀窍吗?诀窍就是不要等到到了第二个里程碑版本时才开始让人对你的补丁进行评估。不要等到在IRC中开始提问,以及不要等到开始加入项目才开始评估。
从Diablo版本开始成为“中级成员”的Rosa对于版本周期也有着相同的见解。“你会向自己的老板承诺许多东西,但是请记住社区的时间安排与你公司的时间安排有着很大的出入。你需要设定一个期望值,否则你将会像之前的人一样站在老板面前说‘对不起,我们需要等待下一个周期,时间可能是三个月。’请意识到这一点。”
6.如何应对“交通罚单”?
“如果你被否决了,那么不要灰心。请做好申辩的准备。在你提交补丁之时,请记住扣一分并不意味着世界末日。他们不一定是对的,去找Core Reviewer而不是找普通Reviewer进行申辩。”Rosa说。
向他们清楚地解释补丁的功能,尝试着展示它们对项目的提升或是对重大漏洞的弥补情况,或许你的情况会得到反转。不抱成见,态度谦虚地提出你的关注点。“我曾经看到一名Core Reviewer将意见由-1修改为了+2的情况。”
7.想改变结果?Review, Review, Review !
D’Angelo说:“你想获得Review,那么你需要精心准备你的材料,你需要介绍自己的参与情况和学习情况。”
D’Angelo和Rosa建议不要干涉Reviewer的工作,避免人为地让自己的Stackalytics数值被扣分。要让社区知道自己,包括在IRC中积极表现,这一点也很关键。
“Core Reviewer会进行大量的Review工作。他们会看你的综述,他们会知道你是否进行了出色的总结,你的扣分是否是因为代码中的错误。他们还会知道你被四处扣分的原因是否是因为你文稿上的错误。我不认为你真地能够糊弄到任何人。”
8. 不要为小事担心
D’Angelo称,中级贡献者必须要记住他们应该尝试着树立起向更好方向发展的文化导向。“大家不需要因为别人评估、挑剔和指出文稿上的错误而感到担心。作为Reviewer,我可以保证我们没有这么做。我们在Cinder中做的事情是鼓励大家不要因为文稿错误或是一些不影响代码的事情做出-1的评分。也就是说,‘如果上传了另一个,那么可以进行补救。’”令人高兴的是,那些对这些问题吹毛求疵的人会受到指责。他说:“目前这一策略已经开始发挥作用了。”
在东京OpenStack Summit上,D’Angelo和Rosa与大家共同分享了参与社区贡献的心得。您可以在OpenStack基金会的YouTube频道上看到这个41分钟的完整对话视频。
编者注:本文编译自superuser.openstack.org,作者为Nicole Martinelli,编译者Frank Chan。
原文链接:https://www.ustack.com/news/how-to-take-your-openstack-contributions-to-the-next-level/