Undo and Redo Support for Replicated Registers
Leo Stewen and Martin Kleppmann
11th Workshop on Principles and Practice of Consistency for Distributed Data (PaPoC),
Athens, Greece,
April 2024.
Abstract
Undo and redo functionality is ubiquitous in collaboration software. In single user settings, undo
and redo are well understood. However, when multiple users edit a document, concurrency may arise,
leading to a non-linear operation history. This renders undo and redo more complex both in terms of
their semantics and implementation.
We survey the undo and redo semantics of current mainstream collaboration software and derive
principles for undo and redo behavior in a collaborative setting. We then apply these principles to
a simple CRDT, the Multi-Valued Replicated Register, and present a novel undo and redo algorithm
that implements the undo and redo semantics that we believe are most consistent with users’
expectations.