2008年4月6日星期日

Open Source Collaboration Model

Huihoo.org已经走过了2年多,这篇文章以huihoo.org为例,介绍一个开放源码组织的基本组织架构,内部的运作方式,以及组织内人员角色的划分与职责。(虽然现在开源组织运作的方式各有不同,这里以huihoo.org主要是为了分享给大家一些huihoo的一些操作方式)

一 般来讲,无论你是在企业,学校,或其他的地方学习和工作,实质上都是在一个实际或虚拟的组织里生存,就好像社会中不同的团体,只是这种组织的规模各有不 同。我们通常把在这种组织里的互动过程看作是玩一场游戏,所以要玩好一个游戏就最基本的就是要有好的游戏规则。下面的我们就来结合http://www.huihoo.org/ 的组织模型来了解一下一个开源软件组织的基本组织结构,角色分类,每一种角色的职责,以及开源软件项目的基本游戏规则。下面的图给出了http://www.huihoo.org/ 的基本组织结构

740)this.width=740" border="undefined">

首先,一个开源软件组织都会有一个合法的机构来支撑,例如:http://www.huihoo.org/主要职责是为这个组织中的开源软件项目提供基本的基础设施,如:website,邮件服务器,为组织内开展的丰富的活动,如技术交流会,用户大会等,提供资金的支持。有人这时候就常会提出一个疑问,它的资金从何而来? 资金的来源一般有四种: 一:个人捐助; 二:企业赞助; : 学校,科研机构的赞助; : 自筹。http://www.huihoo.org/从成立到现在已经走过了2年多的历程,在这期间等到了很多朋友的支持与捐助,有的是直接捐钱,有的是为我们提供硬件设备。同时我们也正在与国内的各大高校展开积极的科研合作,希望能够获得一些国家科研基金的支持与帮助。我们自己也将会制作了一些组织活动的T-Shit, 用于销售给组织的成员,来获得一些活动基金,这部分资金实际上是开源软件贡献者对组织的一种捐助。

其次,项目管理委员会(PMC, Project Manager Committe), PMC的职责是负责对开源组织内的项目做出战略上的指导,并保证项目的朝着健康的方向发展。PMC同时也负责所有项目的开发指导,冲突解决,开发过程,基础设施,以及项目的技术方向。.

PMC的职责:

  • 为组织内的所有项目整体方向提供指导和定位
  • 为项目开发人员提供援助与支持,包括清除障碍,解决问题,解决冲突。
  • 为开发团队建立所需的开发过程和基础设施。
  • 为组织推荐新的子项目,并指定合适的子项目负责人。
  • 确定子项目初始的PMC成员,并新成员的加入建立投票规则。
  • 协助保证子项目有足够的贡献者,并帮助能够填充角色的空白。
  • 制定如何加入开源项目的指南,以帮助新的贡献者加入项目。
  • 协调组织内开源项目间的关系。
  • 推动个人或公司对开源组织的代码捐赠或其他捐赠。
  • 负责组织内开源项目对外界的推广

最后,技术主管、开发人员、测试人员、贡献者。从图中我们可以看到除了PMC之外,还有四种角色: 技术主管,开发人员(代码拥有者,代码评论者), 测试人员,贡献者。

技术主管: 负责项目整体方向的规划,体系结构的设计,代码的编写,以及项目组人员的交流,协调,问题的解决。

开发人员:开发人员里通常会有两类不同的角色: 代码拥有者和代码评论者,代码拥有者拥有对代码的修改权限,负责系统的开发,设计讨论,文档的编写。代码评论者,一般是有着丰富经验的开发人员,负责对代码的风格,逻辑问题进行检查,以保证代码的质量。

测试人员: 测试人员负责对代码进行测试,编写测试用例及测试代码。

贡献者: 贡献者应该是范围最广的一类人员,可以任意参与项目的讨论,问题的查找,提供软件补丁,等等。

以上四类角色除了贡献者的角色以为,都具有对代码的访问权限(即具有CVS ,或其他版本控制工具check in 许可),在下一个blog里,我们会仔细讨论,如何真正获得参与到项目开发中的权限。

那么这四类角色之间的有什么关系呢?

由于开源软件组织通常采用的是多领导人制, 非层次化的组织模型,这与传统的企业的组织模式有着截然的不同(传统企业是层次化的,有着严格的领导于被领导的关系)。从某种角度来讲这种关系的耦合程度应该是极度松散的。组织内的每一个人都是绝对平等的,所有的一切都基于信任(trust)和尊重(respect)。

在 传统企业和公司里,雇佣者与被雇用者之间有一张合同来规定你所应做的和不应该做的,如果你离职,可能还需要支付一定数目的违约金。但在这里,没有!你可以 选择在任何时候加入,也可以选择在任何时候离开,而且你也不需要写一张辞职报告。可想而知,在这样极度松散的环境中进行协作开发的难度,所以积极主动(self-motivation)是 每一个开放源码开发人员最基本的特点,他们都是对自己的兴趣爱好有着极高热情的人,虽然这种热情在不同的时期都又所不同,但一切的都建立在信任之上,任何 人都平等的。每一种角色只是分工不同,没有领导与被领导,管理与被管理的关系,对于任何问题,你都可以提出自己的看法,和见解,没有一个问题是坏问题。

开源组织里的大部分交流都是通过GroupWare(如电子邮件,论坛来进行的), 一般性的问题大家通过邮件等形式进行讨论,而对于重大的问题,如新开发人员的加入,新项目的建立等需要做出决定的问题要的都由所有成员进行投票决定,有效地票数以经常活动的开发人员为准,最后答案要根据具体的投票结果来决定。

小结:

经过实际的一些操作,我们发现这个过程中还是遇到了很多的问题和困难,希望有更多的热爱开源的朋友能帮助我们一起来解决,希望http://www.huihoo.org/会按照这种开放的模式发展得越来越健康。


没有评论: