CM wiki web
Derived Object As Stereotypical Configuration Item
Traditional SCM, as well as CM, is plagued by a revision blindness: that configuration items would necessarily have to be source elements, explicitly added into the versioned database. Under this fallacy, SCM is often confused with RCS, or even understood as source code management. The example of ClearCase over the last 15 years or so, shows however, to whom cares to look at it, that such need not be the case. Of course, the behaviour demonstrated by ClearCase is crude, and restricted in arbitrary ( hysterical) ways. For instance, it is limited to the realm of build management, and furthermore, under the control of the clearmake tool, thus unfortunately bound to the use of makefiles. A derived object produced (or modified) under auditing will automatically be attributed a database id. Furthermore, if the same or a different user attempts to reproduce it (under the same conditions), the build will be avoided and an existing suitable object, if found, promoted to shared status (the first time), and winked in. The net result (beyond some possible time saving) is to share the derived objects, thus reducing the noise related to duplication. This is by the way the essential basic mechanism characteristic of configuration items! Two remarkable aspects must be stressed:- Source files are an extremely small portion of the items composing a software configuration. In addition, they are typically of prior interest only to their authors: all other users would rather ignore them, and will be reminded or their existence only while investigating a breakdown. Derived Objects on the contrary cover virtually anything (source elements being a degenerated case).
- The space of sources is flat (from an SCM, generic, perspective). Any structure between source files can only be specific to their type and format, and subject to interpretation or intends. With dependencies, the domain of derived objects is on the contrary structured in a generic way, suitable for tool support, hence a basis for objective semantics.
There are also direct implications related to the distribution. In summary:
- One can conceive an SCM system not based on version control or revisions.
- An SCM implicitly managing arbitrary file objects would be far more general than the scope of CM ever. It could benefit non developers end users, thus have a mass market.
- Source files are an extremely small portion of the items composing a software configuration. In addition, they are typically of prior interest only to their authors: all other users would rather ignore them, and will be reminded or their existence only while investigating a breakdown. Derived Objects on the contrary cover virtually anything (source elements being a degenerated case).
