Apache 孵化器指南
2021.07.08 11:26浏览量:370简介:目前国内越来越多的开源项目通过 Apache 孵化器进入 Apache 软件基金会孵化。
翻译 | 狄晓晓
校对 | 姜宁
来源 | ALC Beijing
前言
Apache 孵化器是项目捐赠到 ASF 的入口。目前国内越来越多的开源项目通过 Apache 孵化器进入 Apache 软件基金会孵化。
本文翻译自 https://incubator.apache.org/cookbook/
为大家介绍了项目进入 ASF 孵化器需要做的准备,以及孵化过程中做的工作。如果大家想进一步了解ASF治理规则,并且对翻译这些规则感兴趣的小伙伴,欢迎加入ALC Beijing 翻译项目,选择你所感兴趣的任务,或者帮忙校对大家的翻译。
该指南与孵化器主页为大家提供了在 ASF 孵化项目所需的必要信息。该指南汇集了所有孵化器的相关问题,给出了孵化器目标和过程的概述,并提供了更多详细信息的链接。
该指南内容按照项目从被接收孵化到毕业成为顶级项目(Top-Level Project,TLP)的时间顺序进行组织。
欢迎大家通过 general@incubator.a.o 邮件列表或 INCUBATOR-234 任务单对该指南提出反馈意见,也可以向该指南所在的项目仓库提交补丁。
01 我们的项目适合Apache孵化器吗?
正如 ASF 在 2018 年的愿景声明中所讲的那样,ASF 为公共利益提供软件。
ASF 的项目会遵循 Apache 之道进行运转,Apache 之道是一套指导原则和最佳实践。
ASF 非常重视“社区重于代码”(Community Over Code)这一理念,ASF严格独立于公司和组织,并强调在工作各方面保持开放。
捐赠项目到 ASF,意味着您将放弃对该项目以及项目商标(如果有)的控制。非常欢迎您参与该项目,但是除了成为 PMC(Project Management Committee ,项目管理委员会)成员之外,您没有其他特殊的地位。好消息是,由于 ASF 的独立性和对项目可持续性的重视,您的项目可以自己成长,并可能具有更广泛的影响力。
假设您的项目符合这种观念模式,我们不会根据项目功能来判断项目的接收情况,这是由 ASF 特意不设置技术策略所决定的。如果您的项目与 ASF 已有项目非常相似,我们可能会要求你考虑加入该项目。尽管如此,我们仍然有一些项目具有相似的目标,但这并不一定是一个问题。
为了给“ podlings”(incubating projects,孵化项目)带来最大的成功机会,我们通常要求他们进入孵化器,并至少有一个围绕现有代码库构建的社区的开端。
02 成为 ASF 顶级项目的步骤是什么?
孵化的目标是成为 ASF 的顶级项目。您可以通过 Apache软件基金会的运转,了解孵化以及不同角色(提交者 committers、PMC 成员等)的内涵。
为此,孵化项目(incoming project,podling)需要执行以下步骤:
寻找领路人(champion)和孵化导师(mentor),讨论并准备孵化提案;
决定在 ASF 孵化;
- 与孵化器 PMC 讨论提案;
- 如果需要,完善提案中的初始提交者和导师列表;
- 如果需要,基于孵化器 PMC 的反馈,完善提案;
- 孵化器 PMC 对提案进行投票;
- 配置项目的基础设施;
- 围绕项目代码开始构建社区;
- 邀请新的提交者和 PMC 成员;
- 发布项目并记录,完善代码和发布过程;
- 当准备毕业时,与导师一起评估项目的就绪情况;
- 准备将现有商标转让给 ASF(如果情况符合);
- 与孵化器 PMC 讨论毕业;
- 孵化器 PMC 开始毕业投票,这会使 ASF 董事会决议建立 TLP。
以上描述的是乐观的情况,概述了典型的孵化流程,项目真正孵化的顺序可能会与该流程略有不同。以下是该流程的详细内容:
03 与孵化器沟通
孵化器 PMC 负责管理孵化器,帮助孵化项目完成孵化过程。
可以通过公开链接:general@incubator.a.o访问邮件列表,与孵化器 PMC 进行沟通。
04 寻找引路人和导师
为了进入孵化器,您的项目需要一名引路人和至少 2-3 名导师。这些人需要是孵化器 PMC 中的成员,ASF 成员只需提出即可加入孵化器 PMC。
接口人负责在创建提案过程中帮助孵化项目,他们在前面的步骤中(至少直到项目提案被接收)充当孵化项目与孵化器 PMC 之间的联络员,之后可能会继续担任导师。
导师则会在项目成长为顶级项目的道路上全程陪伴。
起点通常是寻找接口人,您可以在 general@incubator.a.o 邮件列表中提交项目的简短介绍,附上相关链接,并说明您正在寻找引路人,努力引起大家的兴趣。如果您认识任何 ASF 成员或孵化导师,可以直接询问他们是否愿意提供帮助。
05 创建孵化提案
接口人会帮助项目准备孵化提案,提案会对新项目进行描述,以便后续与孵化器 PMC 进行初步讨论。提案需要包含若干标准段落,详情请参考 podling proposal template.
ASF 项目的孵化提案都保存在 Incubator wiki 页面上,可以将它们作为示例进行参考,上一自然段中的链接给出的是方案的最新模板。
06 讨论孵化提案
提案准备好后,项目代表需将其发送至 general@incubator.a.o 进行讨论,主题行应如下,以引起孵化器PMC的注意。
[DISCUSS] Foo Proposal
该讨论通常会要求提案进行一些改动。
该讨论阶段没有规定讨论时长,通常会持续几天,直到所有关注问题都被妥善讨论并形成解决方案。
以下是最近的讨论,请参考:
- Nuttx proposal (in progress)
- StreamPipes proposal (accepted)
- Sparkr proposal (withdrawn)
- TubeMQ proposal (accpeted)
- MetaObjects proposal (on hold)
07 孵化提案投票
讨论阶段一结束,接口人或项目代表就会在 general@incubator.a.o 邮件列表中创建[VOTE]帖子。
投票过程依据 ASF 投票规则进行。简言之,投票发生在孵化器邮件列表中,持续至少 72 小时,由孵化器 PMC 成员进行投票,遵循多数投票法,也欢迎其他人进行投票。
08 配置基础设施
孵化器 PMC 投票决定创建该项目后,就可以为其配置基础设施。
通常,接口人或孵化导师会推动这一过程。但是,如果项目社区成员知道如何进行操作的话,也可以由社区成员推动这一过程。
详情请参考 Infra and the Incubator。
09 宣传和公告
在孵化器 PMC 接收该项目之前,项目不能发布有关加入 ASF 的新闻稿或其他公开声明。
关于项目如何为自己做广告方面也有一些限制,特别是在孵化项目的新闻稿方面。Incubator Branding Guide和Apache Podling Publicity/Media Guidelines页面对项目宣传规则有更详细的解读。
10 导入初始代码
项目需遵循特定流程将代码捐赠给 ASF,该流程基于软件授权协议和或 CCLA。
关于初始代码导入的更多信息,请参考 Initial Code Import。
11 社区构建
在孵化过程中,项目有望构建并扩大其社区,包括投票选拔新的提交者和 PPMC 成员。
候选者的讨论和投票过程都发生在项目的私有 PPMC 邮件列表中,这是该邮件列表为数不多的功能之一,因为通常所有的讨论都是公开的。
扩大社区,特别是重建项目社区是 ASF 治理的重要组成部分,因为社区可以提升项目的持续性。
12 项目发布
在项目孵化过程中,我们期待项目可以发布多个软件版本,这些版本会朝着完全符合 ASF 发布政策的方向逐渐发展。版本发布完全符合 ASF 发布政策是项目毕业的条件之一。
按照孵化器发布指南要求,项目发布版本时,任何发布文件名中必须包含“incubating”一词,并且必须要包含 DISCLAIMER 或 DISCLAIMER-WIP 免责声明,以避免混淆项目状态。由于孵化项目还不是真正的ASF项目,设置适当的期望值很重要。
请注意 Apache 版本发布仅包含源代码。为了给用户提供方便,项目通常也会一同分发编译过的软件包。但重点仍是实际发布的源码,所有分发的编译过的软件包都是基于这些正式发布的源码。
13 关于项目版本发布的两轮投票
项目版本发布的投票分为两个阶段:
- 首先,在开发人员邮件列表(dev list)上对版本发布进行投票,该轮投票主要是为了让项目社区练习和学习版本发布的投票过程。只要 PPMC 成员给出至少三张赞成票(+1),并且赞成票多于反对票(-1),就算投票通过。
- 如果第一次投票通过,则孵化器 PMC 在孵化器常规邮件列表上进行第二轮投票,与所有ASF版本发布一样,这是使投票成为基金会行为的规定动作。
在孵化器PMC的[VOTE]消息中,需明确将第一轮开发人员邮件列表中的投票情况报告给孵化器 PMC,包括投票结果,以及指向项目投票记录的lists.apache.org 链接。这样,导师和其他孵化器 PMC 成员的投票将与孵化器 PMC 投票绑定,而不用投两次票。
项目和孵化器的投票都要遵循 ASF 投票规则:多数投票法;投票过程持续至少 72 小时;如果有人多次投票,以最后一次投票为准。
14 孵化项目与顶级项目的区别是什么?
顶级项目是成熟的 ASF 项目,由自己的 PMC 进行管理,并且向 ASF 董事会进行报告。
孵化项目是正在训练中的顶级项目。它们所做的大部分工作与顶级项目相同,特别是它们在孵化过程中的工作。
主要的区别如下:
- 和 PMC 相反,孵化项目不能代表 ASF 做出正式决定,因为他们不是ASF架构的正式组成部分(比如,孵化项目没有在 ASF 章程中被提及)。这意味着孵化器 PMC 需要扮演孵化项目代理人的角色,使项目的操作(比如 ASF 发布)正式化,并使其成为基金会的行为。
- 孵化项目会有一个 PPMC(Podling Project Management Committee),像顶级项目 PMC 一样进行运转,但需要将一些事情委托给孵化器 PMC 执行,比如 ASF 版本发布的最终投票权。
- 提交者、PPMC 成员的选拔与顶级项目中的做法类似。孵化项目可以直接选拔候选人进入 PPMC,也可以先将候选人选为提交者,之后再将他们提为 PPMC 成员。提交者没有正式的决策权,所以通常采用“两步走”的流程,但这不是必需的。详情请参阅 How the ASF works。
- 顶级项目向 ASF 董事会进行报告,而孵化项目向孵化器PMC进行报告。两种汇报最初都是每月一次,之后是每季度一次。
- 每个顶级项目都有一个 PMC 主席,PMC 主席是顶级项目与董事会间的联络人。PMC 主席不是项目的领导者,而是一个管理角色,即使他们在 ASF 组织架构中拥有 VP(Vice President)的头衔。孵化项目中没有孵化导师的角色,导师是社区成员中的志愿者,在项目和孵化器 PMC 间充当联络员。
- 孵化项目的版本发布需要两轮投票。
ASF 强烈鼓励项目有规律地成长,并更新社区的名单(提交者、PMC、PPMC),以促进项目可持续发展。孵化项目和顶级项目都应该留意社区中活跃的成员,积极选拔新的提交者和 PMC 成员。
15 毕业就绪评估
当项目社区准备毕业时,应该先对就绪情况进行自评估。
ASF 社区发展 PMC(Community Development PMC)维护的成熟度模型为此提供了一个很好的模板,可以帮助发现项目在孵化中忽略的事情。成熟度模型页面给出了项目毕业的案例。
16 毕业讨论
基于就绪情况的自评估,当社区和导师认为项目已经准备好毕业了,导师或 PPMC 成员要在general@incubator.a.o中创建一个[DISCUSS]帖子,提议毕业并请求孵化器 PMC 审查项目。
讨论中最好包含毕业提案,为接下来的投票做好准备。
17 将商标转让给 ASF
捐赠项目给 ASF 的个人或组织如果持有项目必需的商标,则需在项目毕业前将其转让给 ASF。
18 毕业投票
毕业提案讨论结束后,导师或 PPMC 成员在general@incubator.a.o中创建一个[VOTE]帖子,孵化器 PMC 在该进程上对是否向董事会推荐项目进行投票。
该投票遵循标准的 ASF 投票规则,即多数投票法,持续至少 72 小时,如果重复投票,以最后一次投票为准。
19 ASF 董事会决议
一旦孵化器 PMC 投票通过项目毕业,孵化器 PMC(IPMC)将会创建并向ASF 董事会发送董事会决议的帖子,以供董事会进行投票。
董事会会在每月的第三个周三召开会议,并在例行会议上对此类决议进行投票。
董事会表决会立即生效,不过董事会会议的公开会议记录相对较晚,但通常会在一个月之内。
20 毕业后任务
项目毕业后,需要在孵化器状态页面上更新项目状态,并对其资源和流程进行一些更改。
毕业之后的工作指南列出了相应的任务。
发表评论
登录后可评论,请前往 登录 或 注册