Scmbug is not original work. Most of the integration features separating it from related systems were first conceived and implemented by John C. Quillan for CVS and Bugzilla. The distinguishing features of his work are the synchronous nature of the verification checks, and a VDD Generator tool similar to the one described in Section 7.2. His work was never publicly released. Scmbug attempts to continue a redesigned, clean-room implementation of that work, supporting a wider variety of SCM and bug-tracking systems.
Other systems that integrate SCM with bug-tracking are described below. Along with Quillan's work, these solutions are unsuitable for certain development environments.
SCM systems can integrate their actions with Bugzilla using the Bugzilla email gateway. Hook scripts installed in an SCM system can email the results of the system's actions to an email account configured to parse the email and process it accordingly. An example of such a configuration is available from Steve McIntyre's web page.
This approach is not synchronous. For example, if a user accidentally commits against the wrong bug number, or a bug against which he is not the owner, the SCM system will proceed with the commit action regardless, without giving the user the option to correct his actions. Additionally, if the email gateway is not active, the developer will not be immediately aware that integration failed.
Tony Garnock-Jones' CVSZilla integrates SCM events produced by CVS with Bugzilla. It also extends CVS to give rudimentary support to "change-sets", or "transactions".
CVSZilla does not support integration of events produced by any SCM system in a generic way. It modifies the Bugzilla schema and does not work with future versions of Bugzilla. Finally, it assumes that the TCP port used by MySQL is accessible from the machine hosting the CVS repository.
The last assumption does not always hold true, especially when a bug-tracking system is used to track development of mobile developers (laptop users), needing the flexibility to work both locally and remotely, on multiple projects, across different organizational units. Experience has shown that this is a common scenario in organizations with limited hardware, software, or labor resources, such as an academic environment.
For example, imagine integrating CVS actions from a repository hosted on a personal laptop with a Bugzilla instance that needs to be publicly accessible from the Internet. This same bug-tracking system is used for collaboration with other mobile developers of a different organization on a joint project hosted on a third machine. Integration over the public Internet is not possible without opening the MySQL database port Bugzilla uses. Opening this port is unnecessarily insecure, exposing access to other applications hosted on the same database system. The Scmbug daemon exposes the minimum required integration interface between an SCM system and a bug-tracking system.
Commercial products concentrate only on integrating a particular SCM system with a particular bug-tracking system, in a proprietary way. They do not attempt to define a public SCM to bug-tracking integration interface, and solve the integration problem once and for all.
Scmbug is an effort for defining an SCM to bug-tracking integration interface and mechanism that will permit integration of any SCM system with any bug-tracking system.