此外,它有助于了解社区是如何治理的-是分层级的管理者/辅助管理者(如Linux内核),或者差不多是一个扁平结构(如Debian项目)?了解这些可以帮助你识别项目中的关键领导者和影响者,当你开始提出改变或新的想法的时候,这将有帮助。
最后,理解开发的流程是至关重要的-一个bug或新功能在被纳入主线之前需要经过多少个阶段?一些方面是否比其方面更有争议的?当你修复一个bug或提出并实施新的功能的时候所有这些研究将帮助你。
做肮脏的工作
在解释如何首次进入国际空间站,哈德菲尔德写道:
“给一个全新的环境做贡献最好的方法不是试图证明你有多棒。而是通过施加中性的影响,先观察已经在这个环境中的人们的行为并向他们学习,适时地参与繁重工作。”
一个开放源码项目就像在空间站,有无数的任务需要完成。是的,最荣耀的工作可能就是编写代码,但几乎所有我见过的项目都迫切需要完成以下一个(或所有)的任务:
文档
测试/质量保证
错误修正/调查分类
用户界面/用户体验
社区管理/沟通
常常参与这些任务中的一个,你会获得专业的知识和获得你之前没有的项目知识。随着时间的推移,你也会向其他社区成员证明你是值得信任的,可以承担更多的责任。
尊重每一个人
近些年有大量评论说,开源项目是“危险的工作环境”,因为在邮件列表、IRC 等里面充斥着大量尖酸刻薄的言论。不管怎样,向我告诉三星(还有其他的我工作过或做过咨询的公司)的员工一样,“永远不要丢掉你的职业化水平(包括在开源项目中)”
虚心接受别人给你的意见(即使对方表达方式欠妥),然后重构你的代码,采纳别人的建议,或者对邮件列表的问题进行注解等,对提高开源环境中的工作效率都是
非常重要的。无区域差别的文化交流也起到很重要的促进作用。记住,与参与项目的开发者的所有的私下沟通也是一样的重要。
Hadfield
(加拿大第一位太空宇航员)讲过一个故事,关于那些不适应与他人合作,或者对待医疗团队或其他一些支持团队态度恶劣的宇航员,他们在基础层面上就是不合格的。也许你在自己的领域是一个非常聪明的开发者,但是除非你能与人和睦沟通,尊重每一个人,否则你不太可能在长久的在开源社区中获得成功。
综上所述
所有这些观点都指向了一个这样的事实:理解你的环境。Hadfield 做了这样漂亮的总结:
”当你有了一些技巧但是不能完全理解你的环境,你没有办法更进一步。即使是最好的情况,你还是在原地踏步。但是原地踏步并不是坏的事情。你还没有足够的能力去解决问题,这或许可以让其他人能更好地工作吧。你必须胜任,才能解决那些问题,在那之前你还是先做其他的吧。“
最重要的是要记得将他的那本诞生于努力争取来的(生死攸关的)解决方案,放在书中将经验进行分享。与此同时,开源项目工作的有效性已经不可同日而语,他分享的关于生活和工作在海拔255英里的经验,是在不同民族间合作的努力成果,同样也适用于开源社区成员间的信任建立。