Apache Incubator 项目管理与治理规范
Apache Incubator 的治理与合规规范——PPMC 治理结构、ASF 投票规则与投票计数(Binding/Non-binding/否决)、Podling Release 双投票批准流程、Copyright/License 合规、CLAs 与软件授权、以及 ASF 基础设施与常见工具
Apache Incubator 项目管理与治理规范
本文聚焦 Apache Incubator 的治理与合规层面:PPMC 如何运作、ASF 投票规则如何计数、Podling Release(发布)如何获得双重批准、Copyright/License 合规与 CLAs 如何处理,以及 ASF 基础设施与常用工具。依据 incubator.apache.org 官方政策与资料撰写,供 PPMC 成员、Mentor、Committer 参考。
一、概述/背景
孵化中的每个项目(Podling)由 PPMC(Podling Project Management Committee) 治理。PPMC 的运作"像一个 PMC",但向 IPMC(Incubator PMC) 而非 ASF 董事会汇报;这是因为 PPMC 不能代表 ASF 做正式决定,涉及基金会层面的批准(如 ASF Release、成为 TLP)须由 IPMC/董事会负责。
治理的三大支柱:PPMC 自治、公开投票、合规审计。本文依次展开。
二、PPMC 治理
2.1 PPMC 的定位与职责
- PPMC 负责 Podling 的日常治理:组织决策、社区招募、向 IPMC 汇报进展。
- 向 IPMC(而非 Board)汇报,由 Mentor 协助撰写报告。
- PPMC 阶段就是为了让成员学习如何治理一个 ASF 项目;毕业时 PPMC 将整体移交给新组建的 PMC 或并入赞助方 PMC。
2.2 PPMC 成员加入
- 新 PPMC 成员的加入遵循投票流程。官方指南见 Podling PPMC Guide。
- 一般而言:在 PPMC 成员的 private 列表上发起讨论与投票,通过后更新 Whimsy roster、开通相应权限。
2.3 PPMC 成员职责
| 职责 | 说明 |
|---|---|
| 维护 status 文件 | 保持孵化信息与任务清单最新,是毕业核对的依据 |
| 监督新 Committer 引入 | 建立符合 Apache 实践的流程并执行 |
| 配合 Mentor 产出报告 | 前 3 个月月度、之后季度向 IPMC 汇报 |
| 在 dev 列表公开决策 | 透明、可问责 |
| 参与 Release 的 PPMC 投票 | 见第四章 |
三、投票规则(ASF Voting Process)
所有重大决定(接纳、晋升、Release、毕业/终止)通过投票完成。规则详见 ASF Voting Process。
3.1 投票标记
投票者使用如下标记表达态度(大小写不敏感):
| 标记 | 含义 |
|---|---|
| +1 | 赞成(Yes) |
| -1 | 反对(No,需附理由,通常视为 vetolike 反对) |
| +0 / -0 | 中立或弱支持/弱反对(不计入通过判定) |
| +1(绑定/非绑定) | 区分 Binding 与 Non-binding 计票 |
3.2 Binding 与 Non-binding
- Binding(绑定)投票:只有被授予相关投票权的人其票才算 binding。在 Podling 相关决策中,PPMC 成员的投票对 PPMC 决策是 binding 的;在 ASF Release / IPMC 决策中,仅 IPMC 成员的投票对 ASF 层面是 binding。
- Non-binding 投票:贡献者、旁观者的意见(+1/-1)仍受欢迎,用于体现社区共识,但不计入正式通过门槛。
3.3 通过条件速查
| 决策场景 | 通过条件(官方要点) |
|---|---|
| 接纳候选项目 | Sponsor(通常 IPMC)按投票流程通过 |
| Podling 的 PPMC 投票(如晋升 Committer、Dev 决策) | 依项目既定规则,通常多数 +1 且 -1 无正当否决(veto) |
| ASF Release(PPMC 侧) | 至少 3 位 PPMC 投 +1,且 +1 多于 -1 |
| ASF Release(IPMC 侧) | 至少 3 位 IPMC 成员投绑定 +1,且绑定 +1 多于绑定 -1 |
| VM 调毕业推荐 | IPMC 推荐 VOTE 通过后向 Board 提交 |
注意:-1 通常表明强烈反对并附理由;若意见未被采纳或未解决,通常应视其为止步信号,重新讨论后再投。VOTE 通常限时 72 小时。
四、Release 批准(Podling Release Approval)
Podling 的 ASF Release 必须获得 IPMC 批准后才能面向 ASF 正式发布。依据 Incubation Policy - Releases。
4.1 双重投票流程
- PPMC 在 Podling 公开 dev 列表发起投票,请求 PPMC 认可(endorsement)。
- 同时在孵化器的 general 列表请求 IPMC 批准(approval)。
- 两轮投票可顺序、也可按 Podling 判断同时进行;时间与形式须符合 ASF Voting Process 与 ASF Release Policy。
4.2 通过条件(双重要求)
| 要求 | 满足条件 |
|---|---|
| PPMC 认可 | 至少 3 位 PPMC 投 +1,且 +1 多于 -1 |
| IPMC 批准 | 至少 3 位 IPMC 成员投绑定 +1,且绑定 +1 多于绑定 -1 |
仅 IPMC 成员对 ASF 发布的批准是 binding 的。两轮都满足后 Podling 方可发布。
4.3 发布硬性要求
| 要求 | 说明 |
|---|---|
| 归档文件名含 "incubating" | 必须(MUST) |
| 归档含 DISCLAIMER / DISCLAIMER-WIP | 必须(MUST),见政策免责声明章节 |
| 通过官方渠道分发 | 必须经 http://www.apache.org/dist/incubator/<Podling> ;其他渠道按分发指南 |
| 在发布前掌握许可审查 | 源发布物中代码的许可要求须明确 |
五、Copyright / License 合规与 CLAs
进入 ASF 的项目必须做到知识产权清晰合规,这是孵化的核心目标之一(也就是 ASF 的 "intellectual property (IP) clearance")。
5.1 License 合规要点
- ASF 项目默认采用 Apache License 2.0(ASL 2.0)。
- 源发布物须满足许可要求:理解所纳入代码的许可是什么(copyleft 等不兼容许可需排查/替换)。
- 免责声明:孵化状态必须体现,标准或 DISCLAIMER-WIP 文本见 Incubation Policy。
5.2 CLAs(贡献者许可协议)
- ICLA:个人贡献者许可协议,个人加入社区贡献时需签署。
- CCLA / 企业管理层授权:公司员工集体贡献时,公司层面签署企业 CLA。
- 流程:通过 Mentor 与 ASF 秘书(Secretary)对接 CLA 提交与确认,相关页面 https://www.apache.org/licenses/#clas 。
5.3 已有代码/软件授权(Software Grant / Transfer)
- 已有代码进入 ASF 时,Mentor 协助处理License 转移、Copyright 转让(见 Roles 的 Mentor 职责)、Software Grant 等事宜。
- 需确保代码所有权/许可链清晰,未引入无法兼容 ASL 2.0 的组件。
5.4 合规 Checklist
| 检查项 | 官方依据 |
|---|---|
| 代码许可为 ASL 2.0 兼容 | Apache License |
| 发布物含 DISCLAIMER 文本 | Incubation Policy |
| 贡献者 CLA 已收集/确认 | /licenses/#clas |
| 已有代码已办理 Software Grant | Role & Responsibility(IP clearance) |
| 引入组件做许可审查 | Release Management Guide |
六、ASF 基础设施与常用工具
6.1 基础设施概览
ASF 提供统一基础设施,多数通过 Self-Serve 申请与维护(邮件列表、版本库、构建、DNS 等)。
| 工具/资源 | 用途 |
|---|---|
| GitBox / GitHub | 版本托管与镜像 |
| issues.apache.org(Jira) | Issue/Bug 跟踪,孵化相关键名如 INCUBATOR |
| Mailing Lists | 决策与沟通的主阵地,归档可查 |
| Whimsy(whimsy.apache.org) | 治理看板:roster、PPPMC、决议草拟等 |
| Website / 状态页 | Podling 门户与 status |
| 分发目录 | http://www.apache.org/dist/incubator/<Podling> |
6.2 常用治理操作
| 操作 | 途径 |
|---|---|
| 查看 PPMC roster | Whimsy:https://whimsy.apache.org/roster/ppmc/ |
| 草拟毕业决议 | Whimsy roster 内置功能 & committers svn 模板 |
| 建立/维护状态页 | projects/<podling>.html |
| 提交 Board 议程 | Board Agenda Tool:https://agenda.apache.org/ |
| 查询 Infra 自助 | https://selfserve.apache.org/ |
七、常见决策要点速记
- 绑定权隶属:PPMC 决策中 binding=PPMC;ASF 层面(Release/IPMC)binding=IPMC 成员;毕业最终由 Board 决议。
- Release 双门槛:PPMC +1 至少 3 且 > -1;IPMC binding +1 至少 3 且 > binding -1。
- 发布前缀:归档必须含
incubating,附 DISCLAIMER。 - 报告义务:前 3 月月度,之后季度(IPMC 可要求更频繁)。
- 合规是三权之一:许可、商标、CLAs 任何不清都可能拖后毕业。
八、官方参考链接
- Incubation Policy(含 Releases / Disclaimers / Termination):https://incubator.apache.org/policy/incubation.html
- ASF Voting Process:https://www.apache.org/foundation/voting.html
- ASF Release Policy:https://www.apache.org/legal/release-policy.html
- Release Management Guide:https://incubator.apache.org/guides/releasemanagement.html
- PPMC 指南:https://incubator.apache.org/guides/ppmc.html
- Roles and Responsibilities:https://incubator.apache.org/guides/roles_and_responsibilities.html
- CLA:https://www.apache.org/licenses/#clas
- 命名/商标:https://www.apache.org/foundation/marks/naming.html
- Whimsy:https://whimsy.apache.org/
- Self-Serve(Infra):https://selfserve.apache.org/