Google是如何培养开源项目贡献者的?
国内的开源项目不少, 但是外部开发者活跃贡献的不多, 到底怎么做才能培养外部的开源贡献者呢?
可向Google学习!
本文由4部分组成, 看看以培养开源贡献者为目的的全球顶尖赛事GSoC是如何运作的? 再以常年参与GSoC的PG开源项目为背景, 介绍如何参与GSoC赛事, 可作为国内培养开源贡献者的参考!
(实际上国内也有类似的赛事例如“开源之夏” https://summer-ospp.ac.cn/ )
Google Summer of Code (GSoC) 是什么?
为什么 PostgreSQL 社区可以参加 GSoC?
如何参加 GSoC?(针对贡献者)
深度解读:PostgreSQL 社区的 GSoC 2025
💻 Google Summer of Code (GSoC) 简介
Google Summer of Code (GSoC) 是由 Google 组织的一项全球性年度开源活动,旨在鼓励学生和开源新手参与开源软件的开发。
核心目标
GSoC 的主要目标是:
- 培养新一代开源贡献者: 为新人提供进入开源社区的结构化途径。
- 支持开源组织: 帮助各种开源项目获得新代码、新功能和新的长期维护者。
运作模式
- 指导组织(Mentoring Organizations): GSoC 首先会挑选一批活跃的开源软件组织(例如 Linux Foundation、PostgreSQL、Python 基金会等)参与。
- 项目提案(Project Proposal): 组织会列出他们希望完成的项目创意。贡献者(参与者)选择一个项目,撰写详细的技术提案并提交给组织。
- 夏季开发(The Summer): 选定的贡献者在夏季(约 10-22 周不等)在指定导师的指导下,远程完成其开源项目。
- 成果与报酬: 成功完成项目的贡献者将获得由 Google 提供的奖金。
参与者类型
- 指导组织(Organizations): 成熟的开源社区,提供项目创意、代码库和导师。
- 贡献者(Contributors): 主要是学生或开源新人,他们是实际编码、提交代码和学习的人。
- 导师(Mentors): 组织内的资深开发者,负责指导贡献者完成项目。
简单来说,GSoC 是一个为期数月的、有偿的实习性质的活动,它将有抱负的开发者与经验丰富的开源项目和导师连接起来,共同为全球的开源软件添砖加瓦。
为什么 PostgreSQL 社区可以参加 GSoC?
PostgreSQL 社区能够常年参加 Google Summer of Code (GSoC) 并取得成功,主要是因为它完全符合 GSoC 对“指导组织”(Mentoring Organizations)的要求:
① 作为一个活跃且成熟的开源项目
- 开源性质: PostgreSQL 是全球最先进的开源关系型数据库系统之一,其代码完全开源并遵循自由许可证。
- 活跃的社区: PostgreSQL 拥有一个庞大、活跃且管理良好的全球开发者社区,具备正式的邮件列表、代码审查流程、测试设施(如 BuildFarm)和领导结构。
- 历史和影响力: PostgreSQL 是一个长期存在的关键基础设施项目,具有巨大的行业影响力和稳定的维护历史。
② 具备指导能力和意愿
- 充足的导师: GSoC 要求组织必须能提供愿意投入时间、经验丰富的导师来指导贡献者。如您在前一篇文章的解读中所见,PostgreSQL 社区拥有 GSoC 校友成长起来的导师队伍,形成了良性循环。
- 管理组织能力: 社区能够承担 GSoC 所需的行政和管理工作,包括项目构思、提案审查、进度评估和与 Google 方面的沟通。
总结来说,PG 社区的本质是一个“大型、成熟、活跃、具有强大指导能力的开源软件项目”,这正是 GSoC 旨在支持的核心对象。
如何参加 GSoC?(针对贡献者)
如果您想作为贡献者(过去常称为“学生”)参加 GSoC,并可能选择 PostgreSQL 这样的组织,一般流程和关键步骤如下:
① 了解基本规则和时间线
- 资格要求: 您必须年满 18 岁,并且是学生或开源新手(GSoC 正在扩大参与群体)。
- 时间线: GSoC 是一个竞争激烈的项目,您必须尽早开始准备。导师组织通常在 2 月底公布,申请期通常在 3 月下旬至 4 月上旬。
- 官方网站: 经常访问 GSoC 官方网站(g.co/gsoc)查看最新的规则、时间表和常见问题解答。
② 选择组织并进行前期贡献
这是最关键的一步,尤其是对于像 PostgreSQL 这样竞争激烈的组织:
- 浏览项目列表: 一旦组织名单和项目创意公布(通常在 2 月底至 3 月初),仔细浏览 PostgreSQL 社区提出的项目创意列表。
- 深入研究代码库: 访问 PostgreSQL 及相关工具(如
pgmoneta、pgexporter 等)的网站、代码库和开发邮件列表。 - 开始小型贡献(强烈推荐): 尝试提交一个小的 Bug 修复、文档改进或功能,以此来:
- 熟悉工具链: 了解如何编译代码、提 Pull Request (PR) 和使用社区的沟通方式。
- 建立联系: 让导师和社区成员认识你,了解你的能力和沟通风格。
③ 撰写并提交项目提案(Proposal)
项目提案是您申请的“核心产品”,决定了您是否会被选中。
- 选择一个项目: 将您感兴趣的项目范围缩小到 1 或 2 个。
- 与导师交流: 通过邮件列表或聊天渠道(例如 PostgreSQL Hacking Discord) 积极与潜在导师和社区成员讨论您的项目创意、实施细节和技术选择。
- 提案内容:
- 清晰地描述您要解决的问题和计划的解决方案。
- 制定详细的里程碑(Milestones)和时间表(Timeline),明确在项目周期的 1/3、2/3 和完成时要达成的目标。
- 提供个人背景和相关技能,证明您有能力完成项目。
💡 建议:不要等到最后一刻才提交提案。尽早与导师沟通,根据他们的反馈不断完善您的提案。一个优秀的提案不仅展示技术能力,更展示了沟通、组织和项目规划的能力。
深度解读:PostgreSQL 社区的 GSoC 2025
以下内容总结自 Pavlo 的 Blog :
- https://pashagolub.github.io/blog/2025/GSoC-2025-wrap-up/
1. 创纪录的成功率与隐藏的挑战
文章开篇即宣布了惊人的成就:所有 7 名 GSoC 贡献者全部成功通过了最终评估,取得了 100% 的成功率。这一数字不仅代表了项目的成功完成,更体现了贡献者、导师和社区的努力与决心。
然而,高成就背后也伴随着挑战:
- 申请量激增与质量筛选难题: PostgreSQL 社区收到了创纪录的 213 份申请,是参与 GSoC 21 年以来的最高数字。但作者指出,这其中包含了大量垃圾邮件和 AI 生成的申请,使得筛选工作异常艰难。
- 名额限制: 尽管申请人数众多,社区只获得了 7 个项目名额(低于他们要求的 9 个),这表明项目增长的最大瓶颈不是人才储备,而是导师和项目容量。
2. 核心主旨:从代码到社区成员的蜕变
作者强调,GSoC 最有价值之处并非仅仅是代码本身,而是个人成长、决心和融入社区的过程。
- 定义 GSoC 的意义: 莫哈布(Mohab Yasser)的项目经验被引用为核心观点 —— GSoC 不只是写代码,而是 “深入接触 PostgreSQL 内部结构” 并在过程中成为专家。
- 建立信心: 蒂亚斯(Tejas Tyagi)的感言直击要害:“这次经历让我有信心能够在一个大型的、生产级的系统上工作和贡献。” GSoC 为年轻开发者提供了从学院派到工业级开发者的关键跨越。
3. 技术成果的多样性与深度
这七个项目覆盖了 PostgreSQL 生态系统的多个关键领域,展现了社区对核心功能、安全性、监控和工具链的全面关注.
不过没有核心功能啊, 也许是社区不敢让学生动核心代码? 又或者是这些项目都是PG周边生态的企业发起的原因, 有利益诉求. 不过不管怎么样, 就算是周边生态, 参与者也需要对PG本身对运作有非常详细的理解, 例如备份、连接诶吃, 总得理解内核机制吧.
| | |
|---|
| 在 pgmoneta 中实现 PostgreSQL 13-16 的增量备份。 | |
| 创建 pgmoneta-walfilter 用于 精确的 WAL 流操纵。 | 深入到 PostgreSQL 源码,理解 WAL 记录格式,对内核的理解要求极高。 |
| | 关注生产系统的安全性,掌握 TLS/SSL 协议等关键技术。 |
| 为 pgexporter 添加 扩展支持(15+个扩展)。 | 扩大生态系统监控范围,涉及 API 重构和多项目受益。 |
| | 关键的维护工作,确保项目对用户的可访问性和现代化。 |
| | 教会了贡献者倾听反馈,从提交到标签进行策略调整,并为 BuildFarm 贡献了重要工具。 |
| 增强 pgwatchRPC 集成(迁移到 gRPC,支持 ElasticSearch, Iceberg 等)。 | 系统现代化和实际影响(代码已随 pgwatch v4 发布)。 |
4. 成功的要素:转变与学习的能力
作者总结了成功贡献者的共同模式,这些是比代码更宝贵的软技能:
- 沟通 (Communication): 积极在 GitHub、邮件列表和 Discord 上互动,提问和寻求反馈。
- 灵活应变 (Adaptability): 能够基于社区反馈做出“聪明的转向”(Smart Pivots),例如 Mankirat 改变比较策略,Ahmad 迁移到 gRPC。
- 主人翁精神 (Ownership): 不仅完成分配的任务,还主动修复遇到的 Bug、改进文档,并考虑长期可维护性。
- 社区融入 (Community Integration): 不孤立工作,而是参与同行评审、互相讨论和庆祝成功。
此外,文章通过“调试故事”强调了跳出舒适区的重要性:Mohab 在 PostgreSQL 源码中添加调试打印来解决 WAL 偏移问题;Mankirat 为了 BuildFarm 客户端模块学习了从未接触过的 Perl 语言。这证明了激情和毅力比先前的经验更重要。
5. 社区的代际传承与未来呼吁
- 导师与贡献者的相互学习: 作者提到,导师也从贡献者身上学到了东西(“新的视角”),这种教学相长是社区活力的来源。
- 传承的循环: 许多本届导师本身就是往届的 GSoC 校友。这种“昨天的贡献者成为今天的导师,帮助明天的贡献者”的良性循环,是社区持续发展的基础。
- 最紧迫的呼吁:招募更多导师: 文章的重点落在了对未来的思考上。鉴于 213 份申请证明了人才的充足,社区增长的唯一障碍是缺乏足够的导师。作者发出了强烈的呼吁,邀请有经验的社区成员加入导师行列,以支持更多的项目和人才。
总结:
GSoC 2025 对 PostgreSQL 社区来说不仅仅是一次技术成果的展示,更是一次成功的社区建设和人才培养的典范。这篇文章的核心在于庆祝 100% 的成功率,揭示了个人成长和社区融入是 GSoC 的真正价值,并指明了社区未来发展中最关键的瓶颈——导师资源的稀缺。七位贡献者不仅交付了代码,更成为了一个全球社区中充满信心的、有能力的长期成员。