点击上方“开源社”关注我们
| 作者:狄晓晓
| 转载自: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