GSoC、CSDN 开源夏令营–我的开源社区之旅

By -

这是篇CSDN开源夏令营要求的周记,那边也许没什么人看,发在这里或许更能让更多学弟学妹看到,它记录的主要是我这半年来准备和参与两项重大学生开源活动的总结与心得,希望能给大家一点点启示和帮助,也就“挂”而无憾了。

GSoC的落选

谷歌编程之夏(Google Summer of Cgsoc logode, GSoC)是我去年从一个linux新闻网站上看到的。当时并没有太在意,毕竟google离我还是比较遥远的(呵呵…),后来在我们重庆Linux用户组的邮件列表里有人分享一篇文章《做一名开源社区的扫地僧》,该文作者无比聪明的反复拿5K美元奖金诱惑读者,讲他为了获得wine社区开发者的信任,提前一年多开始混社区,从报bug开始做起,总共报了200多个bug最后终于拿到GSoC的资格。

我就是受到这篇文章的启发,从今年(2014年)春节过后就开始留意这项活动的动向。在2月初开始我就开始选取跟随具体哪个开源社区申请项目。我仔细考虑过boost社区,还给他们的mai list发过邮件提醒他们的GSoC idea页面有排版错误,没过多久竟然就有人改了错误还回复了我,而且热情祝我顺利申请上GSoC。真的大受鼓励!不过后来认真考虑后,放弃boost作为我的提案项目。因为我的C++水平还是太水了,毕竟boost是全球最知名的开源项目之一,申报项目的激烈程度肯定超乎想象,我就不拿软肋和别的高手竞争了。最终机缘巧合,我决定跟随LTTng项目(lttng.org)来申报我的提案。考虑到之前我的读研的科研试验用到过类似的kernel tracer工具systemtap,并且从邮件列表的存档看还没有多少人准备抱lttng的大腿混GSoC。(因为貌似是个惯例潜在的申请人都会在心仪的社区mail list上先发个自我介绍先刷个存在感。但也不是每个人都会这么做,事后证明lttng今年接受的两个学生之前都从没有在邮件列表上露过脸,这让我这个几乎天天水在邮件列表上的人情何以堪)。

决定下了以后就是像打了鸡血一样看代码,调程序,在社区和那些开发者混脸熟。而社区里面开发者基本都在北美,于是我的作息时间也延后了几个小时,只为了晚上多几个小时能在IRC上或者邮件列表上和他们实时交流上。那段时间给他们的bug tracker提过bug,发过patch,讨论过新的feature,弄得不亦乐乎,后来证明,虽然脸是混的比较熟了,但是为了能选上,proposal还是要有点干货或者创意的。

如果要找外在的理由,我的提案是我在一天时间内拼凑起来的!!!我花了比较长的时间去理解代码,但是却没有花足够长的时间去思考我能在此基础上添加什么新意的功能)最要命的是,GSoC的提案deadline时间刚好是我开题答辩同一天!!! 于是本应该专心琢磨提案的时间去拼凑形式化的开题报告了(什么技术路线、实现方法之类无聊八股)。而我的GSoC提案在最后期限前一天才开始写,而且之前也没有形成一个比较有新意的点子出来。我在写前还和社区指派的导师交流过,他觉得我的点子过于简单,让我再做扩展,于是我在最后的一天时间里勉强写出了一个我比较没底的提案。

虽然最后还是落选了,但我觉得那段时间收获还是比较大的,从技术上说,通过看源码学到了不少gcc对c的扩展技术比方说c语言的constructor,指定数据、变量存放的段(segment)名,运行时链接等等,而且在科研实验也用lttng替换了systemtap。另外一方面我也了解不少成熟开源社区的工作流知识,这次仓促准备GSoC的努力使我真实参与到开源软件的开发与讨论中去,这是之前自己单打独斗写点写点小程序所没有的全新体验。而这些经验在几个月以后就派上了用场。

 

参与CSDN开源夏令营

csdn logo就在收到被 Google 拒掉(实际上是被 LTTng 社区拒掉)的消息几个月以后,看到CSDN要举办国内首届针对学生的开源夏令营活动的消息。自然是非常兴奋,果断点进去查看,幸运的是,竟然又看到了做trace的项目——KGTP。时不我待,我看了项目的简介和提案说明后就立刻给项目导师朱辉发邮件了。那段时间刚好比较轻松,我就开始着手研究起 KGTP 的代码了。因为有了先前一些经验铺垫,所以代码读得也不太慢,和朱老师的交流也非常愉快。因为准备过GSoC,所以惯性似地想要尽早给代码库做点贡献,我就从最容易的入手——给文档挑挑刺入手,(这个可是非常有用经验,看官下次申请CSDN 夏令营或者GSoC强烈推荐用上这一招,哈哈)开始了参与 KGTP 开源社区活动。后来的后来,朱辉老师就很早的锁定申请人了。

参与CSDN开源夏令营或与之类似活动的意义

当然奖金是一个显然的动力,5000元人民币毕竟不是个小数目,也足以看出CSDN投身中国开源运动所展示的诚意。不过从另外一方面来说,这样的活动也是引导学生真正参与开源软件开发中来。我相信对于绝大部分挣扎在普通高校稀烂的计算机专业教育的学生来说,能跟着导师写个CRUD系统赚点外快是最大成就(至少适用于我所在这所偏安一隅的学校)。在这样的学校里,上上下下的教师不是忙着拼凑论文,就是开着自己公司赚钱。开源是神马?不就是拿来抄袭偷懒的东西么。PUDN 这货一死,估计国内不少研究生都没法毕业了(好吧,给那货做了个广告)。也许参与这样的活动是这些学生开拓视野、进入开源界的最好途径。

CSDN与GSoC活动的不同

就目前来看,CSDN第一届活动就能产生这么大的影响力还是比较成功的。第一次就能吸引到一批 Intel、红帽阿里巴巴百度国内影响力巨大的公司来指导学生,瞬间感觉高大上有木有。不过邀请这些商业组织这也是有值得商榷的。是的,这些商业公司的开源诚意是有目共睹的,但是他们到底有多依赖社区还是比较怀疑的。举例来说,类似与KGTP 或者LTTng这样的纯粹依赖社区开发的项目来讲,所有的活包括开发新featue到写回归测试用例等等都是社区开发者利用自己空余时间志愿完成的。目前几乎所有的开源社区都缺人干活:缺人维护就版本,缺人回应邮件列表上用户的提问,缺人修复bug,确认写文档。而商业公司则可以花钱雇人来完成,他们不会太依赖社区人员的参与。所以我认为CSDN开源夏令营更应该支持那些独立的开源社区,让更多的学生成为开源社区的新生力量。当然,刚开始为了提升开源夏令营的影(BI)响(GE),拉来这些巨头来撑台面不失为明智之举。不过随着知名度的提升,应该更多的支持那些用热情支撑着的独立社区。

 

给后来要准备申请GSoC/CSDN活动的学弟学妹建议

1.早关注早准备

提前参与到社区活动中去,从简单的活开始做起,慢慢刷存在感。就像打怪练级一样,尤其是申请国际性质的GSoC活动,你如果想抱一个知名开源社区的大腿(类似于blend、boost之类的),如果想从众多高手中脱颖而出,必须让社区承认你的能力与对项目的热情。就像那篇扫地僧文章一样,提前一年开始,从最简单的贡献做起。当你提了200个bug以后没人会质疑你对项目的热情程度。当然你要能研究项目一年之久,对他的了解也比一般申请者深刻很多。

2.学会使用标准的通信工具

邮件列表?IRC?这不是上古时期的东西么?确实很古老了,邮件列表不如论坛查找方便,实时性差;IRC 显然没有 QQ 功能强大,连离线后频道(类似于qq群)里的记录都没法在下次登录后显示,但既然是加入到社区里面去,就要入乡随俗学习使用它们。一开始我还用qq邮箱订阅了LTTng 的邮件列表,然后社区里面就有一个2013届来自浙大的学长发私信提醒换个其他邮箱,之前我是图省事,后来换上了Gmail 发现 Gmail和mail list是绝配,阅读与撰写邮件确实非常好用。同时学习一点标准的电邮格式也是必要的,模仿者别人的邮件格式就没错。最后,最好使用自己中文名字缩写,一方面是正式一些,一方面美国那边到时候给你邮寄奖品(想的好远…)。

至于使用IRC看喜好了,我个人比较推崇使用IRC,那里集中不少高手,很多问题也许在搜索引擎上找不到答案,在相关频道上提问就有热心人帮你解答了。有时候你自己看代码有了什么问题想不明白的,希望快点得到解答的,就可以在IRC提一下,也许很快社区就有人回答你了。当然还得看时间,比方说 LTTng 社区周末是没有人处理patch的,他们都认认真真过周末的。另外不要吝啬表达感谢的言语,多说几句简单的thanks是总没错的。至于IRC客户端,我使用的是命令行的irssi,对我来说简单的聊天已经够用了,最重要的是它原生支持IPv6. 不需怎么折腾就能连到 freenode之类的 IRC 服务器上。使用IPv4 会要折腾一下,具体就不详述了。

3.摸准社区发展方向,提早准备proposal

CSDN现在还是由导师出idea,给学生省了不少事。如果你要自己写提案,相信我,真的很难。首先你要对现有软件有较深刻的理解,知道现在软件有什么不足,用户对软件什么新的期望。还有你的提的点子在技术上、时间上可不可行。提案太过简单或者太过复杂都不可行,太简单导师会认为你的工作量不够,或者没有太大意义,太复杂导师会认为你一个暑假完成不了或者超过你的能力范围之外。另外写提案时候是需要从系统架构级别提出改进方案的,因此还是要强调一下要早点开始准备,要不然你是没法写出详细的技术方案的。我建议你在正式撰写前先和导师好好商量一下,等导师觉得合适的时候再正式写。不过也许到时候为了公平起见,不会很明确的支持你的想法,但至少会给你的不足提意见,为了尽可能提高胜算,要充分重视这些意见。

喜欢琢磨内核,折腾 Linux,玩西南大学研究僧 GEEK 一枚,西南大学开源协会和重庆LUG 资深元老玩票~ 国防科技大学 phd candidate

3 Comments to GSoC、CSDN 开源夏令营–我的开源社区之旅

发表评论

电子邮件地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据