本文目录导读:

Apache Software Foundation(ASF,Apache 软件基金会)的项目孵化过程是一个严谨且社区驱动的流程,旨在确保项目在法律合规、社区健康、代码质量等方面达到基金会标准。
一个项目从“想法”到成为Apache顶级项目(TLP,Top-Level Project),需要经历以下几个核心阶段:
第一阶段:提案(Proposal)
项目发起人(可以是个人、公司或开源组织)需要向ASF的孵化器项目委员会(IPMC,Incubator Project Management Committee) 提交一份详细的孵化提案。
这份提案需要清晰说明:
- 项目目标:解决什么问题?与现有项目有何不同?
- 社区基础:已有多少贡献者?是个人项目还是已有外部用户?
- 知识产权:代码里是否包含其他许可证的代码?需要确认所有代码都是合规的(通常是Apache 2.0许可证)。
- 赞助者:需要至少一位ASF成员作为导师(Champion)来支持提案。
提案通过后,项目就会被正式接纳为Apache孵化项目(Podling)。
第二阶段:孵化期(Incubation)
这是最核心、也是时间最长的阶段(通常为几个月到2年不等),项目会拥有一个独立的Apache Git仓库、邮件列表、网站和商标,核心工作包括:
-
建立健康社区:
- 决策透明:所有重大决策必须在公共邮件列表中讨论和投票。
- 多元化:鼓励来自不同公司的独立贡献者,避免单一公司完全主导(即“逃离单一供应商陷阱”,Bus Factor > 1)。
- 共识驱动:通过“懒惰共识”(Lazy Consensus)和投票机制做决定。
-
知识产权清理(IP Clearance):
- 对项目捐赠的代码进行严格的来源审查,确保所有代码都有清晰的版权归属和授权。
- 检查依赖的第三方库是否允许与Apache 2.0许可证兼容。
-
代码质量与发布:
- 项目可以发布孵化版(如
x或0-incubating版本)。 - 每次发布都需要由发布经理(Release Manager)发起,并由IPMC投票批准。
- 代码必须遵守Apache的发布政策(包含完整的LICENSE、NOTICE文件,无已知的二进制依赖问题)。
- 项目可以发布孵化版(如
-
导师监督:
几位ASF成员(导师)会定期参与项目邮件列表和讨论,检查社区是否遵循Apache的“The Apache Way”(如:非公司主导、社区优于代码、精英治理)。
第三阶段:毕业(Graduation)
当孵化项目满足以下条件时,可以向IPMC和ASF董事会申请“毕业”成为顶级项目:
- 社区成熟:有活跃的、多元化的贡献者群体,并且形成了自己的项目管理委员会(PMC,Project Management Committee)。
- 代码可靠:已有至少一个稳定版本(如
0.0),且通过了IPMC的发布审查。 - 治理独立:项目已经能自主运行(Meritocracy,精英治理),导师不再需要频繁介入。
- 商标合规:正确使用了Apache的商标和Logo。
IPMC会进行一次毕业投票,投票通过后,项目会从孵化器目录中移出,并在主网站(apache.org)上拥有独立空间,正式成为Apache顶级项目(TLP)。
第四阶段:退休(Retirement,不常见)
如果项目在孵化期内长期不活跃(例如超过半年无发布、开发者流失),或者无法解决知识产权问题,IPMC也可以发起退休投票,项目会被归档,代码保留在Apache基础设施中,但不再进行活跃开发。
关键角色与机构
- 孵化器项目委员会(IPMC):ASF中专门负责监督所有孵化项目的委员会,所有导师都是其成员。
- 导师(Mentor):由ASF成员(Committer或更高级别)担任,负责指导项目社区和流程。
- 项目管理委员会(PMC):孵化项目毕业后,由项目核心贡献者组成的治理机构,拥有项目开发和发布的最终决定权。
- “The Apache Way”:一套核心原则,包括社区大于代码、共识决策、精英治理、透明公开和社区贡献。
为什么要走这套流程?
对于捐赠项目(尤其是公司主导的项目),孵化过程的意义在于:
- 剥离公司单点风险:确保项目即使原公司失去兴趣,也能由社区继续存活。
- 获得中立信任:用户不用担心项目被一家公司控制和授权变更。
- 建立治理规范:项目学会如何用Apache的规则管理社区(如:投票、邮件列表讨论)。
不是所有好代码都能进Apache——它体现的不是代码的天才程度,而是项目治理的健康程度和社区的可持续性。