Apache brpc 项目 Committer 与 PPMC 成员培养全流程指南
2026/9/13 22:24:10 网站建设 项目流程

Apache brpc 项目 Committer 与 PPMC 成员培养全流程指南

【免费下载链接】brpcbrpc is an Industrial-grade RPC framework using C++ Language, which is often used in high performance system such as Search, Storage, Machine learning, Advertisement, Recommendation etc. "brpc" means "better RPC".项目地址: https://gitcode.com/GitHub_Trending/brpc/brpc

本文以仓库 community/newcommitter_cn.md 为核心骨架,系统梳理 Apache brpc 项目如何将普通贡献者培养为 Committer、再升级为 PPMC(Podling Project Management Committee,孵化项目项目管理委员会)成员的完整流程,涵盖提名前置条件、投票规则、ICLA 签署方式、GitHub 权限授予、PPMC 晋升等全部环节。读完本文,你将掌握 Apache 孵化项目社区治理中"贡献者 → Committer → PPMC"两级晋升的标准化操作路径,以及每一步背后的基础设施(whimsy、Apache ID、GitBox、邮件列表)与实操要点,可作为 PMC 成员、提名者与潜在候选人共同遵循的行动手册。

一、写在前面:brpc 的社区治理背景

brpc 是一个工业级 C++ RPC 框架,长期应用于搜索、存储、机器学习、广告、推荐等高性能系统(参见 README.md)。它同时也是 Apache 软件基金会(ASF)的孵化项目,社区治理遵循 Apache 的"社区大于代码"理念——不仅关注代码质量,更关注贡献者的持续成长。

在孵化阶段,brpc 社区的人员梯队分为三个层次:

层次说明
Contributor(贡献者)通过提交 PR、报告 Issue、参与讨论等方式贡献的个人
Committer拥有代码仓库提交权限的贡献者,由 PPMC 提名并投票产生
PPMC 成员孵化项目项目管理委员会成员,拥有项目治理决策权

仓库的 community 目录集中存放了与社区治理相关的文档,除本文核心的 newcommitter_cn.md(另有英文版 newcommitter_en.md)外,还包括:

  • CONTRIBUTING.md:面向所有贡献者的入门指南(Issue / PR 规范);
  • oncall.md:值周工程师轮值制度,负责日常 Issue / PR 维护;
  • release_cn.md / release_en.md:Apache Release 发布流程;
  • release_schedule.md:版本发布节奏规划;
  • releasecheck.md 与 apache-package-validator.sh:发布包校验清单与自动化校验脚本。

本文聚焦于新文档所定义的Committer / PPMC 发展流程,其余文档仅作为配套背景引用。

二、前置条件:谁可以被提名为 Committer

按照 newcommitter_cn.md 的定义,一名贡献者要被提名为 Committer,必须同时满足三条前置条件:

  1. 贡献者 commit 数量达到 10 个以上:这是对持续贡献的最低量化门槛,用于证明候选人并非"一次性贡献者",而是长期参与项目维护。
  2. 贡献者个人有意愿接受邀请成为 Committer:Apache 强调自愿原则,Committer 头衔代表责任而非奖励,候选人必须本人同意。
  3. 贡献者订阅 dev@brpc.apache.org 并发邮件介绍自己:这是候选人正式进入社区沟通渠道的标志。开发者邮件列表(dev 列表)是 Apache 项目协作的主阵地,候选人需要在此自我介绍、参与公开讨论,让社区成员有机会了解其人及其工作。

与贡献入口的衔接

"10 个 commit"从何而来?仓库根目录的 CONTRIBUTING.md 定义了贡献的入口与质量要求:

  • 遇到问题或需要新功能,可在项目仓库创建 Issue;有能力解决 Issue 的开发者可提交 PR;
  • 提交 PR 前需确认:代码符合 Google C++ 代码规范(缩进推荐 4 个空格);改动放置的位置与定位相符(例如特定协议的扩展不应放在 server.cpp、channel.cpp 这类通用类中,而通用改动也不应深藏在某个特定协议的实现文件里);必须包含对应的单元测试;
  • 提交 PR 后需确保 GitHub Actions 持续集成检查通过。

也就是说,候选人的 commit 应当是在上述规范下被社区接受的历史记录,提名者可以在评审这些 commit 的基础上评估候选人。

三、成为 Committer 的完整旅程(五步流程)

满足前置条件后,由提名者(通常为现有 Committer 或 PPMC 成员)发起,走完以下五步即完成 Committer 的授予。整个旅程以private@brpc(私密邮件列表,仅限 PMC/Committer 可见)与dev@brpc.apache.org(公开开发者列表)两个邮件通道交替推进。

第 1 步:在 private@brpc 发起讨论与投票

提名者在private@brpc邮件列表中发起候选人讨论并开始投票。投票通过的标准:最少 3 个 +1,且 +1 票数大于 -1 票数(即 "3+1,+1 > -1")

之所以在 private 列表而非 dev 列表进行,是因为人事相关讨论应保持私密,避免在公开渠道对候选人造成不必要的影响——这一点在本文后续引用的 secretary 建议中也会再次强调。

第 2 步:发送 close vote 邮件

投票结束后,提名者需要向private@brpc发送一封结束投票(close vote)的邮件,标题建议为[RESULT][VOTE]。这封邮件的核心价值在于:它记录了投票的最终结果,方便 ASF 秘书(secretary)在处理 ICLA、申请 Apache 账号时快速找到投票结果依据。

第 3 步:发送邀请信并确认接受

提名者向被提名人发送 Committer 邀请信(invite letter)。候选人回复接受后,提名者再提示其提交 ICLA(个人贡献者许可协议,Individual Contributor License Agreement)。这一顺序很重要:只有候选人明确表示接受,才进入 ICLA 环节,避免在候选人拒绝的情况下徒劳发起法律文件流程。

第 4 步:候选人填写并提交 ICLA

这是整个流程中法律层面的关键一步。候选人需要:

  1. 从 Apache 官网的 contributor-agreements 页面下载 ICLA PDF 表格(个人贡献者下载 ICLA 版本);
  2. 完整填写个人信息并签名;
  3. 将电子版发送至secretary@apache.org

提交时有三个必须注意的细节:

  • 信息必须完整:包括邮寄地址和签名,否则会被 ASF 秘书打回;
  • 只发给 secretary@apache.org:ICLA 含有个人信息(邮寄地址等),属于隐私数据,应单独发送,不应抄送 PMC 或其他邮件组;
  • 尽量填写 preferred Apache id 和 notify project 字段:这两个字段虽标注为 optional,但最好填上。填上后秘书会直接为新 Committer 申请好 Apache ID;否则就需要 PMC chair 或 ASF 成员代为申请,流程更繁琐。

ICLA 的具体签署方式详见下一节。

第 5 步:发送 announce 邮件

ICLA 提交完成后,提名者向dev@brpc.apache.org发送公告邮件,正式向整个社区宣布新 Committer 的加入。至此,公开公告完成,新 Committer 正式生效。

secretary@apache.org 的官方建议

文档还引用了 ASF 秘书对提名流程的三点建议(Suggested steps),与上述步骤一一对应,可作为流程合规性自查清单:

  1. 在 private@ 列表上完成讨论与投票——人事相关事项必须保持私密;
  2. 投票成功后,用一封新的邮件线程[RESULT][VOTE]标题将结果公布到 private@ 列表——这便于秘书在 ICLA 存档时定位投票结果并申请账号;
  3. 只有当候选人接受 Committer 身份后,才在 dev@ 列表上公告新 Committer。

这三点与五步流程互相印证,核心精神是:讨论私密化、结果可追踪、公告后置化。

四、ICLA 签署的四种方式详解

ICLA 的个人信息填写项(除签名外)可以使用 PDF 阅读器或浏览器直接填写,填写保存后再进行签名。文档明确支持以下四种签名方式:

方式一:打印后手写签名再扫描

将 PDF 打印出来,手工填写表单(姓名、邮箱、邮寄地址),然后手写签名,最后扫描为电子版发送。这是最传统、也最稳妥的方式,无需任何电子签名工具。

方式二:手写设备电子签名

使用支持手写输入的设备(如带触控笔的平板、笔记本等)直接在 PDF 上进行电子签名。适合熟悉电子化办公的候选人。

方式三:使用 gpg 电子签名

对已填写好个人基本信息的 PDF 文件执行:

gpg --armor --detach-sign icla.pdf

该命令会生成icla.pdf.asc(ASCII 装甲格式的分离签名文件)。前提是候选人提前生成与登记邮箱匹配的公钥/密钥对,这样秘书可以用公钥验证签名确实来自候选人本人。

gpg 密钥的生成与配置可以参考仓库中 community/release_cn.md 的"设置 GPG"章节——虽然该章节服务于 Release 签名,但其中gpg --version检查安装、gpg --full-gen-key创建密钥、以及"邮箱需使用 Apache 邮件地址"的建议,同样适用于 ICLA 签名场景:

# 检查 gpg 是否安装 gpg --version # 交互式创建密钥(注意使用 Apache 邮箱、Real Name 使用姓名拼音/Apache ID/GitHub ID) gpg --full-gen-key

方式四:使用 DocuSign 签名

使用 DocuSign 等电子签名服务平台完成签名。适合习惯使用专业电子签名 SaaS 工具的候选人。

补充说明:无论采用哪种方式,签署完成的 ICLA 及其签名文件都应只发送给secretary@apache.org,以保护邮寄地址等个人隐私信息。

五、如何赋予 Committer 在 GitHub 上的权限

Committer 身份确认后,还需要完成三项基础设施操作才能实际获得 GitHub 仓库的推送权限:

  1. 在 whimsy roster 中将候选人加为 Committer:访问 whimsy.apache.org 的 roster 页面(路径/roster/ppmc/brpc),在 brpc 的 PPMC 名册中添加该成员。whimsy 是 ASF 的成员管理界面,roster 记录了各项目 PMC/Committer 的官方名册。
  2. 让候选人设置 GitHub ID:访问id.apache.org完成 Apache ID 账号设置,并在其中绑定自己的 GitHub 账号。
  3. 让候选人访问 GitBox 设置页获取 GitHub 权限:访问 gitbox.apache.org 的/setup/页面,触发 ASF 与 GitHub 之间的权限同步。GitBox 是 ASF 对接 GitHub 的桥梁服务,完成此步骤后新 Committer 即获得apache/brpc仓库的写权限。

三步缺一不可:roster 名册是身份的官方记录,Apache ID 是账号体系的中心,GitBox 是权限落到 GitHub 的实际通道。

六、如何将 Committer 升级为 PPMC 成员

当 Committer 在项目中承担更多责任、需要参与项目治理决策时,可以将其升级为 PPMC 成员。与成为 Committer 的流程相比,PPMC 升级的讨论与投票同样在private@brpc进行,但多了与孵化器(Incubator)层面的对接。实际流程共六步:

  1. 发起讨论:在private@brpc中发起关于候选人升级的讨论,如果没有反对意见,则继续推进;
  2. 发起投票:在private@brpc中正式发起投票;
  3. 结束投票并通知孵化器:在private@brpc中发送邮件结束投票,并通知private@incubator.apache.org(Apache 孵化器的私密列表)。这一步是孵化项目特有要求——PPMC 成员的变更需要告知孵化器层面;
  4. 公告:在private@brpc和 dev 列表中 announce 新的 PPMC 成员;
  5. 设定权限:通过 whimsy.apache.org 的 roster 页面(/roster/ppmc/brpc)为候选人设定 PPMC 权限;
  6. 订阅 private 邮件组:通过 whimsy.apache.org 的 committers moderation helper(路径/committers/moderationhelper.cgi)帮助新 PPMC 成员订阅 private 邮件组,使其可以正常收发私密列表邮件。

七、配套社区运营机制:值周工程师与 Release 流程

Committer / PPMC 的发展并非孤立事件,它与仓库中其他社区治理文档共同构成 brpc 社区的运营体系。

值周工程师制度(oncall)

community/oncall.md 规定了 Committer 的日常维护职责——值周工程师机制:

  • 每天查看 GitHub 上 brpc 项目待处理的 Pull Request 和 Issue 列表,负责问题处理,包括标记 Issue、回复、关闭等;
  • 判断 Issue 是否为长期 Issue,若是则标记为 Pending;判断 Issue 类型(bug、enhancement、discussion 等);把 Issue 分配给熟悉该模块的贡献者;
  • 轮值时间为一周(周日早上到下周六晚上);
  • 轮值结束需编写值周 report 发送到dev@brpc.apache.org邮件组,并提醒下一位轮值同学。

从该文档可见,Committer 的核心日常职责就是 Issue/PR 的治理与分流,这正是社区对"10 个 commit"之外持续运营能力的真实考察场景。

Release 流程中的权限实践

community/release_cn.md 详细记录了 Apache Release 的 step-by-step 流程,其中多个环节依赖 Committer/PPMC 的权限与技能:确认 Release Notes、GPG 密钥配置、发布候选版本(RC)投票、releasecheck.md 逐项校验、以及 apache-package-validator.sh 脚本自动校验发布包的链接有效性、校验和、签名、RELEASE_VERSION 与 LICENSE/NOTICE 完整性、源码包是否混入二进制文件等。Release Manager 通常由有经验的 Committer 或 PPMC 成员担任,这也是候选人从 Committer 走向 PPMC 的重要历练路径。

八、总结:一条清晰的社区成长路径

综合 community/newcommitter_cn.md 与配套文档,brpc 社区的成长路径可以归纳为:

贡献者(10+ commits,订阅 dev 列表并自我介绍) ↓ 提名者在 private@brpc 投票(≥3 个 +1,+1 > -1) ↓ [RESULT][VOTE] 结束投票 → 邀请信 → ICLA(secretary@apache.org) ↓ dev@ 公告 → whimsy roster / Apache ID / GitBox 授权 Committer(日常承担 oncall 值周、Issue/PR 治理、参与 Release) ↓ private@brpc 讨论 → 投票 → 通知 private@incubator.apache.org ↓ announce → whimsy 权限设定 → 订阅 private 邮件组 PPMC 成员(参与项目治理决策)

对整个流程可以提炼出三条核心原则:

  • 私密与公开分离:一切人事讨论与投票发生在private@brpc,公告才进入dev@brpc.apache.org,这是 Apache 治理的基本礼仪;
  • 证据可追踪:投票结果以[RESULT][VOTE]独立线程归档,方便 ASF 秘书在处理 ICLA、申请账号时核对;
  • 法律与身份并重:ICLA 是法律文件,必须信息完整、单独发送、妥善签名;而 whimsy、Apache ID、GitBox 三件套则完成了官方名册、统一身份与 GitHub 权限的闭环。

无论是希望被提名的贡献者,还是承担提名职责的 Committer/PPMC 成员,都可以将本文作为可复用的操作手册。仓库中 newcommitter_en.md 提供了本文核心流程的英文对照版,CONTRIBUTING.md 则从贡献入口端定义了第一步该怎么走。

【免费下载链接】brpcbrpc is an Industrial-grade RPC framework using C++ Language, which is often used in high performance system such as Search, Storage, Machine learning, Advertisement, Recommendation etc. "brpc" means "better RPC".项目地址: https://gitcode.com/GitHub_Trending/brpc/brpc

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询