Open Source Project Management Tools

Perry Rajnovic

University of Pittsburgh

Presentation Outline

Project Management Overview

Source Code

Source code is the heart and soul of a software project once it has been envisioned. Out of requirements and specification documents, along with other planning papers, the actual software product is constructed of source code, documentation and user manuals, support capabilities, etc.

Source Code Tools

The complexity of the code which powers programs grows each year, necessitating a way to maintain control over the changes introduced. A writer once quipped "If debugging is the act of removing software bugs, programming must then be the act of adding them." This may be an amusing quote, but it also belies the fact that every change made to a program may fix a bug, only to introduce new ones. The most common method of reducing this from occuring is good system design, along with a record of each change made to the source base

Source Code Control Systems

The tools used to track a programs Source Code are usually referred to as Revision control tools. (they also known as version control, source control or (source) code management (SCM) tools). One of the first systems in place for such revision managment was RCS (aptly named Revision Control System). As software grew to be more complex with more needs and more people involved, the tools had to evolve and adapt as well.

CVS

CVS was one of the first major open source versioning systems that gained popularity in Open Source Software. It evolved from RCS, when Dick Grune was working with students on a C compiler and needed a way to commit new versions independently in the mid-80s. The code which makes up the modern versions of CVS were begun in 1989 and Brian Berliner. Though CVS is one of the most widely used systems, it is showing age and its development has slowed.

CVS Usage (1)

CVS uses a client/server paradigm for source control, with a usage pattern that generally runs as follows:

CVS Usage (2)

Subversion

Over time, the open source community wanted a new way to maintain their source code, along with new features that would improve productivity and the flexibility for development. Subversion was designed as a new revision control tool that could supercede CVS. It was also open-source, and its development began around 2000. It features nearly all of the capabilities of CVS, unless there was a compelling reason not to adopt it.

Subversion Features

Defect Tracking Tools

Fixing bugs in different versions of code is only one step in effectively developing software. Keeping track of defects, maintaining information about them and where they are exhibited is an important part of the software development lifecycle. To this end several tools are available for tracking this information. Bugzilla and Trac are two examples.

Bugzilla

The Mozilla Group, makers of Firefox and several other open source software packages developed Bugzilla in 1998 to track defects in the Netscape Communicator Suite. It is designed to track any bugs, however its conception of a bug is very general, allowing for generic user-submitted tracking tickets.

Bugzilla Issue Lifecycle

Trac

Trac is another defect tracking system, however it is meant to provide a more wholisitic approach to project management by integrating support for source code management as well as providing additional capabilities than tickets. In addition to Defect Tracking, Trac provides:

Open Source Standards

Just as open source promotes the ability to view the code you're using, it also promotes the reuse and modification of it. Along these lines, as more standards are developed to provide interoperability between system, open source standards allow anyone to provide this capability not only for free, but often by using another systems implementation.

Genshi

Genshi is a toolkit written in python which provides several useful functions that are often needed when writing web-applications. This means that when porting a service to the web, you will not need to worry as much about ensuring that your output to the client's browser will be buggy or non-compliant when it comes to standards. Additionally, since it also provides parsing, it can be used to adapt or modify raw content coming from applications which provide output in open standards (such as HTML or XML).

Case Study: Subversion/Trac

Trac is interesting that it is integrated with Subversion. Bugzilla has traditionally been used in conjunction with CVS, and many projects that have added Subversion support did so by modifying an existent CVS interface to be more generic and compliant with both SCMs. A major feature of Trac that allows it to be used in many systems is the fact that it is intended to impose as little as possible on a team's established development process and policies. Essentially, whether a group uses Waterfall, Iterative, Multimedia, or Agile Software Development Practices, Trac is likely to be easy to integrate and use with the project.

More Information

Below are links to the homepages or guides to many of the tools discussed in this presentation.

Questions?

Thank You.