发现开源社区的扫地僧——Google Summer of Code 2015导师手记(1)

如果您是学生党且这个暑假又有时间和技术搞些开源项目的话,不妨再挣点小钱花花?而且是从 Google 挣钱哦~且看 @tonghuix 这篇入门文章。

下列内容转载自 @tonghuix 的博客,依据以CC-BY-SA 4.0许可发布。按照作者意愿,欢迎转载,请注明作者和出处。但请不要转载到 CSDN 及其下属网站。谢谢合作!评论请前往博客原文

前 几天,我指导的两名学生被Google接受,这样我就以导师(Mentor)身份第一次参加到Google Summer of Code中。很多朋友通过各种渠道,包括XMPP、IRC和微博私信,问我关于如何参与Google Summer of Code。我也确有想法写一篇文章,带着大家一起“骗”Google的钱。。。

三年前,洪谦兄以一篇划时代的《做一名开源社区的扫地僧 (上)》叩响了在中国推广Google Summer of Code的大门,其后在广州Linux用户组(GZLUG)邮件列表里他发表了另一篇长文,讲述参加Google Summer of Code的各种好处,以及学生参加所需要的各种经验。可以说,洪谦兄的这两篇文章,将参与开源项目必须掌握的一些内容很好的包容在里面了。

今年恰好我成为Google Summer of Code的导师(Mentor),也是我第一次做GSoC的导师。而之前当过GSoC的导师的中国人,好像也没留下什么文档。所以我打算不妨从导师的角度 来谈谈,更会结合在这段时间自己的经历和学习到的东西,力求深入浅出的表达出来。特别是想告诉那些有志于从事开源贡献的同学们,如何通过GSoC赚得第一 桶金,更开启自己的“开源生涯”。

注意,为了力求不与洪谦的两篇文章冲突和重复,凡是他已经着重强调过的内容、文档和相应的细节,我这里都略过不讲,毕竟他是从 Wine项目 的实践角度,我可能会从更大更通用层面去谈论。

声明:阅读本文之前,请确保已经仔细阅读过 Google Melange 上的 FAQ 文档学生手册。此文毕竟不是面向学生的FAQ,最多就算是我自己阶段性的感悟。

我参与的组织,提出的idea以及指导的学生

首先为那些心急的朋友,可能会好奇我今年参与GSoC的基本情况,所以首先就把一些事情先讲出来。GSoC主要面对的是开源社区组织,因此我参加的就是其中一个组织——FOSSASIA。FOSSASIA从2011年开始在亚洲区推荐自由和开源软件的落地工作,还是卓有成效的,他们也参加GSoC多年。去年我曾作为FOSSASIA的 Google Code-in 活动(也是Google资助的,旨在鼓励14~18岁高中生完成一些低难度的任务,进而参与到开源社区的计划)的导师参与其中,于是也就顺理成章的希望可以继续担任 GSoC 的导师了。

这次我提出来的idea也是在FOSSASIA组织下的,只有一个:Self-hosted Online communities Communication with OTR encryption。提出这个的主要目的和大概想法也是基于现实需求的,更多的依旧还是考虑这样一个项目相对简单,适宜学生群体上手,而且若有中国学生参与,也容易完成。

这个 Idea 从发出到3月27日截止,总共收到 4 份来自中国和印度学生提交的 Proposal,两名印度人,两名中国人,而且性别比例也是两男两女。从3月27日到4月27日的一个月间,与这四位学生不断交流和沟通,我按优先级排 序推选出了3个Proposal,最终Google和FOSSASIA的管理员确定了其中两位幸运者,在4月27日公布最终结果。

因此最终就是这两位入选,来自中国的 Iris Gou 和来自印度的 Heena Mahour。她们两位以优秀的 Proposal 和丰富的开源社区经历,打动了包括我在内的 FOSSASIA 所有导师,还有 GSoC 活动的管理员。

什么是 Google Summer of Code?Google这土豪为什么要设立这个?

先摘录一下 Google 官方宣传材料里的说法:

Google Summer of Code(谷歌编程之夏)已经把超过8500名学生和440个开源项目聚集到一起来创造上百万行代码。我们期待导师和学生加入我们来打造2015年最好的 编程之夏!谷歌编程之夏计划设计用来鼓励学生参与到开源软件开发中。从2005年开始,这个计划有这些目标:

– 鼓舞年轻开发者参与到开源项目开发中
– 在暑期为计算机及其相关专业的学生提供与学习相关的工作机会
– 让学生更多地接触到真实的软件开发环境(例如邮件列表规范,软件许可问题,分布式开发等等)
– 创造和发布更多的开源代码以惠及大众
– 帮助开源项目确立并带来新的开发者和提交者

我们将会为成功的学生贡献者提供5500美元的奖金,帮助他们集中精力在三个月内编写项目。这个计划完全在线实施。

从这段官方宣传文字里我们已经可以很清晰的看出GSoC的使命:鼓励大学生投身开源社区的开发中去,同时让学生学习开源开发的方法、规范和社区精神。可以说对Google这种土豪,投入巨资搞GSoC很大程度是一种公益行为,通过物质鼓励学生,贡献开源,而开源的大发展对Google来说也有利。

需要澄清的一些问题:

  • GSoC 不是……

    不是比赛,不是竞赛,不是考核,不是技能评定,更不能与国内某机构的所谓“开源大使”或类似的夏令营相提并论。因为竞赛或者技能评定因为学生攀比,都可能会带来舞弊,而舞弊对Google来说不仅损失金钱,更重要的是对GSoC的品牌不利,也无法达到真正帮助开源社区贡献的目的。最重要的一点,GSoC这货不能吃,不是吃的,也别问我是不是好吃。

  • 帮助就业?

    学生肯定会最关注这一点,尤其是中国的学生。实际上,这仅仅只相当于是个实习而已,对就业的直接帮助并不大。但在整个过程中学习到的知识、技能和能 力锻炼,对大学知识的查缺补漏是非常有好处的,可以很大程度上提升以后工作中的发挥。很多中国公司并不知道和了解Google Summer of Code,以及它对学生能力提升的价值,但很多外企对此还是很看重的。而另一方面,参加GSoC会占用大概三个月左右的暑期时间,而这段时间对很多大学生 来说,暑期往往是在各种出游闲宅或一些简单重复低层次(如饭馆打零工)的所谓“社会实践”中度过的,与其如此不如通过暑期提升自身价值和能力,是一次超越常人的挑战。事实上,一些非名牌大学,非一类本科高校毕业的学生,是完全有可能通过GSoC达到翻身的目的,更可以借此超过其他同龄人。

  • 谁是核心?

    正如前文所言,Google这么做的目的是让学生投入到开源项目的贡献中去,因此整个计划的核心就是开源社区,不是学生也不是Google,学生是参与者,社区里的导师是评定者,左右着学生的命运和社区自身的价值契合,而Google只是审核者。

学生参加GSoC的大致流程

Google Melange 的 FAQ 文档里写得很清楚有关学生参加GSoC的流程,我用图示的方式帮助理解。

学生参加GSoC的基本流程(点图片可以下载PDF版。CC-BY-SA
4.0)

学生参加GSoC的基本流程(点图片可以下载PDF版。CC-BY-SA 4.0)

从这大致流程里可以明白,学生参加GSoC需要很早就开始准备,事实上,大概一年半年之前就投入其中是很有必要的,比如可以从前一年的组织名单中找出心仪的组织,加入其中,了解该社区的项目、文化,组织结构和人际关系,进而通过项目找到合适的贡献。这些基本都可以在洪谦兄的文章里找到,他以 Wine项目为基础讲述的这些过程是非常非常具体和生动的。

这里要特别强调,不同的开源社区对待GSoC有不同的要求,不要根据 Wine 项目或 FOSSASIA 的情况,想当然地就认为其他社区也是如此,学生一定要仔细阅读社区内部的相关文档。这次很多学生申请FOSSASIA的时候,就发生了不熟悉 FOSSASIA的规定,也没有阅读社区里相关文档,而直接被拒绝的情况。可以说Google之所以没有规范开源社区接受学生的具体做法,很大程度也是为 了尊重社区的本身精神,体现以社区为中心的宗旨。

导师的角色、职责以及分工

当导师比学生轻松,有能力的都来当导师吧,带着学生一起“骗”Google的钱,哈哈哈哈。。。

首先说,为什么去做导师呢?又不给钱,5500美金是给学生的,导师拿不到任何好处。也没什么名望上的提升,除了像我这样写点博客自吹自擂以外,大多数导师最终无人知晓,对自身名望的提升基本可以忽略不计。导师的工作完全是为了社区的利益,为了引导学生参与到社区中来,贡献到社区中来,所以从这个意义上说导师是完全无偿的劳动,一切都以社区利益为先。

在我自己看来,导师的角色有点像是产品经理(PM,Perject Manager)。前期提出Idea,类似产品经理与客户沟通之后,得出来的一个大致开发需求;中间审核学生的Proposal,则是与开发者共同完成需求分析、技术解读和开发计划;而开发中间与学生的互动,则可以类比成不断检查开发者完成相应的Milestone,并与开发者协调修改开发计划的过程;最后项目完成,可以看成是产品发布、验收等。

不过与产品经理不同的是,导师要考虑学生的技术实力,工作时间分配,以及随时关注与此相关的技术变化,以便更好的指导学生完成项目。同时导师也还有一部分工作,是对中期和最终项目完成作出评定和验收,写出评测报告,以示Google此学生已经完好的做完了自己的工作。

一般来说,一个项目不是只有一个导师,一般会有多个导师同时协助,一个是主要负责,其余的都是备份和协助。以防主要负责的导师因为各种各样的原因无法完成时,顶替出现。一些备份导师是由组织指派的,还有一些是由Google指派的。

GSoC对导师的资质并没有限制,只要是参与该开源社区的成员,在组织中有过贡献的,深谙开源社区精神的,经过该组织管理员认可的都可以成为导师。 而且即便是提交了Idea,也可以不由提交Idea的人来指导,也可以由别的导师或该组织的管理员指派导师来完成。因此后备导师和协作导师就显的比较重要。

导师的前期工作

根据GSoC的导师手册,导师在前期是需要完成一些工作的,当然这些工作其实并不轻松。

比如首先就是如何写出一个idea,这一点其实就难住我了(不是因为如何用英文表达)。因为按照GSoS文档里提出来的建议,我的很多idea就不 是很适合。比如我想到可以考虑给北京Linux用户组重建网站(因为工作量较大,且烦复不好量化而做罢),还比如我考虑给FOSSASIA会议做一个自助 导览机器人(项目无法准确描述需求,而且规模太大只好算了)。

总之,最终我提出来的这个Idea还是和北京Linux用户组的同僚,并在SUSE Hackweek 12上,大家商量过以后一致觉得这还是比较好的一个Idea,所以才有了现在的状态。

其实在提出Idea之前,还有一件非常重要的工作,就是和组织的管理员沟通好,提出的Idea也能得到组织管理员的认可。比如我和FOSSASIA 的管理员Mario沟通,表达我的想法,他便给了我Github的提交权限,这样我就可以提交我的Idea了。这里要说明一下,不同的组织提交Idea的 方式不同,比如GNUFedora ProjectDebian ProjectGNOME 提交 Idea 是直接修改 Idea Page,这往往就是个 Wiki 页面,修改这个页面加上自己的Idea就行。而FOSSASIA的Idea Page是托管在Github上的,所以就用Github的方式,比如通过Pull Request,或直接提交commit。

提交了Idea之后,组织的管理员会来审核这个Idea,并与导师沟通修改,以方便学生更好的参与。

导师是如何选定学生的?

这是学生群体最关心的问题了吧。其实在导师手册里写的很清楚!那么我在选择学生的时候,也是基本按着文档里的要求来选(毕竟是第一次当主导师,还不敢偏离太多)。主要是考核如下几点:

  • 首先是Proposal的专业程度,反映了学生完成项目的能力

    比如我这个Idea,学生至少应该明白OTR(Off The Record)加密是什么,以及在XMPP聊天中的应用(前面我有写博文讲过);另外还有,学生是否考察过类似的开源项目,查看过相应的代码,考虑过是否可以直接引用到此Idea中,或自己实现的能力。因此在审核Proposal的时候,没能谈到这几点的我都会要求其尽快补上。

  • 与导师的有效沟通,表明学生的社区参与能力

    FOSSASIA有官方的邮件列表和IRC频道,我们所有导师都会考察学生是否会使用,并参与到这些社区常用的沟通中去,懂得基本的邮件列表礼 仪,IRC聊天方法和规范,并与其他社区成员打成一片。更重要的是,在Google-melange的后台,导师可以在学生的Proposal下面发评论 (学生也可以回复),而这些评论,同组织内的其他导师都可以看到,也都可以参与进来,一起来评判学生是否按照导师要求修改Proposal,参与到社区活 动中去。

  • 其他开源社区的参与

    参与过其他开源社区、开源项目的人,更容易融入到GSoC中来,更容易获得导师的青睐。因此我建议打算申请GSoC的同学,可以多多参与各种国际上 的开源社区,积累经验,在申请填写Proposal的时候,一定多多列举你在这些开源社区里的经验。比如我这次指导的学生 Heena,她曾在 KDE 社区中贡献多年,有深厚的社区基础,组织过印度高校的线下活动。你说不选这样的学生选谁?

    关于这个多说一句,为什么推荐是国际上的开源社区,主要是因为国内的开源社区尚不够成熟,名气也不大,除非碰上懂国内开源社区的导师,否则不会太多考虑这方面的。我推荐在北京的学生可以考虑北京Linux用户组来过渡一下,因为毕竟这是个在北京的国际化社区,社区风格与国外社区比较接近,作为一个跳板和桥梁,能够让你尽快与国外开源社区接轨。

  • 人情关系

    如果你和导师在社区活动或其他情况恰好认识,关系也比较好,那么导师会格外关注你,并会帮助你完成。这不仅仅是中国特色,全世界都如此,因为站在导 师的角度来看,他肯定希望由更熟悉的学生来完成,除了可以保证项目完成,更多的是因为这种互利的关系,让社区可以更好的发展。因此从一点一滴开始关注开 源,与潜在导师多多搞好关系,还是很重要的。

参加GSoC的学生需要哪些“软实力”?

通过对学生的遴选,以及参与其他项目(也就是并非我提出的Idea)的评选。我初步可以归结出学生的一些特性和品质,而有这些品质的学生,更容易获得通过。这些内容在洪谦兄的文章里亦有大段大段的谈论,但我依旧会站在导师的角度,说一些看法。

基本上,无论最终结果如何,整个过程下来,学生可以掌握和提升很多能力。这些能力无论对从事什么工作,都非常有帮助,因此这部分内容我会着墨较多。

首先,对中国学生来说,有三个能力必须掌握,其他国家的学生在这方面不是大问题,但对中国学生来说就是三座大山,要想搞定GSoC必须首先翻过这三座大山!

  • 翻墙。

    必会!!否则你可能连Google Melange后台的网页都打不开!

  • 不要用百度

    参加技术开发,活用Google是基本技能,这没的说!搜索娱乐新闻和花边爆料就随便你了。

  • 英文交流和阅读能力

    这里仅限文字交流,除非导师或组织有特别要求,加入语音或视频,否则大多数情况基本的英文文字交流能力就够了。阅读能力主要是阅读各种文档,可以通 过阅读Google Melange的文档来检测一下自己的英文阅读能力。根据我的平时感觉,现在大学生的英文能力足够应付了。

还有一些品质,不仅GSoC需要,参与各种开源项目也都需要,也都是一些非常重要的“软实力”

  • 时间规划的能力

    根据GSoC对Proposal的要求,学生还要提交每周的开发计划。通过开发计划可以明白学生在这段时间要做什么工作,有什么产出。往往一句话的 总结,就可以说明很多问题。这个规划时间的能力,其实也算是自我管理的一部分,不过我认为单独拆分出来更好。虽然开发计划在Proposal中的占比不过 10~20%,但时间规划与项目构架息息相关,时间规划能力也反映了学生对项目的理解、处置、控制和把握的能力。一个简明扼要的项目规划,往往胜过千言万 语。

  • 自主学习能力。

    这是很多中国学生的短板和弱项。何为“自主学习能力”?就是自己辅导自己学习,找到所需要的学习材料,制定符合自己特点的学习计划的能力(特 意加粗!)。还举我碰上的一个中国学生的例子,他的Proposal写的还是不错的,经过几番交流,看他的个人博客感觉在前端开发方面还是很有能力,对 Node.js/io.js非常熟悉,感觉完成项目问题不大,我因此一直很看好他,再加上是中国学生,我的民族自尊心作祟,强烈愿望想选他。直到有一天, 他问出了这样一些问题,这是该学生Proposal的评论区,可以看到我发的问题,以及他的回复(中间略过一些评论):

    2015-05-04-053306屏幕截图.png

    注意图中,最后那两个红框里的问题。这最后两个问题恰好说明了,他自主学习能力不强,不懂得自己找寻学习材料,学会自我管理和学习。其实他是所有申请学生里唯一一个指出 lets-chat 使用 Nunjucks 模板引擎的,说明他的开发能力非常强,但却问出”Should I learn them first?”这种让我啼笑皆非的问题。。。通过摘录的这些评论,其实也能看出来,他其实并没有很好的理解项目的需求和想法没有自己的主见,事事都依赖导 师的确认。再加没有足够的沟通和互动(一个月中总共只有6条互动评论,没有看到他参加IRC和邮件列表讨论)。因此我认为他可能没有强烈的愿望完成此项 目,也担心一旦选定他项目有可能半路流产的危险。

    另外,Google要求学生每周要写博客总结和展望,这其实也是要求学生通过GSoC,强制培养自主学习能力的一个过程。真可谓用心良苦啊!

    根据几年前,我在培训机构担任培训导师的经验,国内一些高校的学生,自主学习能力普遍不足,一些二类本科和三类本科、专科学校的学生,在自主学习能力方面,还是要多多加强训练。如何检测自己的自主学习能力?可以从FOSSASIA的Ideas Page里找一些你感兴趣的 Idea,尝试思考一下,假如你来做你会打算怎么做这个项目?从哪里入手?需要学习什么方面的知识?如何构建自己相关知识体系?

  • 好奇心和求知欲

    很多学生在这方面都不是问题,主要体现在Proposal上,比如是否提供了足够多的参考资料,Heena的第一版Proposal里提供了超过50条参考资料和技术文档(后来删减到20多条),足见她的学习能力。

  • 沟通能力

    上面已经多次强调与导师沟通的重要性,对申请GSoC的学生来说,与导师和社区其他成员的沟通,几乎是评判学生申请能否通过的铁律。但是沟通并不是 越多约好,比如因为我有挂IRC的习惯,4月中旬的时候很多申请的学生会在线问我很多问题,把我搞的不胜其烦(其他导师也同样被烦的够呛,结果他们后来都 不挂IRC了。。。233)。有些时候往往在我超级忙的时候,还会发来要求解释的邮件等等。

    沟通的要求是高效率的沟通。什么是高效沟通?就是在尽可能简短的沟通过程中,解决尽可能多的问题。比如这次获得 通过的中国学生 Iris Gou,她问我的问题往往并不多,大多依靠自己解决,但经过点拨和线下社区活动接触,她可以很快上手修改Proposal,找到学习的方向,让社区的成员 快速对她有比较好的印象,这就是高效沟通,同时外加她较强的自我学习能力,也为最终选定奠定基础。

  • 适应和社区融入能力

    这一点也是中国学生比较缺乏的。申请FOSSASIA的GSoC中,中国学生很少参与社区活动,也不在IRC聊天中露面,更不会花精力研究社区如何 运作等等,往往直扑项目而去。而很多其他国家的学生会考虑参与到社区中去,并且与导师通过各种渠道搞好关系。还比如 Heena,她还没发Proposal就在各种社交网络找寻我的痕迹,从Facebook到Twitter,再到Linkein和GNOME基金会网页, 几乎我有涉足之处,都被她找了个遍。。(简直人肉搜索啊),完全没任何隐私的感觉。这也反映了她希望可以拿下GSoC的强烈愿力,让人不得不佩服。

    因此中国学生若想搞好GSoC,适应一个社区的氛围,参与社区,融入其中的能力非常之重要,往往看似简单的一些交流和沟通,会让社区导师对你印象大 增。毕竟遴选学生,不仅仅是由导师选择自己指导的项目,有时候还会参与到其他人的评选中去,因此,与这个社区里的导师都搞好关系,还是非常有帮助的。而这 也是Google设立GSoC的初衷——推进更多学生参与到开源社区中去。

与GSoC相似的计划

说这么多,GSoC往往是针对学生的,但对已经毕业,或错过最后一次机会的大四/研三/博三的学生,还有没有更多机会参与类似的活动呢?当然有!

  • [**Outreachy

    **](https://www.gnome.org/outreachy/)

    曾经是著名的Outreach Progrm for Women(OPW)计划,这是由GNOME基金会联合其他自由软件社区,自由软件基金会、Perl基金会、Debian社区、Wikimedia基金会等发起的,旨在鼓励全球女性和跨性别者参 与自由软件的开发、文档、运营、市场和管理的计划。与GSoC相同,凡是成功完成者,每人也可以获得5500美金的奖励和全球开源会议的差旅补助。与 GSoC不同的是,GSoC主要面向计算机相关专业的学生,项目也是以编码贡献为主。而Outreachy则开放更多层面,除了开发,更包括了文档编写, 本地化翻译,美工设计,文案和新闻推广,市场和社区运营等开源社区所需的多个方面。同时也不仅仅局限在学生,只要是女性(包括跨性别者)都可以参加!事实 上,目前中国有至少3名女性已经成功完成了这个计划,她们涵盖了美工设计、项目开发和本地化翻译这几个方面。而这个计划目前的要求是女性和跨性别者,因此 如果男性想参加,只能挥刀自宫了!(不过可以去当导师。。嘿嘿)

  • 其他

    这里有一个列表,里面总结了几乎所有可以找到的各种开源夏令营和类似的实习项目。总之,若不幸错过了的话,依旧可以考虑参与其中。(或者像我这样做个导师)

持续的开源社区贡献更重要——发现扫地僧

Google Summer of Code计划高明的地方就在于,Google创造了一个共利共赢的平台,学生能拿到物质奖励,开源项目可以得到代码贡献,Google则收获了名望。正是 因为这种大家都得利的状态,所以才可以使其从2005年创立的十年来不断壮大。这就是为什么国内某些“开源”平台,刚开始声势浩大,结果半年多之后就开始 淡出人们视线,也很大程度是因为没有打造一个众赢的平台,而仅仅只是自己得利而已。

从Google的角度,创立Google Summer of Code的公益目的是非常明显的,它给学生的奖励除了5500美金,还有500美金的全球开源会议差旅补助,可以让学生参与开源项目的同时又能与全球开源 届的大牛,面对面深度交流。而这么做的最重要目的是要求学生持续的开源社区贡献

什么是持续的开源社区贡献?比如洪谦,他2012年参加Google Summer of Code,当年还是个大四的学生,为了“骗得”Google的5000美金奖励而加入GSoC,选择了给Wine项目报Bug,这个当年在他看来比较“清闲”的工作。当他成功拿到GSoC的5000美金之后,并没有停下在Wine项目上贡献的脚步,继续在Wine项目上作出自己的贡献,成为核心开发者,并成功入主Wine的母公司CrossOver。至今依旧活跃在Wine项目中,为大量Windows下软件可以运行在Linux和Mac OS X平台而努力。同时,他现在还自诩是“GSoC助教”推广和帮助希望申请GSoC的学生更好的加入,经过他的协助有多位学生都成功完成GSoC。他也正如 他自己所说,真正成为了一名开源社区的“扫地僧”!因此,洪谦这几年的整个过程就是实践了持续的开源社区贡献。

这么多年,参加Google Summer of Code的中国学生有多少呢?拍脑袋保守估计一下,至少100有余,而参加过的导师也在3~5名左右。在洪谦之前,推广GSoC的却几乎没有(只是“闷声 发大财”),很大程度因为这些学生,参加过GSoC以后,没有做到持续的社区贡献。简单来说,GSoC只是一个人“开源生涯”的起点,而不是终点。 GSoC结束并不等于不需要继续贡献开源了,相反更需要持续的贡献其中,可以不再继续GSoC的那个项目,那个社区,可以转投入其他项目,其他社区贡献。 这种持续的社区贡献,也正是Google Summer of Code和GNOME基金会的Outreachy(Outreach for Women)近十年来长盛不衰的法宝。

所以,作为GSoC的导师Mentor,我们的工作是什么呢?除了指导学生完成TA的GSoC项目开发,完成整个社区的开发任务,我们真正要完成 的,其实是在遴选和甄别学生的过程中,发现和培养那掩藏在芸芸众生中,可以如洪谦这样为开源社区持续贡献,投入毕生力量的“扫地僧”。

参考链接

Read More: