The Future of Distributed Software Development on the Internet
From CVS to WebDAV to Delta-V
By Jim Whitehead
Every day, developers with a shared software vision band together from around the world to develop Open Source software. A similar trend occurs in the corporate world: Large companies with physically dispersed divisions create distributed teams to work together on software projects. Cross-organizational projects also occur with greater frequency, such as a subcontractor working closely with a primary systems-integration contractor on a large project.
These geographically dispersed teams share the same needs for distributed source-code control. When it comes to working on the design documents, test cases, specifications, and source code that comprise the project, individual team members need to work on pieces in isolation, then integrate those pieces with the modifications of their coworkers, without clobbering anyone else's changes. Changes need to be tracked so that errors and exploratory design changes can be undone easily. Tracking creates a group memory of how files have changed over time -- valuable for later reconstruction of detailed design rationales. Released and stable configurations of the project are tracked so they can be regenerated quickly, and so that bug fixes can be made to the appropriate release. These capabilities are all provided by software configuration management (SCM) systems.
SCM systems use a library metaphor to control access to project documents and source code. At first, the SCM repository holds all development files in a "checked-in" state.