76
Munch 1993) is strongly related to this approach, although its goal is to provide a way to
manage software variation rather than to manage editing histories.
Second, Palimpsest explicitly recognizes the notion of identity of subsequences by di-
rectly handling the operations of “move” and “copy.” This decision helps to make merge
more useful in text handling. Change orientation makes it possible to combine changes
within a block of text with other changes that move it to a new location. This explicit
treatment of move and copy operations is also a way of faithfully representing the realities
of actual authoring, in which the notion of moving or copying text is a meaningful one.
Move and copy are not an issue when merging change histories created with the output
of most “diff” algorithms, as they cannot detect such editing operations efficiently. Collabo-
rative editing is an application where tracking individual operations, merging them, and
handling them out of sequence are especially useful. Such applications need to track state at
several distinct sites, cope with disconnected operation, and meet collaborating authors’ re-
quests to undo their own (or others’) changes, even when further editing has occurred.
Several other approaches are related to this one by their focus on individual changes. The
already-mentioned work on change-oriented versioning approaches the problem of managing
multiple configurations of software systems by maintaining sets of combinable changes that
represent the modifications required to create a particular version of a software system.
Given the specialized needs of software development, the change-oriented versioning work
has mainly addressed the issues of how to select appropriate sets of changes and ensure the
creation of combinations that will ensure correct semantics of the resulting software.
The problem of implementing an undo command in text editors (Leeman 1986; Abowd
and Dix 1992; Prakash and Knister 1992; Choudhary and Dewan 1995; Ressel, Nitsche-
Ruhland et al. 1996; Dix, Mancini et al. 1997), and the problem of managing changes in syn-
chronous collaborative editing are also closely related to this work, which provides one po-
Munch 1993) is strongly related to this approach, although its goal is to provide a way to
manage software variation rather than to manage editing histories.
Second, Palimpsest explicitly recognizes the notion of identity of subsequences by di-
rectly handling the operations of “move” and “copy.” This decision helps to make merge
more useful in text handling. Change orientation makes it possible to combine changes
within a block of text with other changes that move it to a new location. This explicit
treatment of move and copy operations is also a way of faithfully representing the realities
of actual authoring, in which the notion of moving or copying text is a meaningful one.
Move and copy are not an issue when merging change histories created with the output
of most “diff” algorithms, as they cannot detect such editing operations efficiently. Collabo-
rative editing is an application where tracking individual operations, merging them, and
handling them out of sequence are especially useful. Such applications need to track state at
several distinct sites, cope with disconnected operation, and meet collaborating authors’ re-
quests to undo their own (or others’) changes, even when further editing has occurred.
Several other approaches are related to this one by their focus on individual changes. The
already-mentioned work on change-oriented versioning approaches the problem of managing
multiple configurations of software systems by maintaining sets of combinable changes that
represent the modifications required to create a particular version of a software system.
Given the specialized needs of software development, the change-oriented versioning work
has mainly addressed the issues of how to select appropriate sets of changes and ensure the
creation of combinations that will ensure correct semantics of the resulting software.
The problem of implementing an undo command in text editors (Leeman 1986; Abowd
and Dix 1992; Prakash and Knister 1992; Choudhary and Dewan 1995; Ressel, Nitsche-
Ruhland et al. 1996; Dix, Mancini et al. 1997), and the problem of managing changes in syn-
chronous collaborative editing are also closely related to this work, which provides one po-