我们为什么要参与到 GSoC/GSoD 的活动中?

| 转载自:Xlab开放实验室

| 编辑:王梦玉

| 设计:杨敏


5 月 20日是Google Summer of Code(简称 GSoC)开源活动[1]公布入选开发者的时间,很高兴我们实验室的三位同学入选了今年的 program,其中两位是 GSoC,一位是 GSoD。


算起来我们实验室已经连续三年入选并参与该项活动了,第一批参与的同学中有和 @tianyichow同学一样已经毕业,并远赴瑞典的 KTH 开始攻读博士学位的。

正好借这个机会来总结一下我们参与 GSoC 系列活动的感想,为我们国内正在开展的两个类似的活动(OSPP[2] GLCC[3])做个宣传。


Part 1
GSoC 与 GSoD 是什么?

我们首先来看一下 GSoC。GSoC 是由 Google 公司主办的面向全球在校大学生(包括本科、硕士和博士)的年度带薪开源编程项目由 Google 联合创始人 Larry Page 先生发起,意在鼓励青年学生通过参与真实的开源软件开发来提升自身技术实力作为目前全球规模最大的带薪开源编程项目,首届活动于 2005 年举办,当年就有 42 个开源组织和 410 名学生参与。根据官网的统计,如今的 GSoC 已经汇集了来自 112 个国家/地区的 18,000 多名开源贡献者和来自 125 个国家/地区的 17,000 多名导师,已经为全球 746 个开源组织贡献了超过 4000 万行代码。可以说为全球开源生态的发展做出了巨大的贡献。


而且,从今年开始,GSoC 不再仅限于学生,而是向所有成年人开放,做出这一变动旨在更多的帮助改变职业方向、自学成才或重返职场的成年人。GSoC 的奖金根据地区的消费水平不同,从 2021 年开始,中国大学的学生平均为 1800 美金,美国大学的学生为 3000 美金。今年的 GSoC 根据难度分成了中型项目和大型项目,完成大型项目将会拿到双倍奖金,例如中国大学生可以拿到 3600 美金。而国内的 OSPP 活动根据难度不同,分为基础难度 8000 元人民币和进阶难度 12000 元人民币。

周迪之老师是我们 X-lab 开放实验室的老朋友,也是曾经 GSoC 项目的参与者与 mentor,给我们提供了很多有用的参考信息[4]


从他那里,我们了解到 GSoC 的几个重要特点


GSoC 项目中社区任务挑战的真实性

GSoC 已经由最初 Google 作为单方面的主要推动方,发展到今天成为一个平台型项目了。一方面会接受不同组织(包括企业、开源社区、高校等)的开源项目作为出题方,另一方面会接受在校大学生和广大社会开发者进行申请,最终完成所有的任务、导师、开发者的匹配 [5]


尽管 Google 定义了项目的运作框架并提供了所有的资金支持,但具体的实施则全部交由开源社区完成。这种由开源社区驱动的运作模式,导致 GSoC 没有一个严格统一的审核标准与难度级别。这并非缺点,恰恰相反,这成为了 GSoC 最有魅力之处。因为这就是真实世界中进行企业、高校进行学术项目研发的特点,真实性是 GSoC 成功运作最大的特点之一。

例 1,Google 虽然规定了项目申请的形式,即提交申请书「proposal」,但申请书的审核、筛选,甚至包括项目最后是否通过,则完全由开源社区负责。

例 2,Google 虽然为 GSoC 提供全部的资金支持,但 GSoC 中所有的项目题目,都是由开源社区自行制定。


GSoC 各个参与方的多样性

GSoC 活动第二大特点是多样性。这一点也是和开源社区的文化是高度一致的。Google 虽然也推出了极具指导意义的 mentor guide [6],但整个活动的主体还是各个社区,这些来自不同国家、不同年龄、不同背景的 mentor 会根据自己社区的特点进行评选与设定,一些开源社区除了申请书外还有附加申请要求,如完成一个指定小项目「如 ns-3 社区」,阅读相关参考文献「如 Framenet」,回答指定问题「如 TensorFlow」等等。在 GSoC 整个历史活动中,年龄最大的 mentor 有 80 多岁,最小的只有 10 几岁,相差达半个多世纪!


GSoC 项目的来源也是非常具有多样性的,一个入选 GSoC 的开源社区会维护一个 idea list,列出今年供学生申请的项目题目。这些题目有些来自于 mentor 感兴趣的新功能,有些来自于有待改良的现有功能,更有些直接就是学生自己提出的题目。他们涉及一个大项目的不同组件,技术需求也不一而足。

周迪之老师给我们看过一幅他曾经作为 mentor 参加的 Google 组织的活动(2019 年十月,德国慕尼黑),当时给他所带来的这种文化与地域多样性的震撼感至今难忘。其结果就是,开源社区往往能够产出非常有意思的点子。



任务边界的模糊性与灵活性

第三个特点是所需要完成任务的边界模糊性与参与灵活性。通常 GSoC 中的项目只有一个大目标,没有一个清晰的边界,需要申请人与 mentor 在不断的沟通中细化。例如,周迪之老师所在的网络模拟器 ns-3 社区,在往年 GSoC 中的一个项目实例,显示了 GSoC 中这种题目模糊性的特点。

 项目题目:Usability improvement

简化描述:Usability of ns-3 can always be improved, whether it is help with improving the user experience, visualizing data or software packaging (e.g. Docker containers). 

We don't want to limit the scope of proposals here; we will consider any project ideas that improve ns-3 usability in some way (please describe how you plan to get it done during the timeframe of GSoC). 

链接:https://www.nsnam.org/wiki/GSOC2019Projects

#Usability_improvements


可以看出,GSoC 中的任务,可以看作是申请人与 mentor 共同制定的一个项目目标、解决方案等细节,而全非项目本身决定的。这与那种有标准答案的考试完全不同。申请人与 mentor 更像是合作者,而非雇员与老板的关系。这种状况带来的一个重要结果就是双方参与的灵活性,通过线上异步同步的形式,可以跨越国界与语言,带来很多一些意想不到的结果。也是能够不断吸引申请者与导师,而且 GSoC 还有一个很好的特点,就是往届的申请者能够有机会转化成新一届的导师,而且这种转化也在不断提升,为这个活动和社区带来了源源不断的新生力量。

而 Season of Docs(GSoD) 则是一个面向领域是开源社区的技术文档写作的项目。该项目最早在 2018 年 10 月举办的 Google Summer of Code Mentor Submit 上宣布。首届于 2019 年举行,当时共收到全球申请 400 份,最终录取 52 人,终审通过 44 人,录取率接近 10%。


Google 希望通过举办 GSoD 这样的活动连接开源项目技术文档写作群体「Technical Writer」,共同繁荣全球开源社区。在 GSoD 中,开源社区可以与申请者一起对现有技术文档进行重新设计,创建新的文档体系,优化技术文档的生产流程,让人们更加流畅的编写内容。技术文档写作人员可不是单单写用户手册那么简单,他们的工作内容往往还涉及视频教程、图像设计、甚至在线展示等多个方面。

Part 2
编程夏令营可以给我们带来什么?

要回答这个问题,我们首先来看一下 Google 举办 GSoC 的流程与目的。


每年2月,GSoC 会公布一个 Mentoring organizations 的列表,随后学生可以从列表中挑选出适合自己的 organization,并且在 organization 的 ideas list 中找出自己感兴趣,觉得可以胜任的 idea,提出申请。一个学生最多可以申请 5 个 idea,申请在3月末开始4月初结束。ideas list 公布之后,会有持续一个月的 Community Bonding Period,在这个阶段学生需要尽快融入社区,跟自己的 mentor 建立联系,熟悉社区工具链,交流工具等等。


5月份,Google 会公布所有入选的学生,社区会给每个学生分配一个或多个 mentor,mentor 负责指导学生的工作,并评估学生的工作是否满足了社区的要求。基本上,mentor 的技术水平十分出色,而如果你参与的是 GCC、OpenCV 这类久负盛名的工具、语言、框架的组织下的项目,很可能你的 mentor 就会是这些组织的 Core Team Developer,他们都是在行业内备受尊敬的大牛。

举个例子,一位参与 GSoC 的开发并向主仓库提交了一段总计不超过 50 行的改动,但因为改动较为关键,组织内的几个导师和提交人充分的讨论了足足一周,覆盖了代码风格、性能优化、可测试性、向前和向后兼容、设计原则等方方面面,经过数次修改,最终成功并入,整个过程中的收获是巨大的。通常我们会讲被 review 是非常好的学习途径,越少而精的代码,被 review 的越详细,对应的成长就越快。而 GSoC 正是这种模式。


6月份开始正式的开发工作。开发工作一共有三个阶段,同时也会有三个 evaluation。每个阶段大约一个月,会有一个小目标,如果 mentor 认为你完成了阶段性的目标,Google 会在每次 evaluation 结束后发放奖金。


整个项目大概在9月份结束,但是社区的期望肯定是学生能够继续进行贡献,这也是他们获得新的 contributors 的一个重要途径。并且在持续贡献后,学生可以在来年的 GSoC 时申请成为 mentor,虽然 mentor 没什么奖金,但是有一个 Google 组织的 Mentor Summit,全部免费,很有吸引力。


因此,GSoC/GSoD 本质上,是一个教育项目!而 Google 运营这个项目能够获得的收益包括:


  • 品牌建设建立 Google 在科技领先、作为雇主方面的品牌。我们知道早期 GSoC 的项目来源都是 Google 内部开源出来的一批非常优秀的项目,向全球宣告其技术的领先性,对建立一个企业的技术品牌极具价值。

  • 人才储备:通过项目能够吸引全球最优秀的开源人才,再将其转化成员工。项目终审通过者不仅能够获得内推机会,还有机会成为下一年度 GSoC 的 mentor,成为整个 Google 源源不断地生力军。

  • 人力价值的再开发:发挥企业高端人才更大的价值,高端人才在企业内部时间长了往往会产生“无聊”的情绪,如何让这些人发挥更大的价值是企业需要考虑的一个重要问题,GSoC/GSoD 能够将 企业内部的技术大牛转换成开源项目的 mentor,结合个人的兴趣,继续给企业服务。

  • 建设开源生态:这点需要一个相对较长的周期,但却非常有价值,非常需要具有战略眼光的人来设计。企业在未来生态中是否能够占据一个好的位置,是否拥有规则制定与话语权的能力,是否能够引领整个行业的发展方向,都和这点有关。可以看到 Google 在这块运营的是相当成功的。


GSoC 和 GSoD 活动给所有大学生开发者带来了一种全新的机会与体验,包括:

  • 直接参与一线开源编程项目开发的经验,体验开源社区的日程工作与文化;

  • 直接接受一线资深开源软件开发者指导的机会,非常细节且持续时间长;

  • 实习薪资(中国大陆地区每人平均 1800 美金),不亚于暑期大企业实习的水平;

  • 远程工作经验,跨国家地区以及不同文化之间的分布式协作;

  • Google 公司内推机会(项目终审通过者),以及来年 mentor 的候选人;

  • 受邀参加开源社区组织的各类开发者活动的机会,宣传个人的品牌。


如果你对编程感兴趣、想要参与国际开源项目、或是计划寻找暑期实习,可以考虑申请 GSoC/GSoD 项目。那是不是所有的人,都适合参加这项活动呢?哪个社区和项目适合自己?这取决于申请 GSoC 的目的。


如果单纯为了入选 GSoC 而申请,会让 GSoC 的效果大打折扣。不可否认,Google 的奖学金是吸引很多同学参赛的目的之一,但绝不是唯一,甚至不是最重要的。这是前面提到的周迪之老师在采访了十几位 GSoC 入选者之后的一个体会。GSoC 所能带来的也远超于此,他把这些受访者的申请主要目的分为 5 类。

  • 学习导向型:这类申请人往往并不具备很丰富的开源开发经验,但希望通过 GSoC 提升实战技能。这其实也是 GSoC 成立之初的目的之一:“helping students find work related to their academic pursuits during their school holidays”。GSoC 的目的是教育。不要担心自己因为没有相关经验而不去申请感兴趣的项目,申请 GSoC 本身,就是一种学习技能的过程。而很多成功的入选者,并非因为是技能出众,而是在申请的过程中展现了这种学习的能力与激情!


  • 兴趣导向型:因为对某种技术的浓厚兴趣而申请 GSoC。因为 GSoC 中有非常多的足够好的项目,很容易找到和自己兴趣紧密相关的项目。例如,我们实验室的几位同学能够成功申请到 CHAOSS 这个项目中的任务挑战,一个非常重要的因素,就是实验室的一个研究方向就是做开源社区的健康度量。


  • 求职导向型:为找工作增加竞争力而申请 GSoC。这类申请人往往需要对日后求职方向有一个初步预判,然后在 GSoC 中寻找在该领域有影响力的开源社区。例如,ScummVM 就是在西方的游戏从业者中还是有很高知名度的,就有通过 GSoC 的经历成功在游戏行业中继续发展的成功案例。另外,如果同学们有申请国外硕士或博士项目的计划,其实也可以通过申请 GSoC 中的大学研究团队项目来获取相关的学术界经验。


  • 背景匹配型:选择那些与自己背景匹配的 GSoC 社区也是一种很好的策略,会增加录取几率。这类申请人往往已经在某个领域有了一定的积累,因此在硕士生与博士生中很普遍。很多博士与硕士研究生申请人把 GSoC 当作自己科研课题的一个补充。很多人还在项目结束后与 mentor 联合发表了论文。例如,我们实验室的 Esther Xiao,一直就在开源社区度量与评估方面开展研究工作,选择 CHAOSS 的并成功入选也就非常顺理成章。


  • 价值观导向型:因对开源价值观的认可而申请 GSoC。这种申请人往往可以较为长久的对开源社区做贡献。很多人从 GSoC 参赛者最终成长为开源社区的 mentor。受益开源,回馈开源。越来越多的开发者对开源软件的理念和运作方式产生共鸣与认同,甚至将自己毕生的事业也放入其中。


这些目的分类仅仅是冰山一角。但清晰地了解参与 GSoC 的动机至关重要。它不仅仅影响到社区的选择,还会很大程度上决定你是否能够走完项目全程。毕竟 GSoC 是远程在线模式,在 3 到 4 个月的时间里,你需要有一定的自我管理能力。而明确目的的过程,也就是自我审视的过程。GSoC 对申请人主动思考能力的要求,从社区选择便已开始。


Part 3
对我国类似的编程夏令营活动的启发?

接下来,我们来说说已经成功举办过两年的开源软件供应链点亮计划(OSPP)。开源软件供应链点亮计划(Open Source Promotion Plan,OSPP)是自 2020 年起由中科院软件所和 OpenEuler 社区牵头组织的国内版 GSoC。我们 X-lab 开放实验室的多个开源项目,也是从一开始就积极加入了这个活动,并计划每年都会持续参与。


OSPP 的时间线相比 GSoC 延迟了一至两个月,在某种意义上 OSPP 可以看成 GSoC 的一个后备计划。因此学生如果申请 GSoC/JSoC 失败,可以在 OSPP 的规则下再进行一次项目申请。


例如,今年由阿里巴巴开源导师参与的31个核心开源社区加入中国科学院软件研究所 OSPP 2022 活动,共开放了 93 个开源任务,通过 3 个月的时间,带领同学们深度体验真实世界的软件开发,感受开源技术共建的魅力。


而我们实验室的 Hypercrx 插件项目[7]下的几个任务,也在开始如火如荼的进行讨论了。


再来看看 GitLink 编程夏令营(GLCC),它是在 CCF 中国计算机学会指导下,由CCF开源发展委员会(CCF ODC)举办的面向全国高校学生的暑期编程活动。活动将覆盖近千所高校,并联合各大开源基金会、开源企业、开源社区、开源专家,旨在鼓励青年学生通过参加真实的开源软件开发,提升自身技术能力,为开源社区输送优秀人才,为青年学生提供开放友好的交流平台,希望进一步推动国内开源社区的繁荣发展。

今年是 GLCC 举办的第一年,具体内容,感兴趣的可以持续关注。


目前来看,国内的几个编程夏令营活动的挑战还是非常大的。本质上它不是一两个活动的问题,是一个多方协同生态建设问题。Google 在一开始发动 GSoC 的时候,将自己最精锐的项目和专家团队放出来,作为技术界的一面旗帜,通过十多年的积累,完成了整个闭环工作。


Google 将 GSoC 作为一个教育项目来运营,教育的不是一两个人,而是整个行业,开发者群体是收益最大的群体之一,让每一位对编程感兴趣的人都能找到机会。开发者高兴了,开发者的工具生态构建起来了,自然就会有足够多的聪明人参与到整个开源生态、以及基于此的商业链条中,整个系统就这样慢慢的运转起来了。


我们国内由于类似的项目才刚起步,挑战自然是巨大的,包括:

  • 缺乏相关的共识与长远意识,各方参与的目标和动机或多或少都不一样,也并没有一个强势的主导方来通盘设计与推动,难以形成合理,特别是在开源资源本就少的这样一个新兴领域,加上我国整个软件行业的商业环境也还处于一个非常初步的阶段。

  • 缺乏大量优秀的项目 mentor,仅靠个人的兴趣爱好难以完成,需要企业界投入大量的人力资源;而国内企业能够想明白这样一个逻辑的还不错,没有足够多的优秀企业界 mentor 进行细致指导,我们的编程夏令营活动就会大打折扣;企业投入核心开发人员做 mentor,培养新人带新人,应该作为一个企业战略来执行。

  • 缺乏足够多的好的开源项目,虽然目前国内已经涌现出一大波好的开源项目了,甚至部分项目的国际化也做的非常好,但总体来看,我们的项目和国际水平还是有不小的差距,根据 2022 年 4 月份的OpenLeaderboard 榜单,排名前 20 的项目中,只有一个是由中国发起主导的开源项目,国际化的道路任重道远。

  • 缺乏中立客观的价值导向,将开源作为一个宣传与营销的手段,甚至出现部分 KPI 形的操作,而忽略了整个活动中最为关键的群体(开发者和 mentor),只有好像项目才能吸引到优秀的人,而优秀的人也才能生产出好的项目,如此循环。

  • 缺乏足够好的商业闭环上的支持,持续健康的商业化环境对开源生态建设至关重要,Google 之所以每年能够投入如此之大的资源到 GSoC 中,也是因为它在这上面所收获的整体价值回报足够大,成为真个公司战略的一部分。


但不管怎样,我们的编程夏令营活动,对于大学生群体来说,还是非常值得参加的,也非常的希望我们的编程夏令营活动在参考 GSoC 的基础上,能够做出一些我们自己的创新点与特色。开源永远不缺乏创新,就看你如何去发现它。


最后再来简单说说,广大的编程爱好者们,为什么会这么积极主动地参与到开源活动与开源社区当中。正好我们最新的一期《后互联网时代的乱弹》播客节目讨论了这一话题[9],李老师和庄老师的分享是非常地具有启发性,推荐大家有空去听听。

第一个关键词是舞台,开源社区就是编程爱好者的元宇宙。编程是相对门槛较低的一个创造性收益,我们每个人都有创造的需求。而创造者,像画家、音乐家,都会通过举办类似画展和音乐会这样的活动来展示自己,那么开源社区,特别是像 GitHub 这样的社会化编程平台,就是编程爱好者们的舞台,用现在热门的词来说就是元宇宙,而每一次的代码提交,就是编程爱好者们的通行证,是 NFT,展示着你在开源社区的“社会资本(Social capital)”。创作的欲望和炫耀的欲望是每个人都固有的。

第二个关键词是成就感,代码类和非代码类贡献的成就感,just for fun。当一个编程爱好者把代码写出来的时候,成就感就开始发芽了;如果有人愿意过来看一眼,并且看懂了,这种成就感会变大;如果这个人不仅看懂了,还来和我一起讨论,指出我的不足,甚至愿意跟随我继续做下去,这种成就感就无与伦比了。程序员的快乐就是那么简单。从人性的角度来看,满足人性的诉求,开源这件事情就不简单了。


Part 4
总结

我们用在 GSoC 邮件列表中一位 mentor 的话作为结束语。一位深度参与 GSoC 十年的“开源玩家”说到:

GSoC is (for us, anyway) more about growing the community than getting stuff done. ... The students that did a great job but completely left the community are just a memory... the ones that have been with us and that are now mentors, long after they participated in GSoC, are the ones we love.

GSoC 的意义在于开源社区的成长,那些活动结束后却只身离开社区的只不过是过眼云烟,而那些在 GSoC 结束之后相当长的一段时间内,与我们并肩前行、成为 mentor 的学生,是 GSoC mentor 们“喜欢”的人,mentor 们自己,就是这样的一群人。

感谢那些愿意长期贡献开源、热爱的开源的人!祝 GSoC/GSoD,以及我们自己的编程夏令营活动茁壮成长,大家有空也来我们 X-lab 开放实验室的社区多逛逛 [10]


参考资料:

[1] GSoC: https://summerofcode.withgoogle.com/

[2] OSPP: https://summer-ospp.ac.cn/

[3] GLCC: https://www.gitlink.org.cn/glcc

[4] 编程之夏: https://opensourceway.community/posts/opensource_talking/2020-02-29-gsoc-in-china/

[5] GSoC 的历史:https://google.github.io/gsocguides/student/history-of-gsoc

[6] GSoC 的导师培训:https://google.github.io/gsocguides/mentor/

[7] Hypercrx: https://github.com/hypertrons/hypertrons-crx

[8] OpenLeaderboard: https://open-leaderboard.x-lab.info/

[9] 后互联网时代的乱弹(第13期):https://www.bilibili.com/video/BV1KF411j7tP/

[10] X-lab 开放实验室:https://github.com/X-lab2017

# END #


相关阅读 | Related Reading

速读 OSI 合作的《2022全球开源趋势报告》


谢孟军:中国 Go 语言领军人创业第五年


盘点现有开源软件许可合规工具


开源社简介

开源社成立于 2014 年,是由志愿贡献于开源事业的个人成员,依 “贡献、共识、共治” 原则所组成,始终维持厂商中立、公益、非营利的特点,是最早以 “开源治理、国际接轨、社区发展、开源项目” 为使命的开源社区联合体。开源社积极与支持开源的社区、企业以及政府相关单位紧密合作,以 “立足中国、贡献全球” 为愿景,旨在共创健康可持续发展的开源生态,推动中国开源社区成为全球开源体系的积极参与及贡献者。


2017 年,开源社转型为完全由个人成员组成,参照 ASF 等国际顶级开源基金会的治理模式运作。近七年来,链接了数万名开源人,集聚了上千名社区成员及志愿者、海内外数百位讲师,合作了近百家赞助、媒体、社区伙伴。



本文分享自微信公众号 - 开源社KAIYUANSHE(kaiyuanshe)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

{{o.name}}
{{m.name}}

猜你喜欢

转载自my.oschina.net/u/3727380/blog/5539861