参与自由软件开发的一些建议
时间:2006-06-11 来源:lyanry
许多程序员想参与自由软件项目,但是他们不知道如何才可以置身于其中。这篇文章是一份非正式的“不成文的规则和协议”的收集,谨献给想成为自由软件 志愿者的人们。我是经历了许多错误后才了解这些的,并且对于本文中的一些建议,我也无法避免去违反;他们仅仅是一些粗略的准则。我相信每个人也都有自己不 同的一套准则的。(作者很谦虚啊)
不要从创建你自己的项目开始
许多人想写自由软件,因此他们做的第一件事是乱写一些代码,贴上GPL协议,再以0.0.1阿拉法版本发行。尽管这可以以此寻寻乐子或作为教学示范,但是总体上说这些做法一无是处。下面来说说为什么会这样:- 通过添加一些小的特性或者修正一些错误来阅读和学习他人的代码更具教育意义。许多项目都有bug跟踪系统;譬如,在Gnome项目中,我们有 bugs.gnome.org,Debian有类似系统等等。在一个bug跟踪系统中寻找bug并修复它,或者添加一个你想添加的特性才是你首先要做的。
- 很明显,梳理已存在的代码要比进行孤雁单飞的项目更有用处。
- 几乎你想要搞的项目已经有人在做了;一起来完成一个项目要比让两个项目都完不成要好得多。我可以向你保证,有95%的自由软件项目还未有结果便凋谢了。从自我学习的角度,并且也从出名和提高能力的角度来看,你需要人们帮助你的项目能成为那5%。
- 如果你还未潜心参与一个自由软件项目,你将不知道那些事情要做,并且你将会有一段梦魇似的时期来开展你自己的工作。
编码、编码,还是编码
如果你开始做一个项目,最重要的事情是写代码。你必须要写足够的代码让程序更为有用、漂亮;这可能要数月或多年孤军奋战,除非一些可爱的人们帮助你 来做而不是自行其是。你必须经常发布新版本、快速修正bug,并且保持着开发的兴奋。一路走下来,做一个自由软件是一项很繁重的工作。如果你单干,每周起 码要干10-20个小时。当然,你可以在现有项目的基础上来做,可以省许多力气,并且可以让你每周工作10-20个小时后,总能看到光明的未来。如果你不 能付出这多时间,就不要自讨苦吃。如果你不能写代码,同上。
做好孤军奋战的打算
许多人都想做X程序的开发,或者发布0.0.1阿拉法版本,而当他们的程序没有得到众人的回应时,他们就轻而易举的放弃了。一定要直面惨淡的人生,正视淋漓的鲜血!继续干下去,怎么想就怎么做。
当我们索取帮助时会出现相同的现象。最后,如果一个bug、错误的特性或文档的缺失是你自己的问题,那么你最好自行解决。Hacker们通常很和蔼的帮助不知道如何开始的新手,但迟早他们会期望你能够自行解决属于你自己的问题。
使用邮件列表
如果你有问题,就在列表上发问好了。私下给开发者单独发mail是不礼貌的行为,除非你确信只有他们才可以解答你的问题。在邮件列表上发问,可以让诸多开 发人员有可能读到你的问题并予以解答(如果单独向其中某个开发者发邮件,而这个开发者并不负责其项目中你所质询的那个模块,你有可能无法得到答复,因为对 方不一定懂得你的问题)。
邮件列表和文档是项目开发者为了向尽可能多的用户提供支持而设立的。因此,要记住每个人都是志愿者,并且你也要尽你所能的解答你能解答的问题。
没有负责人
人们经常期望某人能负责自由软件项目;或者他们期望能指派任务,期望能按期完成。事实上不可能那样的,你没有权利控制其他人做什么,并且也不会有人告诉你要干什么,尽管可能会有许多的建议,你最好能潜心于其中,尽力的完成更多的事。同他人协作
如果你花费3个月的时间来写一些很酷的新特性,然后发现项目的维护者不喜欢你的想法并且不予接受,或者发现你的工作无法应用在该项目的最新版本,或者发现 其他人也做了相同的工作,你可能会不高兴。如果你筹划要做某项工作,应当向项目的维护者提供简短的通告以让他们清楚你的工作意图。很多项目维护者对你的通 告持怀疑态度,因为他们曾经受到过太多的通过,但从未看到结果。尽管如此,他们通常会用心给你回复并且可能给你一些建议。
如果你已经是项目的核心开发成员了,更要尽可能的与他人协作,通常使用email、CVS和IRC等工具的组合来完成。CVS可以很好的胜任于各开发者工作的合并任务。
“项目X什么时候完成?”或者“特性X会实现么?”,这类问题没有答案
没有谁能真正保证什么。指手划脚者误事
指手划脚者貌似什么都懂,但从未写过程序,也不知道如何写程序。如果你不知道如何写程序,那么你就不可能知道软件是如何设计出来的。就是这样,你可能只为人们带来麻烦。
即使不会写程序,也是能为自由软件做很多事情的,譬如报告bug、软件特性征询、写文档、帮助用户解答问题和安装、用户群管理、web维护、服务器管理、为操作系统发行版做安装包等等。Hacker们会感激你喜欢他们的工作以及你的帮助。