全球最大规模开源社区实习——Google Summer of Code申请指南

不知不觉GSOC 2020已经结束两个月了,这也算是我今年参加的几个最有意义的活动之一。感觉这个项目在国内的知名度不太高,这里记录一下,也希望更多的人能够了解参与到这个全球最大规模的开源社区实习项目中来。

1 什么是GSOC?

根据官网介绍:

Google Summer of Code is a global program focused on bringing more student developers into open source software development. Students work on a three month programming project with an open source organization during their break from university.

Since its inception in 2005, the program has brought together over 17,000 student participants and over 35,000 mentors from 124 countries worldwide. Google Summer of Code has produced over 38 million lines of code for 715 open source organizations.

GSOC全称Google Summer of Code, 译为谷歌编程之夏,是全球最大的开源社区实习项目,它开始于2005年,每年会招募在校学生为经过挑选的开源社区工作三个月,由Google为入选的学生提供报酬。

参与GSOC的开源社区不乏那些鼎鼎大名的项目:OpenCV、 Debian、 GCC, 同时从2019年起,tensorflow也开始参与GSOC。除了以独立项目参与GSOC的社区外,也有不少小项目会申请各自基金会的名额进行招募,如The Apache Software Foundation,Python Software Foundation等,其中不乏精品project。

2 如何申请GSOC?

Google的官方申请指南:https://google.github.io/gsocguides/student/index

在所有GSOC的所有流程中,申请部分最为关键。GSOC每年的录取率都在20%左右,大概就是五个申请者会选中一个。每个入选GSOC的社区基本都会有一个页面指导想要申请本社区的hc的学生如何参与,同时一般会有一个idea list供学生选择,当然申请者也可以提出自己的一些idea,如果评审proposal的mentor们认为这个idea比社区提供更有意思的话,也可能入选(不过这种情况比较少见,一般都是从社区得的idea list里面选一个)。

在项目和idea的选择上,我的建议是选择熟悉的编程语言,有一定挑战性的idea。其中,社区的大小会影响hc的数量,比较大的社区如tensorflow可能会有10+的hc,而小的社区可能只有一到两个hc。另外,除了超级大佬,申请的时候要尽可能避开竞争激烈的项目。一般来说,AI相关项目的申请都是地狱难度。

想要申请GSOC的学生则需要写一份proposal,提供所需信息以及如何完成这个project的具体计划。每个学生可以提交三份proposal,但只会入选一份。(也不建议广撒网,集中精力搞好一份proposal是最重要的。我今年提交了两份proposal,但其中一份根本没时间投入精力。)

今年proposal的提交日期从3月16日开始,到3月31日截至。最好提交一周提交或者提前把proposal发给mentor看,因为社区或者mentor可能会提一些意见要求修改。当然,如果你只提交一份proposal或者只做社区给出的入门任务挂掉的可能性是非常大的,除了把自己的proposal写的漂亮美观之外,就是要在场外下功夫了。具体来说,基本和出国套磁的套路差不多:

  • 提前联系。Google会在每年的2月20号(2020年是这个时间,其他年份是不是这个时间不太清楚,请密切关注官网动态)公布入选社区名单,从这个时间之后就可以参与社区了。当然像一些每年基本都会入选的社区,可以查看GSOC往年名单,提前开始准备也可以。
  • 积极参与社区讨论。如果能找到mentor的联系方式的话直接发邮件跟他讨论自己的想法。
  • 最后,最重要最重要的就是一定要给你想参与的项目提PR,越多越好。只要你提的PR够多,基本一定会入选。mentor永远青睐那些已经为社区做了一定贡献的申请者。我在申请的时候是社区最早提PR,同时也是提PR最多的人,所以在项目面试之前mentor就告诉我you are safe了。如果你没有什么idea的话,可以考虑从以下几个方面提一些简单的PR:
    • 修改readme,加badge
    • 规范化项目结构
    • 在一些平台上发布包。如把python包发布到conda上。
    • 添加测试用例
    • 完善项目文档,提供code example
    • 代码格式化

部分社区除了提交proposal之外,还会对部分申请者进行面试。因为我在面试之前已经有了免死金牌,所以虽然面试答的一塌糊涂(英语听力太烂外加把高数基本全还给老师了),最后还是过了。

总结一下的话,个人感觉在申请的时候最为重要是对社区做的贡献(PR数,回答issue等),其次是proposal中的项目计划,最后是社区讨论。

3 GSOC的工作流程

今年GSOC的申请结果在5月4日发布(今年因为疫情似乎时间调整了),之后学生就可以开始工作。整个项目采用远程工作的方式,Google期望参与者每周工作30个小时左右,但据我观察,大部分项目都不会需要这么长时间,一边干GSOC一边做另一份实习的也有。项目会持续3个月到8月底,期间会有三次Evaluation,在每个月月底进行,mentor会对你这个阶段的进行评估,评估通过就可以进入下个阶段,当然你也需要对mentor进行评估,就是一些mentor是否认真解答问题,回复是否及时的问题。Google会为你的工作支付报酬,根据购买力平价TTP,欧美的学生会得到5000到6000刀,中国的学生是3000刀(我第一次直观感受到中国是个发展中国家,我严重怀疑Google不是根据购买力平价,而是调查了中国互联网大厂给实习生的工资给出的标准)。报酬会根据每个阶段evaluation的结果发放,分别是900,900,1200刀,这笔报酬是不交税的。

我在今年的GSOC申请到的是Python软件基金会下的udiff项目,这个项目要求从头开始构建一个自动微分库。项目过程中主要线上交流,mentor还是比较认真负责的,虽然因为在欧洲时区不同,大家只有晚上可以实时交流,但是留的问题或者信息都会很快解答。第一个阶段的工作量是最大的,因为要熟悉社区和工作流程,后面熟悉起来就很轻松了,大概一周提三到四个PR,实现一些feature,具体做了啥可以看以前的文章:

结语

总的来说,GSOC相当于一个实习机会,但它比起其他实习来有几个优势:

  • 认可度高。有Google背书,算是一个很好的给简历增彩的项目
  • 自由灵活。远程办公,自由安排工作时间。而且很多项目都很轻松,每周有两到三天做一下基本就很容易完成。
  • 完成度高。基本都需要在mentor指导下独立负责一个feature或者一个模块,甚至像我一样从头开始实现一个库。不会像很多实习一样最后变成打杂的。

最后推荐一个GSOC的Github:https://github.com/gsoc-cn/gsoc-cn,有很多相关的资料,值得参考。

0 0 投票数
Article Rating
订阅评论
提醒
0 评论
内联反馈
查看所有评论