讀古今文學網 > OpenStack系統架構設計實戰 > 1.2.2 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個項目,仍稱為核心項目。