对于OpenStack项目,在OpenStack集成并随版本正式发布前,都需要经历至少两个开发周期的孵化。
技术委员会会根据项目技术成熟度、项目范围合理性、与已有项目的互补性等,对孵化项目请求进行全面评估。
1.项目范围
1)项目必须有确定且明确的范围。
2)项目范围必须符合OpenStack整体方向,并与当前OpenStack的技术阶段匹配。
3)项目不能与OpenStack其他项目功能有重叠。如果存在,那么需要有清晰的计划,保证项目不会长期重叠。
4)项目必须尽可能地利用OpenStack其他项目中已有功能。
2.成熟度
1)项目应该有一个活跃的开发团队,对项目持续贡献。
2)项目主体架构必须稳定,主体架构不应该重新设计和重写。
3.进程
1)项目必须托管在Stackforge,因此必须使用Git版本控制系统。
2)项目必须遵循OpenStack协调项目接口(如tox、pbr等)。
3)在合理的情况下,项目应该尽可能使用Oslo库或者Oslo-incubator库。
4)项目必须有明确的代码检查团队,应该由团队多人对代码进行检查,而不能仅由一人完成。
5)项目检查标准应该与其他OpenStack项目一致。
6)项目讨论应该使用OpenStack官方邮件列表。
4.接口(API)
1)项目API必须稳定合理。
2)项目接口必须遵循Rest原则,即提供Restful接口。
3)项目必须提供Rest API对应的Python客户端。
5.质量保证(QA)
项目必须建立基本的devstack-gate任务。
6.文档及用户支持
1)项目必须提供相应的文档给致力于贡献代码的开发者。
2)项目必须提供API文档。
7.法律要求
1)项目必须遵循Apache v2许可协议。
2)项目不可以采用可能限制项目分发或部署的依赖库。
3)所有项目贡献者必须签署CLA(Inpidual Contributor License Agreement),以避免可能的版权纠纷。
4)项目必须没有已知的商标侵权问题。
当项目形成了一个完善、活跃的代码贡献团队和代码review团队,项目各方面条件已日趋成熟时,OpenStack技术委员会会最终决策项目是否可以进入集成阶段,并最终随版本发布。
OpenStack K版本比较活跃的孵化项目如图12-1左侧所示。本章将对这5个项目进行介绍,需要强调的是:OpenStack发展迅速,本书对OpenStack孵化项目的描述仅限于K版本。