Skip to content

Commit

Permalink
Update cookbook-zh.md
Browse files Browse the repository at this point in the history
  • Loading branch information
jnjt115 authored and WillemJiang committed Jan 19, 2021
1 parent e984104 commit 08d04ac
Showing 1 changed file with 196 additions and 0 deletions.
196 changes: 196 additions & 0 deletions apache/incubator/cookbook-zh.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,203 @@
### ASF孵化器指南
原文地址: https://incubator.apache.org/cookbook/
## 译文版
# Apache孵化器指南

该指南与[孵化器主页](http://incubator.apache.org/)为大家提供了在ASF孵化项目所需的必要信息。该指南汇集了所有孵化器的相关问题,给出了孵化器目标和过程的概述,并提供了更多详细信息的链接。

该指南内容按照项目从被接收孵化到毕业成为顶级项目(Top-Level Project,TLP)的时间顺序进行组织。

## 目录

[TOC]

## 一、我们的项目适合Apache孵化器吗?

正如ASF在[2018年的愿景声明](https://blogs.apache.org/foundation/entry/the-apache-software-foundation-2018)中所讲的那样,ASF为公共利益提供软件。

ASF的项目会遵循[Apache之道](http://www.apache.org/theapacheway/index.html)进行运转,Apache之道是一套指导原则和最佳实践。

ASF非常重视“社区重于代码”(Community Over Code)这一理念,ASF严格独立于公司和组织,并强调在工作各方面保持开放。

捐赠项目到ASF,意味着您将放弃对该项目以及项目商标(如果有)的控制。非常欢迎您参与该项目,但是除了成为PMC(Project Management Committee,项目管理委员会)成员之外,您没有其他特殊的地位。好消息是,由于ASF的独立性和对项目可持续性的重视,您的项目可以自己成长,并可能具有更广泛的影响力。

假设您的项目符合这种观念模式,我们不会根据项目功能来判断项目的接收情况,这是由ASF特意不设置技术策略所决定的。如果您的项目与[ASF已有项目](https://projects.apache.org/)非常相似,我们可能会要求你考虑加入该项目。尽管如此,我们仍然有一些项目具有相似的目标,但这并不一定是一个问题。

为了给“podlings”(incubating projects,孵化项目)带来最大的成功机会,我们通常要求他们进入孵化器,并至少有一个围绕现有代码库构建的社区的开端。

## 二、成为ASF顶级项目的步骤是什么?

孵化的目标是成为ASF的顶级项目。您可以通过[How the ASF works](https://www.apache.org/foundation/how-it-works.html)页面,了解孵化以及不同角色(提交者committers、PMC成员等)的内涵。

为此,孵化项目(incoming project,podling)需要执行以下步骤:

- 寻找接口人(champion)和孵化导师(mentor),讨论并准备孵化方案;
- 决定在ASF孵化;
- 与孵化器PMC讨论方案;
- 如果需要,完善方案中的初始提交者和导师列表;
- 如果需要,基于孵化器PMC的反馈,完善方案;
- 孵化器PMC对方案进行投票;
- 配置项目的基础设施;
- 围绕项目代码开始构建社区;
- 邀请新的提交者和PPMC成员;
- 发布项目并记录,完善代码和发布过程;
- 当准备毕业时,与导师一起评估项目的就绪情况;
- 准备将现有商标转让给ASF(如果情况符合);
- 与孵化器PMC讨论毕业;
- 孵化器PMC开始毕业投票,这会使ASF董事会决议建立TLP。

以上描述的是乐观的情况,概述了典型的孵化流程,项目真正孵化的顺序可能会与该流程略有不同。以下是该流程的详细内容:

## 三、与孵化器沟通

孵化器PMC负责管理孵化器,帮助孵化项目完成孵化过程。

可以通过公开链接:https://lists.apache.org/[email protected] [[email protected]]访问邮件列表,与孵化器PMC进行沟通。

## 四、寻找接口人和导师

为了进入孵化器,您的项目需要一名接口人和至少2-3名导师。这些人需要是孵化器PMC中的成员,ASF成员只需提出即可加入孵化器PMC。

接口人负责在创建方案过程中帮助孵化项目,他们在前面的步骤中(至少直到项目方案被接收)充当孵化项目与孵化器PMC之间的联络员,之后可能会继续担任导师。

导师则会在项目成长为顶级项目的道路上全程陪伴。

起点通常是寻找接口人,您可以在[email protected]邮件列表中提交项目的简短介绍,附上相关链接,并说明您正在寻找接口人,努力引起大家的兴趣。如果您认识任何ASF成员或孵化导师,可以直接询问他们是否愿意提供帮助。

## 五、创建孵化方案

接口人会帮助项目准备孵化方案,方案会对新项目进行描述,以便后续与孵化器PMC进行初步讨论。

方案需要包含若干标准段落,详情请参考[podling proposal template](https://cwiki.apache.org/confluence/display/INCUBATOR/New+Podling+Proposal).

ASF项目的孵化方案都保存在[Incubator wiki](https://cwiki.apache.org/confluence/display/INCUBATOR/Proposals)页面上,可以将它们作为示例进行参考,上一自然段中的链接给出的是方案的最新模板。

## 六、讨论孵化方案

方案准备好后,项目代表需将其发送至[email protected]进行讨论,主题行应如下,以引起孵化器PMC的注意。

`[DISCUSS] Foo Proposal`

该讨论通常会要求方案进行一些改动。

该讨论阶段没有规定讨论时长,通常会持续几天,直到所有讨论要点被解决。

以下是最近的讨论,请参考:

- [Nuttx proposal](https://lists.apache.org/thread.html/7ed194c45460a3941ae6713b20e742ec7af398c5414de7b17d188c3b@) (in progress)
- [StreamPipes proposal](https://lists.apache.org/thread.html/1cf79ef65888f695b4b925fd67ef8a2b845f6b0931c251a0ff1115e1@) (accepted)
- [Sparkr proposal](https://lists.apache.org/thread.html/ff9874f5353d319152f09aa9c1aa1a673b84acdaeb9932432d58d5ab@) (withdrawn)
- [TubeMQ proposal](https://lists.apache.org/thread.html/21c5453b40765cf1d5a06540fcf6d76c0d5b6b7df7ade5c29d31aa3e@) (accpeted)
- [MetaObjects proposal](https://lists.apache.org/thread.html/dbdbc6bd8e238d9dbf16604d5fa13500523d6e812fcd863444f99842@) (on hold)

## 七、孵化方案投票

讨论阶段一结束,接口人或项目代表就会在[email protected]邮件列表中创建[VOTE]进程。

投票过程依据[ASF投票规则](https://www.apache.org/foundation/voting)进行。简言之,投票发生在孵化器邮件列表中,持续至少72小时,由孵化器PMC成员进行投票,遵循多数投票法,也欢迎其他人进行投票。

## 八、配置基础设施

孵化器PMC投票决定创建该项目后,就可以为其配置基础设施。

通常,接口人或孵化导师会推动这一过程。但是,如果项目社区成员知道如何进行操作的话,也可以由社区成员推动这一过程。

详情请参考[Infra and the Incubator](https://infra.apache.org/infra-incubator.html)

## 九、宣传和公告

在孵化器PMC接收该项目之前,项目不能发布有关加入ASF的新闻稿或其他公开声明。

关于项目如何为自己做广告方面也有一些限制,特别是在孵化项目的新闻稿方面。[Incubator Branding Guide](http://incubator.apache.org/guides/branding.html)[Apache Podling Publicity/Media Guidelines](https://incubator.apache.org/guides/publicity.html)页面对项目宣传规则有更详细的解读。

## 十、导入初始代码

项目需遵循特定流程将代码捐赠给ASF,该流程基于[软件授权协议](https://www.apache.org/licenses/software-grant.txt)和/或[CCLA](https://www.apache.org/licenses/cla-corporate.txt)

关于初始代码导入的更多信息,请参考[Initial Code Import](http://incubator.apache.org/guides/transitioning_asf.html)

## 十一、社区构建

在孵化过程中,项目有望构建并扩大其社区,包括投票选拔新的提交者和PPMC成员。

候选者的讨论和投票过程都发生在项目的私有PPMC邮件列表中,这是该邮件列表为数不多的功能之一,因为通常所有的讨论都是公开的。

扩大社区,特别是重建项目社区是ASF治理的重要组成部分,因为社区可以提升项目的持续性。

## 十二、项目发布

在项目孵化过程中,我们期待项目可以发布多个软件版本,这些版本会朝着完全符合[ASF发布政策](http://www.apache.org/legal/release-policy.html)的方向逐渐发展。版本发布完全符合ASF发布政策是项目毕业的条件之一。

按照[孵化器发布指南](https://incubator.apache.org/guides/releasemanagement.html#choice_of_disclaimers)要求,项目发布版本时,任何发布文件名中必须包含“incubating”一词,并且必须要包含DISCLAIMER或DISCLAIMER-WIP免责声明,以避免混淆项目状态。由于孵化项目还不是真正的ASF项目,设置适当的期望值很重要。

请注意Apache版本发布仅包含源代码。为了给用户提供方便,项目通常也会一同分发[编译过的软件包](http://www.apache.org/legal/release-policy.html#compiled-packages)。但重点仍是实际发布的源码,所有分发的编译过的软件包都是基于这些正式发布的源码。

## 十三、关于项目版本发布的两轮投票

项目版本发布的投票分为两个阶段:

首先,在开发人员邮件列表(dev list)上对版本发布进行投票,该轮投票主要是为了让项目社区练习和学习版本发布的投票过程。只要PPMC成员给出至少三张赞成票(+1),并且赞成票多于反对票,就算投票通过。

如果第一次投票通过,则孵化器PMC在孵化器常规邮件列表上进行第二轮投票,与所有ASF版本发布一样,这是使投票成为基金会行为的规定动作。

在孵化器PMC的[VOTE]消息中,需明确将第一轮开发人员邮件列表中的投票情况报告给孵化器PMC,包括投票结果,以及指向项目投票记录的[lists.apache.org](http://lists.apache.org/)链接。这样,导师和其他孵化器PMC成员的投票将与孵化器PMC投票绑定,而不用投两次票。

项目和孵化器的投票都要遵循[ASF投票规则](https://www.apache.org/foundation/voting):多数投票法;投票过程持续至少72小时;如果有人多次投票,以最后一次投票为准。

## 十四、孵化项目与顶级项目的区别是什么?

顶级项目是成熟的ASF项目,由自己的[PMC](http://www.apache.org/foundation/governance/pmcs)进行管理,并且向[ASF董事会](https://www.apache.org/foundation/board/)进行报告。

孵化项目是正在训练中的顶级项目。他们所做的大部分工作与顶级项目相同,特别是顶级项目在孵化过程中的工作。

主要的区别如下:

- 和PMC相反,孵化项目不能代表ASF做出正式决定,因为他们不是ASF架构的正式组成部分(比如,孵化项目没有在[ASF章程](https://www.apache.org/foundation/bylaws)中被提及)。这意味着孵化器PMC需要扮演孵化项目代理人的角色,使项目的操作(比如ASF发布)正式化,并使其成为[基金会的行为](https://blogs.apache.org/foundation/entry/success-at-apache-the-apache1)
- 孵化项目会有一个PPMC(Podling Project Management Committee),像顶级项目PMC一样进行运转,但需要将一些事情委托给孵化器PMC执行,比如ASF版本发布的最终投票权。
- 提交者、PPMC成员的选拔与顶级项目中的做法类似。孵化项目可以直接选拔候选人进入PPMC,也可以先将候选人选为提交者,之后再将他们提为PPMC成员。提交者没有正式的决策权,所以通常采用“两步走”的流程,但这不是必需的。详情请参阅[How the ASF works](https://www.apache.org/foundation/how-it-works.html)
- 顶级项目向[ASF董事会](https://www.apache.org/foundation/board/reporting)进行报告,而孵化项目向[孵化器PMC](https://cwiki.apache.org/confluence/display/INCUBATOR/Reports)进行报告。两种汇报最初都是每月一次,之后是每季度一次。
- 每个顶级项目都有一个[PMC主席](https://apache.org/dev/pmc.html),PMC主席是顶级项目与董事会间的联络人。PMC主席不是项目的领导者,而是一个管理角色,即使他们在ASF组织架构中拥有VP(Vice President)的头衔。孵化项目中没有孵化导师的角色,导师是社区成员中的志愿者,在项目和孵化器PMC间充当联络员。
- 孵化项目的版本发布需要两轮投票。

ASF强烈鼓励项目有规律地成长和更新他们的名单,以促进项目可持续发展。孵化项目和顶级项目都应该留意社区中活跃的成员,积极选拔新的提交者和PMC成员。

## 十五、毕业就绪评估

当项目社区准备毕业时,应该先对就绪情况进行自评估。

ASF社区发展PMC(Community Development PMC)维护的[成熟度模型](https://community.apache.org/apache-way/apache-project-maturity-model.html)为此提供了一个很好的模板,可以帮助发现项目在孵化中忽略的事情。成熟度模型页面给出了项目毕业的案例。

## 十六、毕业讨论

基于就绪情况的自评估,当社区和导师认为项目已经准备好毕业了,导师或PPMC成员要在孵化器常规邮件列表中开始一个[DISCUSS]进程,提议毕业并请求孵化器PMC审查项目。

讨论中最好包含毕业方案,为接下来的投票做好准备。

## 十七、将商标转让给ASF

捐赠项目给ASF的个人或组织如果持有项目必需的商标,则需在项目毕业前将其转让给ASF。

## 十八、毕业投票

毕业方案讨论结束后,导师或PPMC成员在孵化器常规邮件列表中开始一个[VOTE]进程,孵化器PMC在该进程上对是否向董事会推荐项目进行投票。

该投票遵循标准的[ASF投票规则](https://www.apache.org/foundation/voting),即多数投票法,持续至少72小时,如果重复投票,以最后一次投票为准。

## 十九、ASF董事会决议

一旦孵化器PMC投票通过项目毕业,孵化器PMC(IPMC)将会创建并向ASF董事会发送董事会决议进程,以供董事会进行投票。

董事会会在每月的第三个周三召开会议,并在例行会议上对此类决议进行投票。

董事会表决会立即生效,不过董事会会议的[公开会议记录](https://www.apache.org/foundation/board/calendar.html)相对较晚,但通常会在一个月之内。

## 二十、毕业后任务

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

[Life after Graduation](http://incubator.apache.org/guides/transferring.html)指南列出了相应的任务。


## 表格版
**成为ASF顶级项目的步骤**
步骤 | 内容 | 详情
Expand Down

0 comments on commit 08d04ac

Please sign in to comment.