SF Apache基金会如何孵化项目

wen 开源项目 3

本文目录导读:

SF Apache基金会如何孵化项目

  1. 第一阶段:提案(Proposal)
  2. 第二阶段:孵化期(Incubation)
  3. 第三阶段:毕业(Graduation)
  4. 第四阶段:退休(Retirement,不常见)
  5. 关键角色与机构
  6. 总结:为什么要走这套流程?

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仓库、邮件列表、网站和商标,核心工作包括:

  1. 建立健康社区

    • 决策透明:所有重大决策必须在公共邮件列表中讨论和投票。
    • 多元化:鼓励来自不同公司的独立贡献者,避免单一公司完全主导(即“逃离单一供应商陷阱”,Bus Factor > 1)。
    • 共识驱动:通过“懒惰共识”(Lazy Consensus)和投票机制做决定。
  2. 知识产权清理(IP Clearance)

    • 对项目捐赠的代码进行严格的来源审查,确保所有代码都有清晰的版权归属和授权。
    • 检查依赖的第三方库是否允许与Apache 2.0许可证兼容。
  3. 代码质量与发布

    • 项目可以发布孵化版(如 x0-incubating 版本)。
    • 每次发布都需要由发布经理(Release Manager)发起,并由IPMC投票批准。
    • 代码必须遵守Apache的发布政策(包含完整的LICENSE、NOTICE文件,无已知的二进制依赖问题)。
  4. 导师监督

    几位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——它体现的不是代码的天才程度,而是项目治理的健康程度和社区的可持续性

抱歉,评论功能暂时关闭!