googlesummerofcode2017经验谈

whensean whensean     2022-10-11     600

关键词:

Google Summer of Code (GSoC) 2018 又要开始了. 如果想实现你心中的开源梦想, 用代码让世界变得更美好. 参加GSoC可能是你进入开源的世界最好途径.

GSoC是什么


Google Summer of Code是Google每年举办的一个活动. 从2005年开始到现在已经举办了十三届.

Google在GSoC中的角色是一个平台和资金的提供者. 通过这个平台, 学生能够找到自己心仪的开源组织, 为了能获得实现project idea的资格而展开竞争. 申请期截止之后, 开源组织会把自己选中的人选提供给Google, 由Google决定最终的入选人员. 如果成功入选, 入选者要在6-8月全职为开源组织coding来实现自己申请的project idea.

在整个历程中, 学生和组织会经历Google的三次审核. 工作量不达标的, 会被取消资格. 因为学生需要全职工作, Google会提供给学生一定数目的津贴. 2017年提供给中国大陆的学生的标准是3600刀每人.

这是一次竞争

参加GSoC并不是报名注册那么简单的事情. 根据GSoC 2017的数据, 在注册的20651个学生里面有4764个提交了propsoal, 最后被接受的学生有1318个. 从参加学生的国家来看, 印度569, 美国126, 德国55, 斯里兰卡54, 俄罗斯54, 中国大陆49 人员的分布基本这几年这样是稳定的.

参与申请GSoC的过程中, 可以说每一个你感兴趣的组织里面都会遇到很多的印度同学, 可能到最后你甚至会记下几个熟悉的印度姓氏. 来自美国的同学比想象中少的原因可能是因为Google给的津贴比起他们在当地的IT企业里面能找到的实习工资还是少很多的. 而来自中国大陆的同学的49人, 完全和我们CS学科的同学的数目不成比例. 尽管有一定的语言因素, 我还是认为这里最大的问题是信息鸿沟. 以中国同学的竞争力, 这里参加人数最多的应该是我们.

什么样的人适合申请GSoC?

做一个大概的轮廓描述的话, 我认为计算机专业现在大二的学生最适合申请GSoC. 因为从知识基础上来说, CS大二的同学已经学过了计算机的基础课 - 编程思想, 计算机组成原理, 数据结构. 同时不像大三的同学迫近准备升学, 工作, 他们的暑假时间最可能满足GSoC对全职的要求. 实际上, 在申请过程中, 我所看到的最大数目的申请者也是大二的同学.

但是, 我去年(2017)参加的时候, 我在读研究生一年级. 也有认识的同学, 是大三或者大四, 在网上也看到了博士期间参加的文章. 这里最重要的应该是你想要为开源做贡献, 并且有足够的责任感在相当大程度上独自完成你所申请的project.

GSoC的开源组织能够为从大一到博士的同学提供简单到写demo code和搭网站主页, 复杂到研究算法的各种难度的project. 如果是你用得特别顺手的开源软件, 你也可以自己提自己的project idea和他们讨论! 各种专业领域的同学都可以找到对应的可以做出贡献的开源组织.

不过这里要特别提醒的是, 对于在国内面临求职的同学, GSoC可能对你找工作并没有直接的帮助(除了去Google). 到IT企业实习拿到return offer来得更正确.

我的GSoC经历


缘起和准备

Google Summer of Code是16年冬天, 和同学一起打Google Kickstart的时候同学跟我聊起的. 后来和参加GSoC的同学聊, 他们也是从同学和学长那里听到相关的信息的. 一直到现在GSoC都应该还停留在口耳相传的状态. 后来上网了解了相关信息以后, 我作为谷粉自然是非常感兴趣的. 研一的寒假也给自己安排了小任务 - 关注GSoC的动态.

GSoC的开始都是开源组织先向Google提出申请, 通过之后GSoC才会列出他们的名单. 2017年的这个阶段, 一直持续到二月二十七日. 因为每年的组织基本都差不多, 尤其是大组织基本不会变. 在名单发布之前, 点进大组织的Forum发现里面已经讨论得热火朝天了, 看到了各种漂亮的简历. 各个组织已经基本列出了他们想要让学生实现的idea list, 有的讨论已经进行得很深入.

我的想法也从一开始的广撒网转移到关注适合自己项目上. 虽然我在自学机器学习相关的知识, 但是相比于能其他同学, 短时间内入手并达到不错的水平是比较难的. 我转向关注一些有工程难度, 语言合适的项目. 最后决定了帮Frescobaldi实现他们的Git支持功能. 作为一个乐谱IDE, Frescobaldi自带一种优雅, 用Pyhon也非常合我的心意. 我一开始就决定孤注一掷, 因为在从名单发布到开始申请的二十天时间里我最多只能够深入了解一个软件. 如果我能够更早地了解开源组织, 我可能会和几个组织接触.

套磁

名单发布的那天, Frescobaldi的Google Forum就挤进去很多的同学. 一共有十几个同学出现过, 除了我和一位上交的同学一个欧洲的同学一个美国同学剩下的都是印度的同学.

开始的几天讨论如何配置运行软件, 很快大家很快就进入了"套路"- 提PR(Pull Request). 方法很简单, 从Github的issue里面找已经有的wish, 如果看起来还简单, 就尝试自己实现然后提PR让组织的人员检查. 相比于提PR, 我的方法更直接, 通过读源码, 我尝试用了一周实现了一个基本能运行的Git支持Demo.

因为组织只是给出一个idea, 对于具体的细节则需要深入的讨论和思考. 在申请开始之前, 我把自己对于IDE里面的版本支持功能应该实现到什么程度和可能的mentor进行细致的交流. 我们也尝试一起调研了别的IDE里面的版本支持的情况. 我尝试给出了设计图. 因为之前对Python的使用仅限于一年前写过爬虫, 二十多天里面写Demo, 英文邮件交流, 写proposal着实让我忙了一阵. 从Forum的帖子数来看, 在所有的参加者里面我和mentor的交流是最多的.

可惜的是因为时间的因素, 上交的同学中途退出了. 他承诺了他会负责对Frescobaldi功能的翻译工作, 尽管他没有继续参与GSoC, 过了几个月之后他还是做完并提交了作品, 令人钦佩.

提交了proposal还有一个月才公布结果, 我为了维持mentor的好感度(hhh)还有为了熟悉我要工作的那部分代码和工作流程又提了两个PR. 当然, 最终如愿入选.

GSoC的工作

虽然做Demo只用了一周. 但是, 真正要实现一个大家会使用的功能要花多得多的时间. 有很多琐碎的问题:

  • 和mentor不能面对面, 我们花了很多时间统一用语和交流想法.

  • mentor对于一个软件的未来功能的思考和我不同, 尽管现在这部分能实现的功能看起来简单, 但是要为以后的能想到的拓展都做好准备, 在类的抽象结构上是他的主要关注点.

  • 对Git的支持会受到Git版本的影响, 命令会有变化. 常常需要自己反复读文档和实验过之后才能写完一个简单的函数.

  • 对于如何异步执行命令, 我提出的是一个命令队列. mentor希望使用定时卡表执行的方式, 并认为我的方法不Pythonic. 我坚持了我的观点.

  • ...

mentor的耐心和严格对于提升代码质量很有帮助. 我写代码的过程中也尝试像mentor更多地从模块的角度思考而不是沉迷于一两点细节.

GSoC的规定中, mentor并没有拿到谷歌的钱. 所以, mentor对于学生的帮助是他们出于mentor身份的道德责任, 而GSoC是学生一个人的责任和项目. 一开始我会讨论很多细节问题, 后来就逐渐尝试自己来处理. mentor会code review来判断我是否写了有问题的代码. 后来在和mentor的交流中, 他也聊到了这个问题. 因为我一开始的问题比较多, 他是担心的. 因为带一个比较差的coder, 对于双方都是一种折磨. 对于mentor来说, 他自己写要比给我解答问题更快. 对于我, 凡事都问不能培养我的信心. 对于这种质量监控的场景, 要想好什么程度的问题是完全属于自己的责任范围, 什么问题是需要和mentor讨论决定的.

三个月是比较长的时间, 在其中难免会遇到问题, 而且由于是远程工作. 是否做出贡献, 是否全职工作全靠个人的自觉. 我的mentor因为要完成他的博士论文, 会有有半个月的失联期. 没人监督的情况下, 坚持工作和输出是一个考验. 最后GSoC结束时, 我完成了Git支持的基础设施搭建. Git diff和revert功能. 还有部分未经测试的git stage代码. 跟我最初proposal里面提出要完成的工作, 还算差强人意.

不过从整个功能的完整实现来说, 还需要后续许多精力的投入. 可惜的是, 结束后一直到今天只修了两次bug, 惭愧.

GSoC能带给你什么


  • 最基础的-可能是第一次开源经历
    这个开源和自己建一个repo不和人交流是完全不同的体验. 你会熟悉读一个软件的源码, 在issue列表里面和别人讨论架构和feature, 提交自己的PR做出贡献. 这是你进入开源世界第一步. 你可能在开源的门外已经徘徊了很久, 而以后面对其他的开源软件你就驾轻就熟了.
  • 认识一群厉害的人
    从一开始你就在和来自全世界的申请者竞争, 看他们的简历, 代码, proposal. 我常常惊叹大一大二的同学的proposal和简历可以写得那么优秀, 简历可以那么丰富有分量. 而开源这件事情往往就是1%的人做的事情, 因为它需要热情, 能力和时间投入. 所以你在开源组织里面遇到的contributor和你的mentor有很多值得学习的地方.
  • 写高质量的代码 - 可能是第一次被code review
    学校的toy code, 导师的垃圾项目和开源世界的大部分代码相比, 我相信你可以轻易得出结论. mentor的codre review也许是你第一次被code review. 知乎上有回答说, GSoC是你要自己完成一个要被很多人使用的feature, 会经过讨论, 测试和审查. 而一份互联网公司的实习很可能让你跟着业务需求做一些修改. 我认同这种说法.
  • 带着 "google summer of code" 的简历

  • 薪金
    尽管2017年降到3600刀, 折合24000人民币三个月. 这比互联网大厂的实习工资要高多了hhh

个人建议


  • 勇敢尝试
    GSoC被有些人渲染得非常难入选, 也有人说参加了什么都没学到什么.但是这本质上是一个小马过河的问题,你需要自己尝试以后才知道故事到底是怎样的.既然你看到了这个机会,为什么不试一试?

  • Talk is cheap, show me the code
    从组织的选人角度思考, 这是基本准则. 开源本质是公益性的活动, 而且对于参与者的水平要求也不低. 所以, 开源组织普遍面临的一个问题就是, 缺人. 缺能稳定贡献有质量代码的贡献者.
    GSoC每年给他们提供的名额是有限的, 所以开源组织总是希望找到的学生很靠谱, 可以说到做到而不是中途逃跑, 浪费他们有限的名额. 而如何证明你是个靠谱的人呢? 稳定出现频率,你需要经常出现在组织里,而不是隔一阵出现一下,突然联系不上,这会让他们很没有安全感.靠谱的代码能力, 你要让他们相信,把这个feature交给你,你能独立应付.所以这也是为什么PR成为"套路"的原因,没什么比你写代码证明你的编程能力更有说服力的了. 
    有意思的是,你的学校,学历, 专业都不是问题,因为对于一个外国的mentor来说,你来自中国的哪个学校对于他完全没有任何区别.这里只有简单的一条准则,Talk is cheap, show me the code 证明自己就好.
  • 做一个负责的学生
    如果能入选, 这将是一次remote working经历.没有人在旁边监督,保持全职的工作时间和工作质量并不是一件容易的事情. 

一些链接,可能对你有用


Google Summer of Code 2017 statistics part 1
How to write a kick-ass proposal for Google Summer of Code
Want to be selected for Google Summer of Code 2016?
samarkanov/proposal-GSOC13
MoritzLucaSchmid/GSoC-proposal

Google Summer of Code:网络分类数据集

】GoogleSummerofCode:网络分类数据集【英文标题】:GoogleSummerofCode:webclassificationdataset【发布时间】:2011-07-2015:52:18【问题描述】:我听说Google举办了(或将举办)网络分类竞赛,他们提供了一个大型(170k+文档)网站数据集,这些... 查看详情

2017级软工经验交流体验

  在本次交流会上,我最喜欢的一款软件是来自第十组的同学制作的名叫教室派的软件。尽管该软件在功能上有些许不足,但其美观的界面,浮标的设计,新颖的想法给了我相比于其他软件不一样的体验。  打开教室派软件... 查看详情

测试经验1_2016-2017(代码片段)

做测试两年,今天开始记录平时的工作总结:SCR应该要有CASE覆盖提的SCR一定要弄明白为什么会出现这个现象,不能发现问题了就扔给开发,写case的时候应该要注意写清楚是怎么设计这个CASE的,怎么造故障的,莱茵comments代码升... 查看详情

tiobe2017年4编程开发语言排名和20年经验体会

...声明不保证观点都正确,只是根据我近20年的学习和研发经验得出的体会,我也不会认为哪种语言最好,只是每种语 查看详情

2017新规科目三路考靠边停车注意事项经验要领

在车快接近靠边停车指示牌50米左右,开始将档位降为1当,因为这里挂科,很多因为车速过快,导致压线2当听到靠边停车后,开始右转向灯,停顿3秒做哟,开始向右转向3当车行进到靠边停车指示牌位置时,刹车,看下车距离右... 查看详情

软件项目经验谈

软件项目经验。自己总结自己记录,见笑了。刚写完手贱误删,因太重要,复记一遍。2017.5.121.界面a.样式及布局无论客户端还是网页,界面配色彩色不超过3种,字体大小不超过3类,字体不超过3种。功能用色彩不限制。菜单布... 查看详情

2017年高职高专技能比赛电子产品设计与制作赛项比赛经验分享

为了这个比赛付出了4个月的时间!可是最后什么奖都没有得到。这个比赛比的是工业上主流的单片机(ST,MSP都有可能)。 比赛的特点1.使用的单片机未定,比赛前1个月公布2.比赛的题目未定,猜不到,没法猜3.三人合作,一... 查看详情

中学数学竞赛的经验

全国高中数学联赛中国数学奥林匹克如何评价2017年中国数学奥林匹克(33届全国中学生数学冬令营)试题? (邓煜2017-12-06)就点评一下第三题吧,刚好最近做的东西和有理逼近有点关系所以还挺excited的……设,如果要估计的... 查看详情

教育经验

教育经验2017-07-14不管成绩怎样,没有什么优生差生的区别。家长们知道,每一个小孩都是种子,只是每个人花期不同,有的花一开始,就绚丽绽放;而有的花,却需要漫长的等待。不要紧盯别人的花,不要觉得别人家的永远都... 查看详情

软件维护工作经验总结(代码片段)

工作背景:2014年至今2018年,在大企业维护一个2005年上线的集团OA项目,数据库和代码偏大,文档缺失。维护期间又不断开发OA新的子项目。【工作方式篇】被动式工作(没事不找事,有问题解决问题。这不是消极对待工作,而... 查看详情

20220316简历a4纸正反两面

文章目录I联系方式II个人信息III求职意向IV工作经验2018年-11月-至今全城淘信息技术服务有限公司2017年07月-2018年-11月湖南微流网络科技有限公司2013年09月-2017年07月湖南高阳通联信息技术有限公司V项目经验2018年11月-至今全城淘淘... 查看详情

十多年的经验与心得

技术人生的职场众生相-十多年的经验与心得2017-07-1609:03by灵感之源, 11157 阅读, 48 评论, 收藏, 编辑前言我是个码农,在职场干了多年,在超过10个公司服务过,遇到过各种怪现状,拍案惊奇葩,不吐不快,... 查看详情

2017测试遇到的问题及经验点总结

2018-02-0120:06:50Lenovo别人交接给你的工作要及时核对,弄清不要一知半解却不问清楚遇到问题block了你的工作,不要窝在自己手里,抛出来及时汇报进度文档要面向业务小白,描述要清晰没有异议遇到报错要学会自己百度出错信息... 查看详情

拥有16年开发经验,我都使用了什么工具?[最近更新:2017-10-12]

[作者]网名:猪头三站点:https://www.x86asm.orgEmail:643439947@qq.comQQ:643439947编程生涯:2001~至今[共16年]职业生涯:14年职业岗位:软件架构/软件技术总监/软件研发兼职岗位:C/C++/Windows核心编程教学开发语言:C/C++;x86asm;ObjectP... 查看详情

写作小课堂:简历模版a4纸正反两面(20230221)

文章目录I联系方式II个人信息III求职意向IV工作经验2018年-11月-至今全城淘信息技术服务有限公司2017年07月-2018年-11月湖南微流网络科技有限公司2014年06月-2017年07月湖南高阳通联信息技术有限公司V项目经验2018年11月-至今全城淘淘... 查看详情

月活8.89亿背后:微信工程师细数兼容测试经验

作者:曾夏,微信客户端测试开发商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处。 原文链接:http://wetest.qq.com/lab/view/306.html2017年4月,企鹅智酷公布了最新的《2017微信用户&生态研究报告》。报告数据显示,... 查看详情

装机员系统下载合集(2017年贺岁版更新发布)!

系统下载(Win7+Win10)■ 本系统采纳几十位经验丰富的装机人员经验和建议,系统稳定,快速,预装软件更加适合完美■ 系统精简适当(装机人员可以把光盘目录下的GHO.GHO文件复制到U盘用PE安装)■海量驱动,以自由天... 查看详情

2017创业项目加盟好推荐,创业变简单

...导致了越来越多的上班族萌发了自主创业的想法。但自身经验的缺乏,亦或启动资金的短缺,导致了很多人只停留在“想创业”这一想法上,而没有真正的去实践。那今天小编就让大家了解一下创业加盟的好项目有哪些,不用担... 查看详情