First Stage in SCM History
Historically, the first SCM tools have been 'revision control systems'.
At some point, the term changed to 'version control', I don't remember why exactly.
I believe there is a current trend to get back to the original term, maybe in order to get rid of the ambiguities bound to the uses of the term 'version' for 'product versions' and the like.
Anyway, these historical systems were based on the pair of tools:
diff /
patch, and thus applied exclusively to text files.
This organised the conceptual management offered, around the compilation and linking of 'source files',
which because of the technology of the times, were precisely text files, 'parsed' for lexical analysis, and further processing by compilers etc.
In the historical context of software scarcity, programs were most often written from scratch, exclusively from such source files, all completely controlled by one and the same developer team.
The obvious tradeoff of restricting the management to those source files, considered as the only 'first-class citizens', was thought as presenting minimal costs.
The archtypical mapping for the concept of 'configuration item' (or more exactly, the common paradigm from which this one was abstracted),
became thus this of 'versioned element', an artifact placed 'into' the RCS at the very beginning of the process.
The versions were thus the (initially exclusively sequential in time, later also parallel as for supporting 'variants') various incarnations of the
configuration items across various software configurations.
There obviously remains a good deal of confusion between two levels (abstract and more concrete), as for people having only ever been exposed to one single language, and for whom the only possible tongue is the one they practice...
In an SCM system based on automatic auditing of the production of software artifacts (such as can be devised on top of
Base ClearCase and clearmake), versioned elements remain a special case of configuration items —the leaves of the dependency graphs.
It is probably wise to reserve the word 'version' to the members of such sets, and to use another term ('instance' of a given derived object 'family'? Or member for family, and instance/item for set?) to the more general and interesting case.
--
MarcGirod - 25 Feb 2007