如何参与到开源项目中去

编者:开源项目是程序员学习的一个途径,面对那些发展多年的代码,我们到底该如何才能参与其中?

    如果你想参与到开源项目中去,却又不知道从何入手,这里提供一些参考方法或许能给你提供一些帮助,哪怕你对你目前的技术还缺乏自信都不要紧。

    开源软件已经改变了IT,甚至整个世界,正是因为有了你们,乐于奉献在开源事业中。不幸的是,很多人把参与到开源项目中想象成一个难以跨越的障碍一样,因此而退缩。我通常听到人们说他们很想参与到开源项目中来,但是因为以下的3个原因而打消了念头。

我还不足够优秀

我没有足够的时间

我不知道什么样的项目适合我

 

寻求机会参与到开源项目中去,你应该知道的三个基本原则:

项目需要各种能力层次的专业人才。

哪怕是微不足道的贡献也比没有好。

从你正在使用的项目作为参与到开源的第一步


     我从开源项目中所观察到最要命的想法是那些新人总认为要成为某种类型的天才程序员才能参与到开源中去,其实根本就不是这回事。当然,某些项目中的成员看起来就像摇滚明星,没错,他们确确实实是一个极具天赋的程序员,然而,我们中的绝大部分不是的。我们仅仅是那些只要把任务完成的人。有时我们做的付出的不需太多,有时我们需要花大把的时间,有时它就是编程,而有时它不是。


0. 加入邮件列表:

对于大多数项目,邮件列表仍然是项目开发沟通主要的渠道。在一个规模比较大的项目中通常有很多邮件列表可以选择,例如:PostgreSQL项目就有不少于12个面向用户的邮件列表和6个面向开发者的。我建议你关注最主要的几个面向用户邮件列表以及核心的开发者列表。


1. 关注博客:

博客一般由核心开发者维护,通常博客中包含项在未来版本的一些信息。如何获取这些信息呢?通常一个星级站点有包括来自很多相关项目的新闻或者博客词条,如果有一个星级站点,如:http://plant.gnome.org 或者 http://planet.mysql.com ,那么你要做的仅仅是用Google搜索”planet <项目名>”。


2. 加入到IRC频道:

许多开源项目都有专门的互联网中继聊天(IRC)频道,用来为开发者和用户讨论开发问题。仔细查找项目站点中IRC频道叫什么。


3. 代码诊断:

Bug通常很难报告出来,诊断快速处置bug有助于节省开发人员的时间。如果用户提出报告:“当我操作XX功能时,系统无法工作”,你得花些时间解决这些问题。还是不是会重复出现?例如该类问题是否只是发生在某种浏览器不兼容?只在发行版有这样的问题还是其它的原因。


4. 关闭已修复的bug:

 通常bug在代码库中修复了,但是在问题追踪系统中还没更新。清理掉这些杂乱的东西虽然耗时,但是对整个项目来说是值得的。


5. 测试beta版或者候选版本:

任何项目设计用于运行在多个平台时就有可能存在各种兼容性问题。当一个beta版或者候选版发布时,项目带头人希望能在不同的人和不同的平台上得到测试反馈结果,你就可以是其中之一。


6. 修复bug:

修复bug通常是贡献者开始接触代码的地方,非常简单,在问题追踪系统中找到感兴趣的bug,把bug修复,如果合适的话为代码的修复撰写文档。


7. 写测试:

绝大多数项目都有测试套件用来测试代码,很难想象测试套件中不能附加更多的测试在其上。使用测试覆盖工具诸如基于c的gcov、基于Perl的Devel::Cover,用来标识源代码没法通过测试套件测试到的范围,然后添加一个套件覆盖它。


8. 理性对待编译警告:

许多基于C项目的构建过程中经常会出现很多古怪的编译警告,这些警告通常不是错误,但是看起来像,太多的警告让编译器听起来就像在发假警报,仔细检查代码是否的确隐藏有bug。


9. 附上注释:

当你在深入研究代码时,你可能发现有疑惑的地方,如果感到疑惑,这对你来是一个机会,比别人也可能碰到同样的问题,给他们贴上注释提交补丁。


10. 创建例子:

一般项目都没有太多入门的例子,不管是web API、普通程序库、或者是GUI应用如Gimp、还是命令行工具,比起长篇的文档,一个恰当的例子能够更清晰更快速解释软件的使用方式。


11. 回答问题:

参与到社区最好的方式是帮助别人。回答问题,尤其是那些初次涉及的,这对于一个项目的成长很关键,即使你回答只是简单地”RTFM”(read the fxxk manual),每个人都要行动起来,项目如果要变得强大起来的话每个人需要动员起来。


12. 写博客:

如果你有博客,写下你使用项目的一些经验,记录你碰到的问题及解决的方法。你可以通过两种方式来提供帮助,一个是记住你身边帮助过你的人,另一个是记录下你将来可能会碰到的问题。


13. 改进网站:

很多程序员在图形设计方面显得非常糟糕,尤其是那些不能从设计部门得到帮助的项目网站。如果你有网页设计方面的技能,不妨改进下网站,网站作为项目的招牌,是值得花时间的。或许项目界面需要彻底改造,抑或仅仅是一个logo,这些是社区缺乏的技能,如果我能提供一些图形设计上的帮助,我会非常喜欢的。


 有太多的方式参与到开源项目中,哪怕是我们写一个新产品的特性的历史回顾。每个使用开源项目的人都可以把技术带到社区和帮助开源成为IT产业中重要的一部分。

 


在知乎上看到一个回复觉得挺实用的,希望大家可以借鉴一下!

作者:匿名用户
链接:http://www.zhihu.com/question/19963263/answer/13546308
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

首先,刻意的找开源的项目来参与是一种比较低效的方式。一个比较好的方法是多参与实际的项目。这么做一是可以提高自己的能力,二是在此过程中可能会用到一些第三方的库。有时候这些第三方库可能会不太满足的自己的需求,或是在使用期间遇到 一些 bug,这样,我们就可以找到那些项目的源代码,帮助作者修正 bug 或增加功能。

比方在用 Flask 做 web 开发的时候,我就遇到过几个第三方插件可以勉强满足自己的需求,但是做的不够好的情况。于是我就试图把这些功能加上,并提 pull request 给作者。有时候作者会合并你的提交,有的时候会无视掉,不过没关系,毕竟项目是作者说的算的 :) 。类似这样的插件项目基本上都是几千行的长度,对新手来说,很方便入手。比起庞大的项目,这是一个非常好的切入点。

另外,附上一封大学时期的邮件:

上大学的时候接触了 Linux,也问过这个问题。当时我给 Ubuntu Tweak 的作者 TualatriX Chou 发了邮件。这是他的回复,希望对你有帮助。

Hi,

不好意思邮件回迟了,前几天发布UT 0.5消耗了大量元气,没来得及处理邮件。

作为一个过来人,对于“如何参与开源项目”,这个我有自己的理解。在读书时,我也没有太多的经历,毕竟我真正的参与还是比较少的,更多的是自己去做,所以在学校的时候我开发了Ubuntu Tweak。

当然现在我在业余也参与了一些其他开源项目,做一些力所能及的事情,比如Gloobus Preview,就是我负责完善打包和维护其PPA源。另外前段日子也接手维护OSD Lyrics这个软件的Ubuntu源。
主要都是维护工作软件的发布工作,一是自己用Ubuntu,比较熟悉,二是自己对打包方面稍微有点经验,因此这两项都是跟打包有关的。

所以你可能有认知了,所谓“参与开源项目”,并不一定是参与开发,任何跟项目有关的,包括打包,翻译,或者写文档,甚至单方面的宣传,都可以说是参与吧。

既然是参与,肯定是拿出自己比较拿手的方面,或者感到某个项目有哪些不足,哪里需要人手,恰好自己又会,就顺其自然地参与进去了。

问题就变成了,哪里有需要帮助的,而且我能做什么?很多人不知道如何参与开源项目,就是没搞清楚这一点吧,因为都想是为了“参与”而去“参与”了。

所以,我想你先要问问自己,自己擅长什么,或者想学习哪方面,平常用Linux时碰到过哪些不如意的地方?

对于你所擅长的:
假如你擅长UI设计,那么你可以改造一下你觉得UI有待改进的软件,然后发patch给开发者,他们觉得可以的话,就会接受。以前我也发patch给过GMLive,后来被他们接受了,这是一个例子。

对于你想学习的:
学习最好的办法是,自己写个小软件,然后通过学习同类软件的源代码来达成目标。我自己的UT就不说了,刚开始我也是学习其他项目的源码来一步步写起来的。说说最近的OSD Lyrics吧,http://code.google.com/p/osd-lyrics/,它出来没多久。
你可以看到它主页下面的:致谢,列举了其他参考过的开源项目。一个全新的开源项目的诞生基本都是参考其他项目的设计、代码或其他,以便做的更好的。
所以,你即可以通过自己来写个软件来达到学习目的,也可以主动研究一款或者改进一下你觉得不满意的地方。

大概说这么多,希望你能明白。

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值