Development of Software has become increasingly important with the growing reliance of other industries upon the products of the tech industry. With this, the standards have risen for software; inducing the need for more planning and management of software throughout its lifecycle. This presentation will describe some of the software management components which are used commonly in the open source sector.
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.
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 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 uses a client/server paradigm for source control, with a usage pattern that generally runs as follows:
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.
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.
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.
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:
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 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).
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.
Below are links to the homepages or guides to many of the tools discussed in this presentation.
Thank You.