首页 » OpenStack系统架构设计实战 » OpenStack系统架构设计实战全文在线阅读

《OpenStack系统架构设计实战》1.2.2 OpenStack社区和项目开发流程

关灯直达底部

OpenStack是由开发商、企业、服务供应商、研究人员及用户共同组成的全球性的社区。关注OpenStack最好的方式就是访问OpenStack社区:www.openstack.org。通过社区可以第一时间了解OpenStack的动态。因此给出下面这些链接,希望可以帮助读者进一步了解OpenStack。

·OpenStack峰会:https://wiki.openstack.org/wiki/Summit

·OpenStack用户成员:https://wiki.openstack.org/wiki/OpenStackUsersGroup

·OpenStack在线会议:https://wiki.openstack.org/wiki/Meetings

·OpenStack邮件列表:https://wiki.openstack.org/wiki/MailingLists

·OpenStack IRC频道:https://wiki.openstack.org/wiki/IRC

·OpenStack维基:https://wiki.openstack.org/

·OpenStack博客:http://www.openstack.org/blog/category/newsletter/

·OpenStack资讯:http://planet.openstack.org/

·OpenStack Github:https://github.com/openstack

·OpenStack问题列表:https://ask.openstack.org/zh/questions/

相关代码库如下。

·核心项目Git库:http://git.openstack.org/cgit

·项目建设工具:https://github.com/openstack-infra

·开发人员工具:https://github.com/openstack-dev

代码提交和审查网站如下。

·代码review系统:https://review.openstack.org/

·代码合并建议:http://status.openstack.org/reviews/

·持续集成:http://status.openstack.org/zuul/

·用户和管理员文档:http://docs.openstack.org/

大家关心的还有:当对OpenStack有新的需求并且有开发意向时,如何把需求变为实实在在的OpenStack代码和项目。首先,我们得有一个想法,当一个新的想法逐渐成熟而且工作量非常大,以致无法在现有的某个OpenStack项目中承载时,就有必要成立一个独立的新项目进行开发。项目的发起者可以是一个人,但更有可能的是一群人。他们会发动开源社区,推广这个新项目,并吸引一批开发者共同开发。由这些开发者形成的团队会在OpenStack邮件列表上讨论问题,并定期召开日常例会。

在新项目成立早期,如果还没有PTL(ProgramTechnicalLead,技术领头人),团队内部会选举或指派一个领头人带领整个团队的开发,以及主持每期例会。由于该项目是开源的,就会源源不断地有新的开发者加入开发团队当中。同时,也会有人审视并吸收类似的开源项目,以避免做重复工作。逐步地,项目渐渐成熟,形成了自己的目标、计划和代码库。为了方便起见,项目发起者们一般会先将项目放在stackforge目录上。对于最初项目的版权,最好是APache2.0,这样就与OpenStack保持一致。当有一天新项目被集成到OpenStack发行版中时,也就不用重新定义和处理版权问题了。

当项目还是新项目时,它是在OpenStack项目之外开发的,这是该项目必须经历的一个阶段。在此阶段,项目发起者可以利用OpenStack项目使用的工具去管理该项目。一旦项目发起者认为该项目成熟了,就可以向技术委员会提出孵化请求,等待成为孵化项目的批转。

在一个项目被集成到OpenStack发布版之前,成为孵化项目是必经阶段。在这个阶段里,项目开发人员需要去了解OpenStack的发布节奏、发布流程,以及要成为集成项目还有哪些工作需要完成等内容。同时,也可以尽量寻求与其他项目合作或合并的机会。一般来说,这个阶段至少需要持续两个开发周期。在孵化期间,孵化项目都会被移植到OpenStack命名空间和目录中。在一个开发周期结束时,OpenStack技术委员会会对孵化项目做一个考核,理论上只有经历了两个开发周期的孵化项目才能被选为考核目标。考核的结果如果被证明是足够成熟的,并且已经准备好被集成到OpenStack发布版当中时,就会被选择从孵化期“毕业”成为OpenStack集成项目。在下一个开发周期里,该项目就正式成为集成项目,成为OpenStack家族的正式成员之一。

下面介绍一下核心项目的含义。核心项目的含义在2013年有所改变,那时OpenStack项目的管理刚被转交给OpenStack基金会。在此之前,所有被集成在OpenStack发布版中的项目都被称为核心项目,包括Nova、Swift、Glance、Cinder、Neutron、Horizon和Keystone。

此后,“核心”这个词变成了OpenStack基金会在OpenStack发布版里对某个项目进行标签的专有名词,“核心”的使用也就被限制了。可以这么说,核心项目是集成项目的一部分,是它的子集,当OpenStack基金会董事会认为某一个集成项目能达到某些要求时,就可以为该集成项目贴上“核心”这个标签。

在2013年之后,所有从孵化期毕业被集成在OpenStack发布版里的项目都统一称作集成项目,比如Cei1ometer、Heat和Trove都是集成项目,但Nova等7个项目,仍称为核心项目。