A framework for undoing actions in collaborative systems

@article{Prakash1994AFF,
  title={A framework for undoing actions in collaborative systems},
  author={Atul Prakash and Michael J. Knister},
  journal={ACM Trans. Comput. Hum. Interact.},
  year={1994},
  volume={1},
  pages={295-330}
}
The ability to undo operations is a standard feature in most single-user interactive applications. We propose a general framework for implementing undo in collaborative systems. The framework allows users to reverse their own changes individually, taking into account the possibility of conflicts between different users' operations that may prevent an undo. The proposed framework has been incorporated into DistEdit, a toolkit for building group text editors. Based on our experience with DistEdit… 

Figures from this paper

A Flexible Undo Framework for Collaborative Editing

A new generic and flexible undo framework called ``Compensation'' is proposed, which allows defining an adequate modification to counterbalance any action performed by any user in the collaborative system.

Undo any operation at any time in group editors

A novel group undo solution with the basic idea to interpret an undo command as a concurrent inverse operation by means of operational transformation, so that an operation is always undoable regardless of its undo context.

A semi-transparent selective undo algorithm for multi-user collaborative editors

This paper proposes a semi-transparent selective undo algorithm that handles both do and undo in a unified framework, which separates the processing part of do operations from theprocessing part of undo operations.

Undoing any operation in collaborative graphics editing systems

The Any Undo solution presented in this paper is able to undo any operation in collaborative graphics editing systems and focuses on producing the correct version and the correct number of versions.

A transparent selective undo algorithm for collaborative editing

A novel selective undo algorithm T-UNDO (transparent selective undo) is proposed, which can be transparently integrated into the consistency maintenance algorithms of do operations that maintains insertions before deletions in the edit history.

Undo as concurrent inverse in group editors

The proposed undo solution consists of a generic transformation control algorithm that is capable of generating, transforming, and representing valid inverse operations in any context, and a set of transformation functions that are capable of preserving undo-related transformation conditions and properties.

An algorithm for selective undo of any operation in collaborative applications

A novel OT-based algorithm is proposed that provides integrated do and selective undo and achieves time complexity of O(|H|) in both do and undo by keeping the history in a special operation effects relation order.

A Constraint-based Approach for Generating Transformation Patterns

Constraint Satisfaction Problem (CSP) theory is used to devise correct and undoable transformation patterns (w.r.t OT and undo properties) which considerably simplifies the design of collaborative objects.

A Regional Undo Mechanism for Text Editing

This work describes a novel regional undo technique, which allows the user to dynamically select regions from some concrete document state, and effectively overcomes the limitation of traditional selective undo approaches which require theuser to manually pick up operations to undo from the operation history.
...

References

SHOWING 1-10 OF 49 REFERENCES

Undoing actions in collaborative work

This paper proposes a general framework for undoing actions in collaborative systems that takes into account the possibility of conflicts between different users’ actions that may prevent a normal undo.

Giving Undo Attention

Issues in the Design of a Toolkit for Supporting Multiple Group Editors

The detailed design and implementation of the DistEdit toolkit is described and the experiences in converting several editors, including Gnu Emacs and Xedit, to group edi- tors using the toolkit are reported.

Concepts and implications of undo for interactive recovery

Interactive systems are now beginning to provide some form of undo capability, and with a recovery mechanism, the user can remove the effects of mistakenly-issued commands, and has.

Multi-User Undo/Redo

The model, consisting of a semantic model and an implementation model, is applicable to general multiuser programs including programs ooering both WYSIWIS and WYSINWIS interaction, control and concurrent interaction, and atomic and non-atomic broadcast.

Atomic data abstractions in a distributed collaborative editing system

This paper describes our experience implementing CES, a distributed Collaborative Editing System written in Argus, a language that includes facilities for managing long-lived distributed data. Argus

A new conceptual model for interactive user recovery and command reuse facilities

This paper generalises approaches to modelling an undo facility for interactive systems into a comprehensive user recovery and command reuse facility and incorporates redoing capability in a more general command reuse capacity.

DistEdit: a distributed toolkit for supporting multiple group editors

This paper describes one toolkit, called DistEdit, that can be used to build interactive group editors for distributed environments that has the ability to support different editors simultaneously and provides a high degree of fault-tolerance against machine crashes.

A framework for shared applications with a replicated architecture

The interaction history of a document can be modelled as a tree of command objects. This model not only supports recovery (undo/redo), but is also suitable for cooperation between distributed users

MACE: a fine grained concurrent editor

MACE is a distributed program running on the X Window System and Unix 4.3bsd2 sockets that permits fine-grained (character-level) concurrent editing of text files that uses write locks for concurrency control, allowing a locked section of text to be bounded by any pair of characters in the file.