28
already well described in (Greenberg and Marwood 1994). While they concentrated on user-
interface effects in synchronous editors, exactly the same kinds of unexpected editing re-
sults can occur when asynchronous changes are combined. Several strategies may help in
addressing this kind of problem:
• Tracking user’s actual changes (rather than deducing them via a diff) may make the re-
sults of interactions clearer by having the input to the merge exactly correspond to the
user’s editing actions, and not just their effects. This meets the user need for the model
to operate on perceptible objects. The changes actually made when editing are clearly
accessible to introspection by authors.
• Editing histories that reflect the identity of objects as they are perceived by users offer
additional opportunities for merging. If the identity of objects is preserved when they
are moved, merge operations are better able to preserve user intentions. A motivating
example is that large-scale text-movement operations like changing the order of para-
graphs should not necessarily conflict with internal changes to the moved data, such as
sentence-level rewrites to the paragraph.
• Local determination of history is a tool that should be available to a user at all times. On
noticing something anomalous in the shared object, it should be possible to see the his-
tory of changes that apply just within that regionof the shared object. Merged asynchro-
nous change histories are likely to be large and complex, so that a view of changes that
is optional, local, and available on request may be more useful than a complex view that
attempts to show all changes.
Given exact knowledge of editing operations performed, and the ability to examine just
those changes in the exact region where an actual or potential conflict occurred, it is easy to
offer the user options to correct merge problems. This can be done either by the use of col-
laborative undo facilities to remove an unwanted change from the history, or simply by per-
forming new edits to improve the result.
already well described in (Greenberg and Marwood 1994). While they concentrated on user-
interface effects in synchronous editors, exactly the same kinds of unexpected editing re-
sults can occur when asynchronous changes are combined. Several strategies may help in
addressing this kind of problem:
• Tracking user’s actual changes (rather than deducing them via a diff) may make the re-
sults of interactions clearer by having the input to the merge exactly correspond to the
user’s editing actions, and not just their effects. This meets the user need for the model
to operate on perceptible objects. The changes actually made when editing are clearly
accessible to introspection by authors.
• Editing histories that reflect the identity of objects as they are perceived by users offer
additional opportunities for merging. If the identity of objects is preserved when they
are moved, merge operations are better able to preserve user intentions. A motivating
example is that large-scale text-movement operations like changing the order of para-
graphs should not necessarily conflict with internal changes to the moved data, such as
sentence-level rewrites to the paragraph.
• Local determination of history is a tool that should be available to a user at all times. On
noticing something anomalous in the shared object, it should be possible to see the his-
tory of changes that apply just within that regionof the shared object. Merged asynchro-
nous change histories are likely to be large and complex, so that a view of changes that
is optional, local, and available on request may be more useful than a complex view that
attempts to show all changes.
Given exact knowledge of editing operations performed, and the ability to examine just
those changes in the exact region where an actual or potential conflict occurred, it is easy to
offer the user options to correct merge problems. This can be done either by the use of col-
laborative undo facilities to remove an unwanted change from the history, or simply by per-
forming new edits to improve the result.