如何参与 ASF 投票?
解读
在国内 CouchDB 岗位面试中,面试官问“如何参与 ASF 投票”并不是想听你背诵 Apache 章程,而是考察三件事:
- 你是否真的在 ASF 邮件列表 里泡过,知道“投票只发生在邮件列表”这条铁律;
- 你是否理解 国内网络环境 下如何稳定参与邮件列表(Gmail 被墙、订阅确认信被拦截、邮件客户端乱码 都是高频坑);
- 你是否清楚 CouchDB 作为 ASF 顶级项目,它的 release 投票、IPMC 投票、board 报告投票 各自该在哪个列表、用哪套格式、走什么流程。
一句话:面试官想看“你既懂 ASF 规矩,又懂中国程序员怎么落地”。
知识点
-
ASF 投票类型
- 代码合并投票(lazy consensus):在 CouchDB 的 dev@couchdb.apache.org 列表,[VOTE] 线程,+1/-1 即可。
- 发版投票(release vote):先在 private@couchdb.apache.org 做 IPMC 预演,再到 dev 列表正式 [VOTE],必须 绑定 72 h 最小窗口,3 个 IPMC +1 且 无 -1 才算通过。
- board 报告投票:每个季度一次,由 PMC chair 在 board@couchdb.apache.org 发起,所有 PMC 成员 都要回复 [+1 | 0 | -1]。
-
国内参与路径
- 订阅列表:用 阿里云企业邮箱 或 腾讯企业邮(个人 163/qq 容易被拒),发一封空邮件到 dev-subscribe@couchdb.apache.org,收到确认信后点回复(注意确认信经常被归入垃圾箱)。
- 科学上网:如果 Gmail 转发失败,直接用 IMAP 收信(imap.apache.org:993)或 GitBox 镜像 读归档,避免梯子不稳错过投票窗口。
- 邮件格式:必须用 纯文本 UTF-8,标题以 [VOTE][CouchDB x.y.z RC1] 开头,正文给出 checksum、git tag、docker 镜像 三要素,否则 IPMC 会直接 -1。
-
投票礼仪
- 身份声明:国内开发者第一次投票要在签名里写 “This is my (non-)binding vote”,并注明 ICLA 已提交(没签 ICLA 的 +1 会被视为 non-binding)。
- 时差意识:ASF 默认 UTC 时间,国内候选人要把 72 h 窗口 换算成 北京时间 9:00 起止,并在邮件里写明 “Vote closes 2024-06-05 09:00 UTC+8”,方便国内同事跟进。
答案
要在国内稳定参与 ASF 投票,我按“三步走”执行:
第一步 搞定通道:用公司域名邮箱订阅 dev@couchdb.apache.org,确认信若被拦,直接去 https://lists.apache.org 读归档;同时把 imap.apache.org 加到 Foxmail,确保 72 h 内不漏信。
第二步 看清类型:若是 CouchDB 发版,先在 private 列表 预演 检查 LICENSE/NOTICE/CHANGES 三文件,再到 dev 列表发 [VOTE] 线程,正文给出 git tag、sha512、docker pull 命令,并 @三位 IPMC 成员提醒 binding +1。
第三步 规范投票:用纯文本回复,标题与原文一致,首行写 +1 (binding) 或 -1 (non-binding, ICLA pending),并附 校验记录:“sha512sum apache-couchdb-3.3.2.tar.gz 匹配官方签名,编译测试通过”。
这样即可在 国内网络环境 下 合规、高效、可追溯 地完成 ASF 投票。
拓展思考
-
如果公司内网屏蔽 993 端口,如何仍能在 72 h 内完成 binding vote?
答案:用 GitBox 的 REST API 拉取邮件 json,本地写脚本解析 [VOTE] 线程,再用 sendmail 通过 25 端口 回复,DKIM 签名 由公司邮件网关代发,确保 headers 不被 ASF 垃圾邮件规则拦截。 -
CouchDB 3.4.0 发版投票时,你发现 tar.gz 里还残留 GPL 依赖,国内时区已半夜,IPMC 无人响应,你该怎么投?
答案:立即 -1 (binding),并在邮件正文用 中文+英文双语 列出 GPL 文件路径,同时 @chair 要求 紧急中止投票;在国内第二天上午 9:00 UTC+8 前 追加 diff,证明已移除 GPL 并重新打 tag,推动 重新发起 [VOTE],既守规矩又体现 中国开发者的责任心。