在一个大型的开源项目中,该项目由不同团队开发的许多相互影响的部分组成,您如何确定正式成为核心版本一部分的内容以及哪些内容不包含在外部? 在OpenStack中,正式的孵化过程有助于准备雏形的项目,以便在它们成熟和成熟时将其集成到主代码主体中。
历史
OpenStack的最初版本和初始版本中有两个项目Nova(计算)和Swift(对象存储)。 最初由NASA开发的Nova与Rackspace的Swift一起被合并到一个计算平台中,以创建OpenStack的初始种子。 在满足某些云计算工作负载的需求的同时,仍然需要许多组件来构建完整的平台,并且该项目随着时间的推移而发展。
自从首个Austin发布以来,集成项目的数量一直沿用字母命名的发布周期(通常为期六个月)稳定增长。 在Bexar版本中集成了OpenStack图像服务Glance。 在下一次正式添加之前,Essex版本中的身份项目Keystone和Web用户界面Horizon发行了一些版本。 下一个版本Folsom添加了网络项目Neutron和块存储项目Cinder。
随着项目的发展和适应,处理添加新项目的过程也随之增加。 遥测项目Ceilometer和编排项目Heat都在Grizzly版本中进入了孵化过程,然后在下一个版本Havana中正式整合。 在此期间,负责更新流程的委员会对孵化流程进行了更严格的形式化 ,该委员会负责更仔细地定义孵化,集成和核心项目在OpenStack的背景下意味着什么,哪些测试将确定项目何时准备就绪每个阶段。
最近,对数据库服务Trove和裸机项目Ironic进行了Havana版本的孵化,但此后只有Trove在Icehouse版本中脱离了孵化。 Icehouse看到了在孵化中添加了队列服务Marconi和Hadoop促进者Sahara,并且Sahara将在即将发布的Juno版本中将其集成。 Juno开发周期(我们当前的周期)通过Designate添加了关键管理服务Barbican和DNS即服务。
今天的孵化
那么,这一切意味着什么呢? 今天的孵化过程是什么,一个项目如何完成必须毕业的工作?
今天,尽管各技术委员会仍有很多解释空间,技术委员会负责确定每个项目与标准的叠加程度,但这些步骤已明确列出 。 要准备进行孵化,一个项目必须满足多个条件。
- 该项目应该有一个明确的范围 ,该范围可以扩展OpenStack,并且不必不必要地复制现有项目的范围,而应尽可能利用其他OpenStack项目中的功能。
- 该项目应该相当成熟 ,拥有一支活跃的开发人员团队,并且没有计划进行任何重大重写。
- 该项目应遵循现有项目所处的现有流程 ,包括托管位置,使用git作为版本控制系统,与其他OpenStack项目一样使用已建立的审阅系统,使用正式的OpenStack listserv进行通信以及类似特征。
- 该项目应具有开发稳定的REST API ,JSON实体表示形式和Python客户端库。
- 该项目应可通过devstack进行构建,以匹配其他项目的QA要求。
- 该项目应具有文档 (对开发人员而言最少),并且还必须对API进行文档化。
- 该项目应遵循与其他OpenStack项目相同的法律结构,使用Apache License v2,并遵循其他适用的法律规则,以防止对将来使用所包含的代码或名称的任何障碍。
为了逐步集成,可以使用类似的标准进行更严格的评估。 这些标准应用于任何给定项目的方式当然会有所不同,但是它们设置了一个标准,以确保项目准备就绪并具有清晰的流程,以包含在OpenStack名称下的定义中。 。
翻译自: https://opensource.com/business/14/6/incubation-integration-openstack