星期五, 十月 20, 2006

参与Google Summer Of Code,体验开源乐趣

作者:Lian Liming, 厦门大学软件学院计算机应用技术硕士研究生,lianliming(AT)gmail(DOT)com



2006年 这个夏天对我来说是有着非同寻常的一个夏天,我的项目申请通过Google Summer Of Code 2006的评审,成为了全世界6000多份项目申请中被录取630份之一。经过三个月的开发,现在我的GSoC项目已经结束并成功通过项目验收。在这里我想用文字把参加GSoC的经历和感受同大家分享,也希望明年有更多的中国学生参与到GSoC大家庭中。


IMG_2230

Lian Liming

最早得知 GSoC消息是今年的4月份,我在一个开源项目的邮件列表上看到一个帖子介绍GSoC,通过搜索很容易就找到了GSoC的官方主页。在官方主页上的 Student FAQ 我了解到GSoC是面向全世界的在校大学生在暑假期间所举行的一个活动,其活动内容是Google公司赞助在校大学生参与开放源代码项目开发。在这个活动中,Google公司将同一些比较有名的开源项目组合作来确定项目ideas,申请参加的学生根据这些ideas选出自己感兴趣的一个或者几个,写出完整的项目策划书。同时也鼓励学生根据自己创意来写对某个项目的策划。开源项目组会组织资深的开发者对学生们提交的策划书进行审核,最后经过讨论确定该项目组被录取的学生名单。被录取的学生必须在3个月时间内完成项目。在这期间将会有一个中期测评,如果没有通过,剩下的项目时间将作废,项目自动终止。3个月时间到达后也会有一个项目验收,只有通过最后验收合格的项目才算是成功的GSoC项目。

在项目的补助 上,一旦项目申请被通过评审,这个学生将会得到500美金的赞助费用。通过中期测评另外会有2000美金的赞助费用,如果成功通过最后的项目验收,还会得到2000美金的赞助。每个被录取的学生都会被项目组指定一名资深的开发者作为mentor来指导开发和审查项目进度。在Student FAQ中,我们可以知道,Google公司举办这样的活动举办这样的活动的目的在于鼓励在校的大学生利用暑假期间参与到开放源代码软件项目中,一方面可以帮助开源项目组增加完善软件功能,另外一个方面也为大学生提供一个暑期实践机会。在这个实践期间,学生有机会在世界上顶尖的程序员的指导下,解决实际软件项目中碰到的问题。

GSoC T-Shirt

GSoC T-Shirt


对于我 这样一个开放源代码爱好者来说,GSoC的机会是不容错过的。唯一的难题在于选择要申请哪个项目组上,我之前的有的开源项目开发经验是基于LAMP系统的,曾经是一个PHP开源软件项目的developer。照理来说应该选择PHP相关的项目组。但是我从今年初开始对Mozilla Firefox产生兴趣,接下来花了很多的时间去研究mozilla底层技术。只是由于时间较短,我虽然学习了一些技术但并没有参与到mozilla项目的开发中,因此缺乏经验。最后经过考虑,我决定还是选择Mozilla项目组,希望能借这次GSoC的机会对Mozilla技术有个更深入的理解。



查看了Mozilla项目 提供给GSoC活动的idea list,我对idea "XUL editor plugin for Eclipse" 产生了兴趣。这个idea想利用Eclipse Ajax Toolkit Framework提供的Embedded XULRunner和JS debugger来实现一个的用于开发XUL的Eclipse插件。我选择这个idea的原因在于Eclipse是我比较喜欢的一个IDE开发环境,而且之前对XUL(XML User Interface Language)也有所了解。在写项目策划书之前,我通过搜索发现在sourceforge上已经有一个类似的Eclipse XUL插件项目叫做EclipseXUL。多年的开源项目经验告诉我,开放源代码软件之所以生命力特别顽强,就在于其本身具有的开放性让大家都能够把力量贡献在同一焦点上。如果我为了参加 GSoC,重新去创建新的Eclipse的XUL开发插件,必定会造成重复劳动。基于这种考虑我写了一封邮件联系EclipseXUL的唯一开发者 Lars,在信中阐述了我愿意通过参加GSoC的机会来完善EclipseXUL。他回了封邮件表明非常支持我的想法,并详细列举了目前需要解决的问题和未来需要添加的功能。充分利用这些信息,我完成了项目策划书,,对项目时间安排、最终预期取得的成果进行规划。当然最重要的是, 我在项目概况中以 " 'Starting a new plugin project from scratch' VS 'Extending an existed eclipse XUL plugin project'"作为标题,花了很大的篇幅阐明了我不希望重复劳动而是更愿意扩展一个已经存在的Eclipse XUL插件的想法。



notebook from google

GSoC纪念笔记本

5月24日 ,我接到了从Google公司发过来的一封电子邮件,通知我的项目申请通过了评审.被GSoC录取.在专门为录取学生创建的邮件列表上,我看到了来自世界各地大学生的发言,感到非常荣幸能够成为这个大家庭中的一员。正式的项目启动时间也就是在5月24日,在这一天对我来说也意味着项目从策划阶段转向了实际开发阶段。由于没有参与Mozilla项目的经验,在项目启动之后我主要把心思放在两件事情上面。首先是阅读文挡,之前虽然对Eclipse使用很熟悉,但对其底层架构及插件开发并不是很了解,所以首先要补就是这方面相关知识。另外对Mozilla其他相关的技术的文档也需要大范围阅读。计算机技术的文档一般都比较长,每份文档少则100页,多则上千页,而且其中还有很多例子需要动手去实践去编码,因此阅读文档往往是一件枯燥的又占用大量时间的工作。在花费大量时间精力仔细阅读了众多文档后,我发现效果非常突出。比起策划阶段,我对项目的认识更加全面、更加深入。


在项目启动 之后要做的另外一件事情就是找其他有经验的开发者交流,在开源项目开发过程中,交流始终是最重要的工作之一。闷头做事情往往会走不少弯路,浪费不少时间和精力。我的mentor是来自mozilla项目组xulrunner模块的负责人Benjamin,在和他进行深入交流后,他还推荐我去找Eclispe ATF项目组的Javier和Adam。通过充分的交流,我发现我原来考虑很多想法并不是最优的解决方案。另外我如果对某个技术细节不懂或者有新的想法,会尽量地在相应的邮件列表或者是BugTracker上告诉其他人,寻求机会同别人进行讨论。这样就可以尽可能多的从其他开发者得到反馈。虽然交流和阅读文档一样占用了我大量的时间,但是后来事实证明,我策划阶段制定错误的开发的方向得到矫正,方法也进一步优化,大大节省了后续编码时间。

GSoC Checks



GSoC支票存根

6月份 开始,世界杯拉开了序幕,我是一个铁杆球迷,但是为了能够按计划完成GSoC项目,只能忍痛割爱,只看几场关键的比赛。在这段时间内,我开始阅读EclipseXUL、 Eclipse ATF相关的代码,希望能从底层代码中找到项目的突破口。为了能够记录项目进展及完成的工作,我为了项目搭建了wiki站点,这样边看代码边把关键信息记录在wiki上。有了wiki,其他开发者也可以从上面了解到我项目的进展状况。到了中期测评的时候,我基本上对已有的代码非常熟悉了。在中期测评报告中,我从技术细节方面阐述了下一步代码实现具体方案。由于之前同其他开发者已经有了深入的交流,我顺利通过了中期测评。



中期测评 后的工作主要就是对已经确定的方案进行代码实现。在开源项目开发中,有个非常重要的原则就是"Release early, release often", 只有这样才能保证程序开发中能够得到尽可能多的测试和反馈,以保证代码的质量。在我的代码实现阶段,我也尽量遵循了这个原则。在7月14日,在完成第一个重要的功能后,我发布了项目的第一个版本。这个版本包括经过编译配置的二进制发布包及原代码。第二个版本的发布是在8月3日,这个版本基本就已经实现了项目策划中的大部分功能。在每个版本发布前都需要对代码进行测试,并书写相关的用户使用及开发文挡。这本身也是个对目前开发思路的一个整理。第二个版本发布后的剩下的时间主要是用于测试和讨论将写好的代码Port到CVS的事情。


GSoC certificate

GSoC项目完成证书

三个月 的GSoC活动的经历确实没有办法用文字完全描述出来,通过三个月的项目,我有幸同Mozilla及Eclipse ATF, Eclipse IDE4Laszlo等项目组的很多技术强人一起交流,收获了宝贵的项目开发经验。我的GSoC项目虽然已经阶段性完成,但是我还会继续开发维护暑假的项目。其实GSoC只是一个小小舞台,开放源代码世界还有更广阔的天地。在这次活动中唯一让我感到有点遗憾的是,参与GSoC 2006的来自中国大陆高校的学生太少。活动负责人Chris Dibona先生在参加OSCON 2006上发布了今年活动的一些统计数据,从中我们可以看到被录取的630位学生中来自中国大陆高校仅仅只有13人。我们中国学生软件开发能力上绝对不会比欧美学生差,我们也完全有能力、有实力参与到GSoC当中来。我的这篇文章一方面是想分享我参与GSoC的经历,更重要的希望有更多爱好开源运动的在校大学生能够参与到GSoC活动中来,用我们的智慧解决实际问题,来创造价值!

最后,感谢Google公司,为我们提供了如此高贵的实践机会。感谢Google总部Open Source office的Chris Dibona和Leslie Hawthorn,他们为协调活动的组织投入了大量时间精力,没有他们辛苦工作就不可能有Google Summer Of Code 2006的顺利完成。


评论:
(*^__^*) 嘻嘻……
 
发表评论

订阅 博文评论 [Atom]



指向此博文的链接:

创建链接



<< 主页

This page is powered by Blogger. Isn't yours?

订阅 博文 [Atom]