最近很多人在问如何参与一个开源项目。其实个人觉得这是一个非常傻的问题,不过还是回答一下,期望这帮人记得用google搜到这个角落,免去论坛上月经一样的天天看到这种傻问题。

为什么说傻?因为这个问题和“如何捐钱”一样,是个没法直接回答的问题。你总要有一个明确的捐献目标,或者是明确的目标项目。世界上没有一个组织,名叫“开源软件”。无论你的目标是什么,你必须找到一个确定的开源项目进行参与。

在哪里能够找到开源项目?这很不好说。一方面,你可以在sf.net(需要翻墙)和code.google.com(最好翻墙)找到相当多的开源项目,也可以在github之类的地方寻找。另一方面,你也可以在debian里面找。很多包里面附带了项目的主页,如果你觉得这个包很不错,希望做贡献,可以按照链接找过去。

如何挑选合适的开源项目?首先要和你的兴趣相符合,或者能够满足你参与开源的目标。例如你对算法非常感兴趣,让你加入一个ERP系统的定制,成天修正繁琐的业务问题,可能就会让你觉得兴趣全无。其次最好参与一些中等复杂程度,具有活力的,比较缺人的项目。像linux kernel这种规模巨大,参与人员众多的项目,本身就是一个非常巨大的工程。你要了解这个工程需要很长时间,但是大部分你觉得有价值的事情都已经有人在做了。

如何开始?具体可以先给项目管理者发一封邮件,说明自己的目标,兴趣,能力,时间,然后问问他们是否需要自己的贡献。

大多数项目最缺的人才,不是程序员。通常一个开源项目,有几个程序员在做是不成问题的。但是大部分的开源项目缺乏一些周边人员,例如到各个组织中推广项目,获得反馈。和各种dist和开源平台协调,负责收集bug,控制项目发行,进行打包。负责项目的测试和文档工作,以及英文文档的翻译工作。这些工作并不需要专业知识,但是琐碎而且费时,程序员并不大乐意做。而且控制项目的release,还有进行协调要有一定的经验,也不是程序员擅长的领域。所以相当多的开源项目,就是程序员拍脑袋写,然后用户两眼一摸黑的用。没有合适的文档,没有各种系统的适用包,没有bug和用户意见反馈。

因此贝壳也请求,所有看到文章,且有志于贡献自己的力量的人,都可以考虑参与开源项目。你不需要会写程序,也不需要精通电脑。你需要做的可能就是将文档从英文翻译成中文,或者不断使用一个软件并找出其中不合理的地方。在中国,捐献金钱是容易的,但是却不透明,也不自由。你不确定你的金钱捐献给谁,他收到多少,是否真的需要。然而如果你选择某个开源软件做捐献,你可以选择自己为谁做出贡献,也会受到全体开源软件用户的感激。