融入开源社区的4条建议
我儿时的两个大梦想就是成为消防员或者太空探险家。虽然我并没有为这两大梦想做什么,但我在由加州消防部门举办火灾预防中成为一名志愿者也算是实现了前者, 对于后者,我阅读了我所能获得的每一样关于太空的资料,包括了小说和非小说。
最近我拿到一本 Col. Chris Hadfield写的关于宇航员生活的书, 航天员在地球上的生活指南, 并在我去亚洲国际旅行的路上读一读。
除了很饥渴地去阅读 (我非常建议这样子),它也会一直启发我如何才能做好我自己的工作,同时如何建议内部开发者和三星公司这一整体在开源工作中表现得更好。
成为“零”
在这本书的第9章, Hadfield 写到:
“在任何情况下。。。。。。你都会被当作为以下三种人之一。“负”:即非常有害的,制造麻烦的人;或者,“零”:留下中立的印象,不会打破这 个平衡的人;或者,“正”:增加价值的人。当然,每个人都想成为”正“,有价值的人。但是,一开始就声称自己是”正“,这几乎就宣告你是”负“了,不论你 带来了什么技术【或者价值】,或者你实际表现的怎样。”
虽然这听起来有点失败主义的味道,但实际上,这与个人或者企业,如何在开源中开展工作是紧密相关的。
当考虑其它事情的时候,我对此产生了共鸣,我记录了与社区的互动,包括我最近发布的博客里面的一篇叙述: ”谦虚,但自信。“
当我考虑 Hadfield 的话的时候,对我来说,这非常清晰,他正在谈论同样的事情。当你是任何开源社区里一员的时候,你理所当然想成为”正“(创造价值的人),但是你需要尽可能成为”零“(中庸之人)--不会打破平衡--特别是处于互动的时候。
这适用于个人开源开发者,但是对于那些代表公司工作的来说更是这样。没有任何事情,比从一开始进入开源社区就尝试成为“正”(创造价值的人),更容易让开源社区,往好里说是忽略你,或者,往坏里说是反对你。
这是否就意味着你应该缩到幕后,至此不再公开发表观点了呢?当然不是,这里有一些你可以参考的指导原则,帮助你到达“正”(创造价值的人)的状态。
做好你的功课
决定参与到开源项目前,做好你的功课或研究是无可替代的也是无捷径可走的。
其他还包括,你要知道如何与社区沟通(邮件列表,论坛,互联网中继聊天(IRC))。同时也要知道如何提出你的想法(漏洞跟踪系统或邮件列表)并且进行讨论。
此外,它有助于了解社区是如何治理的-是分层级的管理者/辅助管理者(如Linux内核),或者差不多是一个扁平结构(如Debian项目)?了解这些可以帮助你识别项目中的关键领导者和影响者,当你开始提出改变或新的想法的时候,这将有帮助。
最后,理解开发的流程是至关重要的-一个bug或新功能在被纳入主线之前需要经过多少个阶段?一些方面是否比其方面更有争议的?当你修复一个bug或提出并实施新的功能的时候所有这些研究将帮助你。
做肮脏的工作
在解释如何首次进入国际空间站,哈德菲尔德写道:
“给一个全新的环境做贡献最好的方法不是试图证明你有多棒。而是通过施加中性的影响,先观察已经在这个环境中的人们的行为并向他们学习,适时地参与繁重工作。”
一个开放源码项目就像在空间站,有无数的任务需要完成。是的,最荣耀的工作可能就是编写代码,但几乎所有我见过的项目都迫切需要完成以下一个(或所有)的任务:
-
文档
-
测试/质量保证
-
错误修正/调查分类
-
用户界面/用户体验
-
社区管理/沟通
常常参与这些任务中的一个,你会获得专业的知识和获得你之前没有的项目知识。随着时间的推移,你也会向其他社区成员证明你是值得信任的,可以承担更多的责任。
尊重每一个人
近些年有大量评论说,开源项目是“危险的工作环境”,因为在邮件列表、IRC 等里面充斥着大量尖酸刻薄的言论。不管怎样,向我告诉三星(还有其他的我工作过或做过咨询的公司)的员工一样,“永远不要丢掉你的职业化水平(包括在开源项目中)”
虚心接受别人给你的意见(即使对方表达方式欠妥),然后重构你的代码,采纳别人的建议,或者对邮件列表的问题进行注解等,对提高开源环境中的工作效率都是 非常重要的。无区域差别的文化交流也起到很重要的促进作用。记住,与参与项目的开发者的所有的私下沟通也是一样的重要。
Hadfield (加拿大第一位太空宇航员)讲过一个故事,关于那些不适应与他人合作,或者对待医疗团队或其他一些支持团队态度恶劣的宇航员,他们在基础层面上就是不合格 的。也许你在自己的领域是一个非常聪明的开发者,但是除非你能与人和睦沟通,尊重每一个人,否则你不太可能在长久的在开源社区中获得成功。
综上所述
所有这些观点都指向了一个这样的事实:理解你的环境。Hadfield 做了这样漂亮的总结:
”当你有了一些技巧但是不能完全理解你的环境,你没有办法更进一步。即使是最好的情况,你还是在原地踏步。但是原地踏步并不是坏的事情。你还没有足够的能力去解决问题,这或许可以让其他人能更好地工作吧。你必须胜任,才能解决那些问题,在那之前你还是先做其他的吧。“
最重要的是要记得将他的那本诞生于努力争取来的(生死攸关的)解决方案,放在书中将经验进行分享。与此同时,开源项目工作的有效性已经不可同日而语,他分享的关于生活和工作在海拔255英里的经验,是在不同民族间合作的努力成果,同样也适用于开源社区成员间的信任建立。