If you want to use a software configuration management system to do cross-platform development, certain important considerations apply. This article, the first in a four-part series, takes an in-depth look at the requirements of an SCM system for cross-platform projects. It is excerpted from chapter three of the book Cross-Platform Development in C++, written by Syd Logan (Addison-Wesley; ISBN: 032124642X).
A software configuration management (SCM) system consists of tools and processes used to manage the source code of a project and to assess its state. With these tools, management and developers can do the following:
Peruse the source code managed by the SCM system
Obtain a local copy of the source code
Submit modifications made to the source code by developers
Understand which changes have been made to the source code by developers
Determine the state of the source code (for example, whether it compiles)
Log and track defects associated with binaries created from the source code
In a cross-platform project, certain aspects of an SCM system take on added importance. In this chapter, I describe the tools that were most important to Netscape and Mozilla in this regard:
CVS, the Concurrent Version System, which was used to maintain and manage a central copy of the Netscape/Mozilla source code
Bugzilla, used to track defects in programs generated from the source code stored in CVS
Tinderbox, used to determine the state of the source code as changes were made to the copy stored in CVS
Patch, a tool that fosters the distribution and communication of changes among developers (in particular, between a developer and code reviewers) prior to it being permanently stored in CVS
These tools, combined with some best practices for using them that I describe in this chapter, helped greatly in ensuring that Netscape shipped cross-platform products that were similar in features and overall quality, and did so on the same schedule.