17
would still have to serially access the same computer and vector graphics display, did not
limit the editorial controls and facilities offered (although display size and quality certainly
did).
PEDIT (Kruskal 1984)was an experimental program editor that recorded all editing opera-
tions as conditional compilation instructions. Changes could be grouped by means of at-
tached boolean expressions, and a desired state of a program file obtained by setting the
appropriate compilation flags. This system worked with the C preprocessor, and allowed pro-
gram options to be created by appropriately managed editing sessions. Another approach to
change-oriented versioning was proposed in (Lie, Conradi et al. 1989), and this line of re-
search eventually issued in the creation of two iterations of the EPOS software engineering
database. This system (Munch 1993)also used Boolean operations to control the selection of
features in software systems. Unlike PEDIT it was based on a database engine and not the
programming language preprocessor. Much of the Epos work was devoted to formalizing the
software feature model and automatic compatibility checking of feature sets based on ex-
plicit declarations. EPOS’s basic ideas of non-historical state tracking and change-based ver-
sion management are directly applicable to authoring, but the details of its logically-based
predicates for variant selection are not.
1.5 Distribution and architecture issues
Any attempt to separate data distribution from concurrency is a little artificial, since the
number of locations where data is stored has critical implications for the choice of algo-
rithms for conflict detection and resolution. The fact that the best implementation strategies
vary does not prevent fully distributed databases from offering serializable editing histories,
nor does the use of a central server prevent an application from using a synchronization
model based on non-serializable editing histories. Many distributed database systems
(Coulouris and Dollimore 1988) provide a globally consistent state based on a serializable
would still have to serially access the same computer and vector graphics display, did not
limit the editorial controls and facilities offered (although display size and quality certainly
did).
PEDIT (Kruskal 1984)was an experimental program editor that recorded all editing opera-
tions as conditional compilation instructions. Changes could be grouped by means of at-
tached boolean expressions, and a desired state of a program file obtained by setting the
appropriate compilation flags. This system worked with the C preprocessor, and allowed pro-
gram options to be created by appropriately managed editing sessions. Another approach to
change-oriented versioning was proposed in (Lie, Conradi et al. 1989), and this line of re-
search eventually issued in the creation of two iterations of the EPOS software engineering
database. This system (Munch 1993)also used Boolean operations to control the selection of
features in software systems. Unlike PEDIT it was based on a database engine and not the
programming language preprocessor. Much of the Epos work was devoted to formalizing the
software feature model and automatic compatibility checking of feature sets based on ex-
plicit declarations. EPOS’s basic ideas of non-historical state tracking and change-based ver-
sion management are directly applicable to authoring, but the details of its logically-based
predicates for variant selection are not.
1.5 Distribution and architecture issues
Any attempt to separate data distribution from concurrency is a little artificial, since the
number of locations where data is stored has critical implications for the choice of algo-
rithms for conflict detection and resolution. The fact that the best implementation strategies
vary does not prevent fully distributed databases from offering serializable editing histories,
nor does the use of a central server prevent an application from using a synchronization
model based on non-serializable editing histories. Many distributed database systems
(Coulouris and Dollimore 1988) provide a globally consistent state based on a serializable