Apache Harmony 項目是 IBM 中國開發(fā)中心上海,近年來參加的一個開源項目。在這個項目中我們使用了開源軟件開發(fā)中普遍使用的缺陷跟蹤系統(tǒng) —— Bugzilla。
Bugzilla 是一個開源的缺陷跟蹤系統(tǒng)(Bug-Tracking System),它可以管理軟件開發(fā)中缺陷的提交(new),修復(fù)(resolve),關(guān)閉(close)等整個生命周期。針對項目的特性,我們將 Bugzilla 做為整個項目開發(fā)過程中的管理工具。通過這種獨特的使用方式,積累了一些經(jīng)驗,希望可以和廣大開發(fā)人員一起分享。
Apache Harmony 開源項目的開發(fā)流程
Apache Harmony 的提案在 2005 年 5 月被 Apache 軟件基金會(ASF)接受,并且按照 ASF 慣例成為一個孵化(incubator)項目。作為一個開源項目,所有參與的開發(fā)者需要遵循一個不同于一般產(chǎn)品開發(fā)的開發(fā)流程。在 Harmony 項目的主頁上有一個鏈接 Get Involved,點開這個鏈接,您可以看到參與該項目的一些基本規(guī)則。
項目由廣大的開發(fā)者提供的很多不同的捐獻(contribution)推動,捐獻包括代碼,文檔,反饋意見。該項目的一個主要特征是,希望所有的開發(fā)均發(fā)生在社區(qū)(透明性)。Harmony 項目提供了以下的基礎(chǔ)設(shè)施保證了項目的透明性(圖1):
項目開發(fā)中產(chǎn)生的任何正式的想法和討論均發(fā)表到 harmony 郵件組上。
任何非正式的討論發(fā)表到 freenode.net 網(wǎng)絡(luò)上的 #harmony IRC channel 頻道。
所有的項目源碼由一個公共的 svn 服務(wù)器控制。該服務(wù)器進行了嚴格的權(quán)限控制,以接受代碼的捐贈。
新功能的提交,包括項目開發(fā)中產(chǎn)生的缺陷(bug)均會被提交到 JIRA 系統(tǒng)上,并且隨后提交補丁。后由具有權(quán)限的開發(fā)者將這些補丁提交到 svn 服務(wù)器上。
其他的一些相關(guān)的文檔和討論發(fā)表在 wiki 系統(tǒng)上。
圖1:Harmony 項目透明的開發(fā)流程
項目管理(圖一)" width="570" height="368" />
可以看到,在這個開發(fā)流程中,任何關(guān)于項目的想法或是討論均發(fā)生在項目的郵件組上。項目中所有代碼包括文檔等資產(chǎn)均通過提交補丁的形式,通過 JIRA 系統(tǒng)提交。然后由 committer 將 JIRA 系統(tǒng)中的補丁安裝到 svn 代碼庫中。
在我們的開發(fā)團隊中,大部分人扮演的是 Contributor 的角色,負責(zé)的主要工作是:
在郵件組上討論需要開發(fā)的內(nèi)容,獲取郵件組上其他開發(fā)人員的意見,形成一個設(shè)計決定。
根據(jù)郵件組上形成的設(shè)計決定,開發(fā)并提交補丁。
補丁是開發(fā)小組的主要產(chǎn)品,而 bugzilla 系統(tǒng)正是面向補丁設(shè)計的系統(tǒng)。為了提高代碼的質(zhì)量,結(jié)合 bugzilla 系統(tǒng)提供的功能,開發(fā)小組在內(nèi)部制定了一套自己的開發(fā)流程(圖2)。
開發(fā)小組內(nèi)部的開發(fā)流程
圖 2 開發(fā)小組內(nèi)部的開發(fā)流程