Apache Incubator 项目孵化流程指南

从 idea 到 graduation 完整梳理 Apache Incubator(ASF 孵化器)——提案、接收、建立 Podling、季度报告、导师/社区治理、毕业与终止全链路,含各阶段 Checklist 与关键决策点(VOTE/Release/Board resolution)

Apache IncubatorApache Incubator2026/10/11

Apache Incubator 项目孵化流程指南

Apache Incubator(Apache 孵化器)是 Apache 软件基金会(ASF)设立的孵化项目管理委员会(IPMC),为希望进入 ASF 的新项目(称为 Podling)提供治理模式、社区建设、法律合规与基础设施等方面的指导。本指南基于 incubator.apache.org 官方资料与真实流程,完整梳理从提交 idea 到毕业(graduation)/终止(retirement)的整条链路,并给出各阶段 Checklist 与关键决策点(投票、Release 审批、Board 决议)。

一、概述/背景

Apache Incubator 是 ASF 的"项目入口"。任何希望成为 ASF 顶级项目(Top Level Project,TLP)或并入已有项目成为子项目的开源项目,都必须先经过孵化流程。2002 年 10 月 ASF 董事会通过决议成立 Apache Incubator PMC,其核心目标有三:

  • 接受新项目进入基金会(accept new products into the Foundation);
  • 提供指导与支持,帮助每个新项目建立自己的协作社区(guidance and support);
  • 教育新开发者理解并遵循基金会成员定义的协作开发哲学与规范,并在社区成熟后向董事会提议将项目提升为独立 PMC。

截至 2023 年 4 月,Apache Incubator 已协助 335 个 Podling,其中 239 个成功毕业;超过 300 位导师(Mentor)参与过指导;孵化器同一时刻通常承载 25~50 个 Podling;单个项目孵化周期平均约 1.5 年。

1.1 相关主体速览

Apache Incubator 流程涉及多个相互关联的主体,其关系如下表所示:

主体全称 / 地位在流程中的职责
ASF Board董事会由 ASF Members 选举产生;最终授权创建 TLP、任命 IPMC 主席、通过毕业决议
IPMCIncubator Project Management Committee(孵化项目管理委员会)承担接纳、监督、指导 Podling、评估毕业/继续/终止、向董事会月度汇报等职责
IPMC Chair孵化器 PMC 主席对孵化器整体政策及执行负主要督促责任
Candidate候选项目提出孵化申请、在提案阶段有 Champion 的项目
Champion发起人/担保人一名 ASF Officer 或 Member,帮助候选项目完成初始提交并推动进入孵化的投票
Sponsor赞助方决定候选项目是否值得进入 ASF;可为某个 TLP 或 IPMC 本身
Mentor导师由 Sponsor 提名、必须为 IPMC 成员;指导 Podling 遵循 Apache Way、监督并向 Sponsor/IPMC 汇报
PPMCPodling Project Management CommitteePodling 所属的项目管理委员会,负责自身治理,但对 IPMC 而非董事会汇报
Committer提交者拥有代码提交权限的贡献者;Podling 的初始 Committer 由 Candidate 提供

1.2 流程全链路地图

从 idea 到毕业/终止,一个项目通常经历如下阶段(详见后文各章):

提交 idea → 招募 Champion → 撰写并发布 Proposal → general@ 列表讨论与投票 → IPMC 接收为 Podling → 建立基础设施与 PPMC → 初期限月报、之后季度报告 → 发展开放多元社区 / 产出符合规范的 ASF Release → 评估毕业条件 → 社区投票 + IPMC 推荐投票 → 提交 Board 决议 → 毕业为 TLP 或并入子项目(或被终止/退役)。

官方主参考入口:

二、孵化前的准备(提交 idea 到形成提案)

正式进入孵化流程之前,候选项目需要做好充分准备。这段准备期决定了 Proposal 能否通过投票。

2.1 认知准备:理解 Apache Way 与自我评估

2.2 组建人与社区

  • 提前确定社区内部协作方式与未来目标,思考"为什么来 ASF"。
  • 招募 Champion(发起人):Champion 必须是 ASF 的 Officer 或 Member,理解 Apache 运作,能在您集齐资料前帮您导航流程。Champion 的职责包括:协助处理流程/ASF 相关障碍、识别可能阻碍毕业或引发孵化困难的问题、帮您找到合适的对接口、协助物色 Mentor、推动进入孵化的投票。
  • 提前考虑合适的项目名与产品名:进入孵化前应确定候选名称,Apache 品牌/命名规则见 https://www.apache.org/foundation/marks/naming.html;注意后期改名可能对社区造成破坏性影响。

2.3 订阅邮件列表

所有 Apache 决策通过邮件列表进行。进入流程前应:

2.4 准备 Checklist

孵化前准备阶段建议逐项确认:

检查项说明/官方依据
是否需要 Champion是,Candidate 必须有一位 Champion
是否确定 Sponsor可为某个 TLP(作为其子项目毕业)或 IPMC(作为 TLP 毕业);多数情况下 IPMC 为合适默认,可与 Champion 讨论
是否已确定项目/产品名进入孵化前应完成初步命名并做商标/品牌自查
是否已订阅 general 列表是,参与讨论与投票必需
是否已起草 Proposal是,进入下一章
是否规划了初始 Committer 集合Candidate 需提供初始 Committer 名单

三、提交提案(Proposal)与投票接收

提案(Proposal)是 Sponsor 投票决定是否接纳候选项目的依据文件。这一阶段的正式指南见 A Guide To Proposal Creation。

3.1 起草提案

  • 提案是公开的,会发布到开放、索引良好、广泛讨论的 general 邮件列表,因此应面向广大受众(潜在的开发者、用户)而非仅面向 IPMC。
  • 可通过 Incubator Wiki 的 New Podling Proposal 模板 复制创建新页面,在 Wiki 上协作迭代提案内容,并把最终定稿再发到邮件列表。Wiki 仅用于起草,讨论应放到邮件列表。
  • 提案不强求固定格式,核心是内容。模板仅作引导,可根据项目实际增删。

3.2 发布提案

  • 以明文纯文本将提案通过邮件发布到 general@incubator.apache.org,主题以 [PROPOSAL] 前缀开头,并在文中明确希望对该提案展开讨论。

3.3 讨论与完善

  • 若提案引发兴趣,通常会有热烈的公开讨论。这是意见形成的重要环节,多数提案需多轮修订以获得最广泛支持。
  • 讨论中出现的新问题应视为与孵化器互动的机会,不必视为煎熬。

3.4 发起投票并接收

  • 待提案基本定稿并形成共识后,可将提案付诸投票(VOTE)。投票规则遵循 ASF Voting Process(详见治理规范文档的投票章节)。
  • 若在 Wiki 上迭代,须保证 Wiki 页面与最终定稿一致,并把页面设为只读;在发起 VOTE 的邮件中内嵌最终提案文本或注明 Wiki 版本号。投票一旦发起,Wiki 页面不可再修改;如需改动必须取消本次投票、改后再重新发起。
  • 投票通过后:Sponsor 向 IPMC 请求将候选项目接受为 Podling;Sponsor 指派若干位 Mentor(必须为 IPMC 成员)。

3.5 提案阶段 Checklist

检查项说明
是否已完成命名自查是,避免后期破坏性改名
是否已确定 Sponsor是
是否已在 Wiki 协作迭代提案建议
是否已发布 [PROPOSAL] 邮件到 general 列表是
是否已就最终版发起 VOTE是
VOTE 通过后 IPMC 是否接收为 Podling是,进入下一阶段

四、建立 Podling(接收后的落地)

候选项目被接收后即成为 Podling,正式进入孵化。这一阶段的核心是把 ASF 的基础设施、社区结构与合规要求落地。

4.1 IPMC 的接收职责

接收后 IPMC 负责:对候选/Podling 的接纳与监督、确保其按基金会协作开发哲学产出软件、提供孵化历史与信息存储、协助 Mentor 履职、定期评价项目(毕业/继续/终止)。详见 Roles and Responsibilities。

4.2 建立基础设施(与 Mentor/Infra 协作)

Mentor 负责在 ASF 基础设施团队(https://selfserve.apache.org/)与 Podling 之间起桥梁作用。常见落地项包括:

基础设施项说明
邮件列表建立 dev@<podling>.apache.org、user@、private@<podling>.apache.org 等列表
版本控制建立 Git 仓库(gitbox / GitHub 镜像)
Issue 跟踪建立 Jira(ASF 统一使用 issues.apache.org,项目键名对应 Podling)
网站与状态页Podling 网站须遵守 Podling Websites Guide;在 projects 页下生成 <podling>.html 状态页
社区管理与账号在 Whimsy roster 登记 PPMC/Committer,开通相关账号

4.3 建立 PPMC 与初始 Committer

  • Candidate 提供初始 Committer 集合(见 Developer Information for Committers)。
  • 在 Mentor 帮助下形成 PPMC(Podling Project Management Committee),负责 Podling 自身治理。PPMC 运作规则见 Podling PPMC 指南。
  • 新 PPMC/Committer 的加入须遵循投票流程(见治理规范文档)。

4.4 知识产权与合规落地

  • 通过 Mentor 与 ASF 秘书(Secretary)对接 CLA(贡献者许可协议) 的提交与确认。
  • 涉及已有代码进入 ASF 时,Mentor 协助处理**许可证转移到版权转让、软件授权(Software Grant)**等事宜。

4.5 品牌与免责声明(Branding & Disclaimer)

  • 遵守 Podling Branding Guide 与 Podling Publicity Guide。
  • Podling 必须在网站、文档、发布物与发布公告中清晰声明其处于孵化状态,使用标准免责声明(Standard Disclaimer)或工作量免责声明(Work In Progress/DISCLAIMER-WIP)。相关模板在 Incubation Policy 中给出了标准文本(把其中的"Podling-Name"替换为实际项目名、Sponsor 替换为实际赞助 TLP 名)。

4.6 建立阶段 Checklist

检查项说明
邮件列表是否建立dev/user/private 列表
Git/Jira 是否建立版本控制与 issue 跟踪
网站是否上线且含免责声明是,含 DISCLAIMER 文本与"incubating"标识
PPMC 是否成立与 Mentor 协作组建
初始 Committer 是否登记是
CLA/软件授权流程是否启动是

五、Podling 运行阶段:季度报告、导师、社区与 Release

这是孵化的主体阶段,周期通常 1.5 年。核心是三条主线:汇报(reporting)、社区(community)与发布(release)。

5.1 Podling 报告制度(Reporting)

依据 Incubation Policy:

  • 每个 Podling 必须(MUST) 向 IPMC 汇报。前 3 个月**每月(monthly)汇报一次,之后每季度(quarterly)**汇报。
  • IPMC 可酌情要求更频繁的汇报。
  • PPMC 须在 Mentor 的帮助下 向 IPMC 提交报告,详述向毕业的整体进展及遇到的任何问题。
  • 各 Podling 报告汇总后,IPMC 每月(monthly) 向 ASF 董事会汇报孵化器整体进展。

5.2 Mentor(导师)角色与职责

Mentor 由 Sponsor 提名、必须为 IPMC 成员,是 Podling 与 IPMC、Infrastructure、ASF 各团队之间的联络人。其职责分三向(详见 Roles and Responsibilities):

  • 对 Podling 社区:及时处理 IPMC 决策与议题、及时传达决策、在 IPMC 代表 Podling 利益、在各团队间就 CLA/基础设施/许可转让等提供协助、并就 Apache 政策与实践提供指导。
  • 对 IPMC:全程监督 Podling、评估其与孵化器/ASF 政策的一致性、评估其应继续/退役/毕业、同步许可证授予状态。
  • 对 Sponsor:就 Podling 进展提交状态报告。

5.3 PPMC 与社区治理

  • PPMC 运作"像一个 PMC",但向 IPMC(而非董事会)汇报;这一阶段就是 PPMC 成员学习如何治理一个 ASF 项目的过程。
  • Committer 需做到:让 Mentor 知悉进展(通过项目邮件列表公开开展业务是重要途径,"no news is bad news")、主动招募新 Committer、让决策过程公开可见可问责、逐步做到像其他 Apache 项目那样遵循 ASF 政策。
  • 建立显式的新 Committer 引入文档,采用与既定 Apache 实践一致的流程(详见治理规范文档)。

5.4 ASF Release 的产出与审批

发布能力是毕业的关键判据之一。Podling 在孵化期必须展示"制备并发布一个符合 ASF 规范的 Release"的能力,具体要求见 Incubator Release Management Guide。要点:

  • 不落 ASF 手续(non-ASF) 的临时发布可在孵化期进行,只要项目在朝 ASF 发布推进。
  • ASF 发布必须(MUST NOT) 在未经 IPMC 批准前进行。PPMC 不能代表 ASF 做正式决定,因此 Podling Release 要成为"ASF Release"必须有 IPMC 的绑定批准(binding approval)。
  • 双投票制(详见治理规范文档的 Release Approval 章节):
    • PPMC 在 Podling 公开 dev 列表上发起投票请求 PPMC 认可;
    • 同时/顺次在孵化器的 general 列表 上请求 IPMC 批准;
    • 通过条件:至少 3 位 PPMC 投 +1 且 +1 多于 -1;同时至少 3 位 IPMC 成员投绑定 +1 且绑定 +1 多于绑定 -1。仅 IPMC 成员的投票对 ASF 发布是绑定的。
  • 发布物须满足:归档文件名含 incubating;归档含 DISCLAIMER(标准)或 DISCLAIMER-WIP 文件;通过 http://www.apache.org/dist/incubator/<Podling> 分发。

5.5 运行阶段 Checklist

检查项说明
前 3 个月是否月度报告是,之后转季度
Mentor 是否定期向 IPMC/Sponsor 汇报是
社区是否持续招募新 Committer是,避免单一实体依赖
是否已产出一个获批的 ASF Release演示发布能力
网站是否持续更新并保留免责声明是
是否已建立决策公开可问责机制是

六、毕业(Graduation)条件与评估

毕业指 Podling 成为已有 Apache 项目的子项目,或成为顶级项目(TLP)。毕业本质是一场民主投票。正式指南见 Guide to Successful Graduation,政策依据见 Incubation Policy。

6.1 去向选择:TLP 还是子项目

  • 通常提案中的 Sponsor 决定了自然去向:Board 或 IPMC 赞助的 → 成为 TLP;其他 → 成为赞助方项目的子项目。但去向只在毕业时确定而非进入时确定。
  • 作为子项目毕业,需其仍落在赞助项目范围内,且须获该赞助项目 PMC 同意;作为 TLP 毕业,须由 Board 组建新项目。

6.2 毕业检查清单(Graduation Check List)

阶段检查项说明
准备完成并通过状态文件(status file)中列任务PPMC 负责维护状态文件,毕业前须全部完成(见下)
准备确定合适的项目名与产品名依据命名规则完成商标审查
准备演示创建 Apache Release 的能力见 5.4
准备演示社区就绪开放、多元、精英治理
准备Mentor 与 IPMC 无遗留问题无未决 issue
决策确定去向(子项目或 TLP)依据现实更新最初偏好
TLP准备 charter(决议 resolution)交由社区与 Mentor 草拟
子项目目标项目 PMC 发起子项目接纳 VOTE采纳前提
IPMCTLP 候选 → 推荐 VOTE向 Board 推荐
IPMC子项目候选 → 毕业批准 VOTE批准转移
收尾最终交接 + 后续任务见 6.6

6.3 状态文件(Status File)

  • 状态文件汇总 Podling 的孵化相关信息,PPMC 负责保持其最新。毕业前所有任务必须完成。
  • IPMC 在毕业投票时会核对该文件。示例见 JUDDI 状态页。状态页可通过符类工具 / 官方 projects 页查看(详见项目清单与操作文档)。

6.4 开放多元社区判据

毕业的重要判据是形成开放、多元、精英的社区:

  • 社区能够招募用户、开发者、Committer、PMC 成员;
  • 能采取负责任的集体行动;
  • 能在公开场合就技术问题分歧而不破坏个人关系;
  • 在邮件列表上营造开放、积极、包容的氛围。
  • 多元性量化判据:项目不应高度依赖任何单一贡献者——至少存在 3 位法律上独立的 Committer,且没有任何单一公司/实体对项目成败至关重要。若社区主要来自一家公司,即为多元性不足的信号,应引入与该公司无关的外部贡献者。

6.5 毕业为 TLP 的完整投票链

TLP 由 Board 创建,因此 IPMC 只能向 Board 推荐。

  1. 社区毕业投票(建议但强烈推荐):社区对毕业提案进行一次自由投票,展示自我治理意愿;应在 general 列表上通报投票启动(转发 [VOTE] 邮件或另发一份说明,不要把投票直接 CC 到 general 列表以免混乱)。
  2. 准备 charter(决议):以提案与状态文件为据起草 Board 决议,此决议是项目范围的最终定义,既不过窄(约束过强)也不过宽(缺乏聚焦)。需在决议中指定毕业后的 PMC Chair。
  3. IPMC 推荐投票(Recommendation VOTE):把决议先在 general 列表提出征求意见,达成共识后在 general 列表由 PPMC 成员发起 VOTE,提议 IPMC 将决议推荐给 Board。
  4. 提交决议到 Board:通过 Board Agenda Tool 提交,选择 "Establish Project",先添加拟任 PMC Chair;决议须在下次会议前至少 72 小时提交。
  5. 新闻稿(可选):共识达成时,PPMC 成员可联系 ASF 市场与公关团队 press@apache.org 以安排毕业官宣。

6.6 交接与毕业后首步

  • 交接:版本控制、网站、域名、仓库所有权等正式移交到新 PMC/项目范围。
  • 毕业后:建立新项目的随后的治理结构、任命 Chair、持续按 TLP 规范汇报董事会等。

6.7 毕业时间预估

毕业流程每个环节(讨论、发起 VOTE、修订重投)通常各安排一到两周。虽然一次 VOTE 通常限时 72 小时,仍需为讨论与可能的修订后重投预留充分时间。

七、终止(Retirement / Termination)

当 Podling 无法健康发展或严重违规时,会进入退役/终止流程。

7.1 终止依据

依据 Incubation Policy - Termination 及主页 Responsibilities:

  • IPMC 应(SHOULD)就任何政策违规通知 Podling。
  • 若 Podling 未纠正相关违规,IPMC 可(MAY)考虑终止该 Podling。
  • 孵化器职责还包括**退役(Retire)**不再适用的 Podling。

7.2 终止后果与公示

  • 终止的 Podling 会被移入 projects 页的 Retired Podlings 列表(https://incubator.apache.org/projects/#retired)。
  • 相关资源(域名、仓库、邮件列表等)按规定归档或关停。
  • 终止也需遵守投票与通知流程,具体处置由 IPMC 结合情况把控。

八、结束语

Apache Incubator 的本质是"以社区养育社区":通过 Mentor 传帮带、PPMC 自我治理、公开透明的投票与汇报,最终让一个开源项目内化 The Apache Way 并自信地独立运行。本指南汇总了从 idea 到毕业/终止的完整链路;后续三篇分别从参与者视角(入门与规范)、治理与合规视角(投票/Release/CLA/基础设施)、操作视角(项目清单与日常工具)深入展开。

九、官方参考链接