发现开源社区的扫地僧——Google Summer of Code 2015导师手记(1)
前几天,我指导的两名学生被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需要很早就开始准备,事实上,大概一年半年之前就投入其中是很有必要的,比如可以从前一年的组织名单中找 出心仪的组织,加入其中,了解该社区的项目、文化,组织结构和人际关系,进而通过项目找到合适的贡献。这些基本都可以在洪谦兄的文章里找到,他以 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的 方式不同,比如 GNU 、Fedora Project、Debian Project 和 GNOME 提交 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的评论区,可以看到我发的问题,以及他的回复(中间略过一些评论):
注意图中,最后那两个红框里的问题。这最后两个问题恰好说明了,他自主学习能力不强,不懂得自己找寻学习材料,学会自我管理和学习。其实他是所有申 请学生里唯一一个指出 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
曾经是著名的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项目开发,完成整个社区的开发任务,我们真正要完成 的,其实是在遴选和甄别学生的过程中,发现和培养那掩藏在芸芸众生中,可以如洪谦这样为开源社区持续贡献,投入毕生力量的“扫地僧”。
参考链接
原文链接:https://tonghuix.io/2015/05/mentor-in-google-summer-of-code-1/
This work by tonghuix is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported
不错的文章,内容一针见血.禁止此消息:nolinkok@163.com
该行动了。。。