前言
早在2年多前,笔者曾写过一篇关于如何参与到开源社区的文章:作为一名非Committer,如何向开源社区提交自己的代码,但是现在笔者重新阅读这篇文章,发现与其讲述的参与开源的方法论,还不如帮大家仔细分析其内在本质的一些现象和原因,核心问题:为什么国内程序员无法很好的参与进开源社区?笔者在15年刚毕业不久,因为工作的机会偶然间接触到了开源,随后就一直乐此不疲,开源给我带来快乐的同时也促进着我技术水平的迅速提升。接触开源的这2年多时间里,笔者接触了各式各样的参与开源的同学,包括国内,但更多的是国外的,我也从一名普通的贡献者,成为了一名项目提交者。下面来谈谈其中的一些体会和心得,最后再回到这个核心问题:为什么国内程序员无法很好的参与到开源社区?以下阐述观点仅为笔者个人观点。
开源和开源社区
这里要提前普及一个知识点,开源是什么?开源英文全称Open Source,开放源代码,开源项目的形成和发展来自于全世界开发人员的贡献,大家彼此之间未曾见过,但是通过邮件紧密的联系在了一起,而这样的一个交流群体,我们就称之为开源社区。著名的开源系统Linux不就是由托瓦兹和其他人这么搞出来的嘛。所以,这听上去是不是一件很酷的事情呢,:)。
下面将进入正文,笔者将从客观(外在)和主观(内在)2个角度来分析看待国内程序员参与开源的这个问题。
客观因素
首先我们来看客观因素也就是外在环境。为什么说外在环境对国内参与开源社区有影响呢?结论是当然有影响。在这里,笔者将外部因素再进行进一步的细分,有下面两点:
- 国内大环境节奏快,市场竞争压力大,无精力时间支持开源活动。
- 国内没有很普及的开源文化。
- 语言的障碍。
大背景环境
目前各个互联网公司(包括各种大小厂)所面对的市场竞争,压力都挺严峻的,要求的都是快速迭代快速开发,所以在这样的背景下,国内程序员不太会有多余的精力来接触甚至贡献到开源工作中。在这点上稍微好点的,就是在一些外企,就会方便很多了,比如说像IBM,Intel,是有直接和开源社区合作的,打交道的工作。
另一方面,我们知道开源社区讲究的是“慢工出细活”,但是在国内的开发大环境下,开发者的耐心往往是不够的,一个邮件信息,1,2天不回复,太正常了,在这个时候,往往很多程序员就坐不住了,最后就放弃了。这点在刚开始接触开源时特别明显。还是一句话,耐心一些,再耐心一些。
开源文化
老实说开源这种东西,没有特别的文化也是不行的,这里不是指个人的文化程度,而是文化氛围。我们知道,国内计算机领域的发展是落后美国几十年的,尽管说国内开发者的技术技能也并不比美国程序员差,但是论对技术的本身而言,我们可能看着的仅仅是一份养家糊口的工作,是否有曾想过我可以在闲暇之余无私地为开源项目做点贡献呢?更何况这些著名开源项目已经被大量的使用在了我们的生产环境中并发挥着越来越重大的作用。所以其实笔者一直非常赞同,国内的文化是一种“索取”的文化,只得到其中的好处,但并不想去付出,这就是文化的差异,这么说,想必大家会明白一些吧。
语言的障碍
这点就很简单了,开源社区用的是世界的公共语言,英语。很多同学在毕业后就把英文的学习放一边了,尤其是开源社区用的是英文来描述专业性的问题,这不很明显会造成理解的难度和沟通的问题嘛。在这点上,笔者的建议是,平时多看纯英文的技术设计方案,不懂的地方反复阅读,笔者就是这么干的,虽然有点土,但管用。
主观因素
OK,下面来谈谈另外一方面,主观因素,也就是个人内在的一些原因。这些是笔者通过近几年时间和一些国内参与开源社区的同学的交流和接触所得出的,主要3点因素。
- 不太肯放下姿态,从简单的小事做起。
- 不够有耐心。
- 互帮互助做得不够。
因为这3点很好理解,这里不分小节具体阐述了。
首先第一点,国内程序员有些确实本身比较厉害,他们总想着,一开始能做一个特别棒的feature特性,这样就会有上千行代码的贡献,但是这里有一个问题,开源社区那帮人开始时并不认识你,你觉得像这样的机会,他们会直接给你吗?办法只有一个,从小事开始做起(改错别字,加日志啦等等),然后逐步逐步,展现你的能力,到时自然而然,你可以做的更多,做的工作也更加核心。
第二点,耐心问题,这个在上文也已经提过了。
紧接着看第三点,说到这点,笔者也比较惭愧,笔者作为已经是Committer提交者的身份,对国内程序员这块的帮助带动做的也还不够好吧,笔者确实与外国程序员沟通的比较多。主要是国内程序员在社区上总是零散的出现,没有那种持续的和你互动的那种。在这点上做的比我们好很大的,印度人,旧人带新人,公司内部带公司内部新来的,所以可以看到很多印度籍的开发者成为了各个顶级开源项目的提交者。这其实是也一种群体效应,国内的则是单兵作战居多吧。
总结
说了这么多,以上就是笔者对于目前国内程序员无法很好参与到开源社区的一个简单分析,希望能带给更多对此方面感到困惑,疑虑的同学们。
相关文章
[1].http://blog.csdn.net/androidlushangderen/article/details/49563447. 作为一名非Committer,如何向开源社区提交自己的代码