Apache Harmony 项目是 IBM 中国开发中心上海,近年来参加的一个开源项目。在这个项目中我们使用了开源软件开发中普遍使用的缺陷跟踪系统 —— Bugzilla。
Bugzilla 是一个开源的缺陷跟踪系统(Bug-Tracking System),它可以管理软件开发中缺陷的提交(new),修复(resolve),关闭(close)等整个生命周期。针对项目的特性,我们将 Bugzilla 做为整个项目开发过程中的管理工具。通过这种独特的使用方式,积累了一些经验,希望可以和广大开发人员一起分享。
Apache Harmony 开源项目的开发流程
Apache Harmony 的提案在 2005 年 5 月被 Apache 软件基金会(ASF)接受,并且按照 ASF 惯例成为一个孵化(incubator)项目。作为一个开源项目,所有参与的开发者需要遵循一个不同于一般产品开发的开发流程。在 Harmony 项目的主页上有一个链接 Get Involved,点开这个链接,您可以看到参与该项目的一些基本规则。
项目由广大的开发者提供的很多不同的捐献(contribution)推动,捐献包括代码,文档,反馈意见。该项目的一个主要特征是,希望所有的开发均发生在社区(透明性)。Harmony 项目提供了以下的基础设施保证了项目的透明性(图1):
项目开发中产生的任何正式的想法和讨论均发表到 harmony 邮件组上。
任何非正式的讨论发表到 freenode.net 网络上的 #harmony IRC channel 频道。
所有的项目源码由一个公共的 svn 服务器控制。该服务器进行了严格的权限控制,以接受代码的捐赠。
新功能的提交,包括项目开发中产生的缺陷(bug)均会被提交到 JIRA 系统上,并且随后提交补丁。后由具有权限的开发者将这些补丁提交到 svn 服务器上。
其他的一些相关的文档和讨论发表在 wiki 系统上。
图1:Harmony 项目透明的开发流程
项目管理(图一)" width="570" height="368" />
可以看到,在这个开发流程中,任何关于项目的想法或是讨论均发生在项目的邮件组上。项目中所有代码包括文档等资产均通过提交补丁的形式,通过 JIRA 系统提交。然后由 committer 将 JIRA 系统中的补丁安装到 svn 代码库中。
在我们的开发团队中,大部分人扮演的是 Contributor 的角色,负责的主要工作是:
在邮件组上讨论需要开发的内容,获取邮件组上其他开发人员的意见,形成一个设计决定。
根据邮件组上形成的设计决定,开发并提交补丁。
补丁是开发小组的主要产品,而 bugzilla 系统正是面向补丁设计的系统。为了提高代码的质量,结合 bugzilla 系统提供的功能,开发小组在内部制定了一套自己的开发流程(图2)。
开发小组内部的开发流程
图 2 开发小组内部的开发流程