点击上方“开源社”关注我们

| 作者:狄晓晓

| 转载自: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

毕业后任务

项目毕业后,需要在孵化器状态页面上更新项目状态,并对其资源和流程进行一些更改。

毕业之后的工作指南列出了相应的任务。

关于ALC Beijing

作为全球最大开源消费国, Apache 软件基金会(ASF)在国内有广泛的群众基础,如何将这些开源项目用户发展转换成为社区的贡献者、开发者, 甚至成为开源项目的发起者、维护者是一个值得深思的问题。


基于对这个问题的思考,我们创建了ALC-Beijing(Apache Local Community Beijing),并且致力于通过(但不限于)下述行动帮助开源爱好者更好的在 Apache 社区生根发芽:

  • 举办线上和线下沙龙,将本地的开发与用户聚焦在一起。

  • 通过分享开源开发经验,鼓励更多的人参与到 ASF 的项目开发中来。

  • 为 ASF 的项目寻找相互合作的机会,让这些项目能够更加茁壮的成长。

  • 介绍 ASF 管理和运作开源项目的成功之道,帮助大家更好地运作开源项目。

开源社简介

开源社成立于2014年,是由志愿贡献于开源事业的个人成员,依“贡献、共识、共治”原则,所组成的厂商中立、公益非营利的开源联盟,是最早以“开源治理、国际接轨、社区发展、开源项目”为使命的开源组织。开源社积极与支持开源的社区、企业以及政府相关单位紧密合作,旨在共创健康可持续发展的开源生态,并推动中国开源社区成为全球开源体系的积极参与及贡献者。

相关阅读 | Related Reading

重磅:吴晟当选 Apache 软件基金会 2021年董事

开源社长期招募项目正式启动! 和大佬面对面交流的诱惑试问谁能抵挡?

专访骨灰级开源爱好者吴晟:开源没有黑魔法,两年后泡沫将会破灭

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐