本文版权信息作者:Jake Lin(Jake's Blog on 博客园)
出处:http://www.cnblogs.com/procoder/archive/2010/02/10/About-Open-Source-4.html
本作品由Jake Lin创作,采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。 任何转载必须保留完整文章,在显要地方显示署名以及原文链接。如您有任何疑问或者授权方面的协商,请给我留言。

背景

随着iToday项目的发展,人员的扩展,需要一定的项目管理流程来保证项目不会流产。一个具有一定规范的开源项目,单靠个人激情和能力来完成项目的几率非常的低,没有项目管理流程,后续开展会变得困难,项目的可延续性也得不到保证。因此需要想办法实施有效的项目管理。

简介

本文讲述如何使用CodePlex进行开源项目的管理。

项目管理理论与个人理解

书本上的项目管理定义了九大关键域,包括范围管理 风险管理 沟通管理 质量管理 时间管理 成本管理 人力资源管理 采购管理 整合管理。包罗万象,林林种种。但是到了实施过程中每个人都有自己的理解,我对项目管理的理解是:有效利用有限的资源,使用一定的控制手段,达到预定的目标。 由于人力资源,资金成本等是永远都有限,特别是开源项目,主要由有兴趣的贡献者参与,人员不能保证,所以如何有效利用有限的资源很重要。在有效的资源下,通过计划,沟通等手段保证把有限的资源能充分的发挥作用,例如做开源的时候把贡献者安排到其最感兴趣的领域,发挥其最大的作用。这些控制手段同时包括风险控制和质量控制,使用版本管理工具一定程度的减低风险。完成预定的目标这个很重要,资源本身有限,时间也是有限,制定一个可预见的目标十分重要,我会使用版本管理来指定目标。下面讲述如果通过Codeplex实施项目管理,来达到我理解的项目管理目的。

项目管理原则

我的原则是尽量减少所有Stakeholder(项目干系人)的工作,同时最大程度的保证项目的可延续性。这本身就是博弈,世界没有银弹,只能尽量均衡。这里说的stakeholder包括开发者,测试者,协调人员等等,大家都是无偿的贡献,没必要走一个很完美的流程,例如CMMI那些来增加大家的工作量,所以我尽量的简化项目流程,使得大家可以专注于自己喜欢的事情上。在尽量少的项目管理工作来保证项目的延续性。

Codeplex Issue Tracker

我使用Codeplex 的 Issue Tracker功能进行项目管理,地址如下: itoday.codeplex.com/WorkItem/List.aspx ,因为Codeplex本身带了这个系统,不需要另外找项目管理系统,尽管这个系统不是很完善,我们还是可以在其基础上使用。

Issue Tracker是一个问题跟踪系统,一般用在bug处理上,但是也可以用到需求管理,任务分配,版本控制等功能,下面讲述每个Issue包含了那些内容。

版本

我认为版本是Issue最关键的信息,代表着目的与目标,任何Issue都是有目标而做的。当前我把版本分成三类,真实的版本,Future版本和Konwn Issues版本。

真实的版本

例如V 1.0.0, V2.0.0那些,就是需要发布的版本,在开源软件里面是提供给用户下载的版本,也是需要完成的目标。

上面是Version 1.0.0的需要完成的功能,我们把需求作为Issue关联到Version 1.0.0,一旦完成了这些需求,就可以发布Version 1.0.0了。当然在开发过程中如果发现bugs,而且这些bugs关联到Version 1.0.0,那么发布之前也需要修改这些bugs,发布版本的标志是完成该版本下所有的Issues。

Future版本

由于资源的有限性,不可能在一个版本内完成所有的需求,那么一些需求需要放到Future版本中去了。这些需求可能在未来的版本中实现。

Konwn Issues版本

有些问题在当前版本中存在,但是由于某些客观条件限制,不能在当前版本中实现,可以归类为Known Issues。

状态

每个Issue都有状态,包括计划的,活动和已经修改的,创建Issue的时候是Proposed,Assigned to的人会开始处理这个Issue,修改为Active,如果Issue完成了就改为Fixed。发布版本之前所有Issues都应该为Fixed。在我看来,这些状态是不够的,太简单了,至少需要Won't Fix和Duplicate,Cannot Reproduce,有些所谓的bug是不需要fix的,有些Issue是重复的,有些bug是不可重现的。所以我说Codeplex Issue Tracker的功能不够完善。

类型

类型分Feature,Issue和Task。Feature是软件具备的功能,可以理解为需求。Issue是一些问题,可以理解为bug。Task表示一些任务,包括各种任务,例如实现需求的子步骤,编写文档,一些项目管理工作等等。

举一个实例:

我们需要完成Weather Panel的功能。

我新建了一个“新增Weather Panel”的Feature。

链接在http://itoday.codeplex.com/WorkItem/View.aspx?WorkItemId=5992

同时实现这个Feature至少需要下面两个子任务(Task),可能更多Tasks,但是先列举两个。

链接在 http://itoday.codeplex.com/WorkItem/View.aspx?WorkItemId=5993

链接在 http://itoday.codeplex.com/WorkItem/View.aspx?WorkItemId=5994

作为类型,我觉得只有Feature,Issue和Task是不够的,我们使用的另外一套系统中,类型包括下面那些:

但是CodePlex只是提供那么多,我们先用吧。

优先级

优先级很好理解,如下图:

组件

当前iToday有两个组件,一个是Panels,表示应用,如何Home,Weather,Contact Panel那些。而UtilityLib表示一些非UI的公开库,例如WebService属于UtilityLib。

如何使用Codeplex Issue Tracker进行项目管理

流程

项目开始之初收集需求,所有需求都记录下来作为Feature。

然后定义版本,例如定义Version 1.0.0,把需要实现的需求作为Feature绑定到Version 1.0.0中,分派任务。

得到任务的开发者可以根据需求自己定义子任务,例如上面例子的封装WebService等等。

开发人员把任务变成Active,开展自己的开发工作。

任务完成后,把任务变成Fixed。

版本Version 1.0.0下所有Issues变成Fixed以后,项目协调人统一发布版本。

定义版本Version 1.0.1,作为Version 1.0.0的完善版本。

测试人员开始测试,使用Issue Tracker提交bug,类型为Issue,关联到Version 1.0.1。

修改Version 1.0.1下所有问题,Fixed所有Issues,发布Version 1.0.1。

周而复始(Version 1.0.1,Version 1.0.2……),一直完善当初Version 1.0.0下的所有Feature。注意不需要把新功能加入Version1.0.1,否则Issue会越来越多,新需求是Version 2.0.0或者Future版本。

与此同时可以定义Version 2.0.0,从Future版本中的一些Feature移到Version 2.0.0,重复Version 1.0.0的步骤。

Version 2.0.0和Version 1.0.0需要同步,这里包含了如何使用SVN等细节,但是不影响Codeplex Issue Tracker的项目管理流程,我先不在这里讲述了。

贡献者责任

各种贡献者如何使用Codeplex Issue Tracker来完成项目管理流程如下:

项目协调人:定义版本的Feature。分配任务(Feature和Task)。发布版本。

开发人员:定义子任务(Task)。开发。提交版本。

测试人员:提交bug(Issue)。

我觉得流程很简单了,如果可以简化继续简化。这是一个蓝本,大家在实施过程中做流程完善。有问题及时提出,及时修改流程。

还有SVN的管理也是非常重要,后续讲。

[转]开源那些事儿(四)-如何使用CodePlex进行项目管理的更多相关文章

  1. 开源企业平台Odoo 15社区版之项目管理应用模块功能简介

    项目管理无论是各类证书的认证,如PMP.软考高级的信息系统项目管理师.中级的系统集成项目管理工程师等,还是企业实践都有着广泛的实际应用中,至今还是处于热门的行业,合格的或优化的项目经理还是偏少,对于I ...

  2. Qt Style Sheet实践(一):按钮及关联菜单(24K纯开源,一共四篇)

    导读 正如web前端开发中CSS(Cascade Style Sheet)的作用一样,Qt开发中也可以使用修改版的QSS将逻辑业务和用户界面进行隔离.这样,美工设计人员和逻辑实现者可以各司其职而不受干 ...

  3. itest(爱测试) 开源一站式敏捷测试管理平台&极简项目管理,重大升级(接口测试)6.0.0 发布

    itest 简介 itest 开源敏捷测试管理,testOps 践行者,极简的任务管理,测试管理,缺陷管理,测试环境管理,接口测试5合1,又有丰富的统计分析.可按测试包分配测试用例执行,也可建测试迭代 ...

  4. 不错的开源FTP类库

    socket开源ftp类库代码:http://netftp.codeplex.com/ 需要注意事项,如果以下代码出现乱码问题,可以设置其中的Encoding属性就可以. 用法示例: using Sy ...

  5. 拥抱开源,Office 365开发迎来新时代

    前言 作为全球最大的开放源代码托管平台,Github在上周迎来了它的十岁生日.自从2008年正式上线以来,Github上面汇聚了数以千万计的开发人员和各种项目,它几乎成为了开源的代名词和风向标,各大软 ...

  6. 一年之计在于春,2015开篇:PDF.NET SOD Ver 5.1完全开源

    前言: 自从我2014年下半年到现在的某电商公司工作后,工作太忙,一直没有写过一篇博客,甚至连14年股票市场的牛市都错过了,现在马上要过年了,而今天又是立春节气,如果再不动手,那么明年这个无春的年,也 ...

  7. Android 开源项目及其学习

    Android 系统研究:http://blog.csdn.net/luoshengyang/article/details/8923485 Android 腾讯技术人员博客 http://hukai ...

  8. 【开源】OSharp框架解说系列(5.1):EntityFramework数据层设计

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

  9. [转]Android开源项目第二篇——工具库篇

    本文为那些不错的Android开源项目第二篇--开发工具库篇,主要介绍常用的开发库,包括依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本向低版本兼容.多 ...

随机推荐

  1. PHP字符串——编码与转义

    因为PHP程序经常与HTML页.Web地址(URL)以及数据库交互,所以PHP提供一些函数来帮助你处理这些类型的数据.HTML.Web页地址和数据库命令都是字符串,但是它们每个都要求不同的字符以不同的 ...

  2. QMP ( qemu monitor protocol ) and Different ways of accessing it

    The QEMU Monitor Protocol (QMP) is a JSON-based protocol which allows applications to communicate wi ...

  3. Link Aggregation and LACP with Open vSwitch

    In this post, I’m going to show you how to use link aggregation (via the Link Aggregation Control Pr ...

  4. 解决:“MediaPlayer error (1, -2147483648)”问题

    如果你使用VideoView播放过MP4视频,你可能碰到过类似下面的问题: MediaPlayer   error (1, -2147483648) 如果你查阅文档,会发现1其实代表MEDIA_ERR ...

  5. 从Wordpress迁移到Jekyll

    http://pinkyjie.com/2013/10/24/migrate-from-wordpress-to-jekyll/ 上周末闲着没事干突然想把博客从Wordpress迁移到Github p ...

  6. LCS (nlogn)

    最长上升子序列的O(n*logn)算法分析如下: 先回顾经典的O(n^2)的动态规划算法,设a[t]表示序列中的第t个数,dp[t]表示从1到t这一段中以t结尾的最长上升子序列的长度,初始时设dp [ ...

  7. UI学习笔记---第十四天数据持久化

    一.沙盒机制 每个应用程序位于文件系统的严格限制部分 每个应用程序只能在为该程序创建的文件系统中读取文件 每个应用程序在iOS系统内斗放在了统一的文件夹目录下 沙盘路径的位置 1. 通过Finder查 ...

  8. Linux系统下查看硬件信息命令大全

    导读 有许多命令可以用来查看 Linux 系统上的硬件信息.有些命令只能够打印出像 CPU 和内存这一特定的硬件组件信息,另外一些命令可以查看多种硬件组件的信息. 这个教程可以带大家快速了解一下查看各 ...

  9. Log4J 使用实战

    前言: 日志在开发和服务中扮演重要的角色, 有人用来追查/分析问题, 有人通过日志, 来记录重要的信息. 日志是数据分析和统计最重要的数据来源. 在Java领域, Log4j日志框架成为java开发人 ...

  10. UVa 12100打印队列(队列)

    原题链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...