Skip to content

Moving Elements in List CRDTs

Martin Kleppmann

7th Workshop on Principles and Practice of Consistency for Distributed Data (PaPoC), Online (originally planned to be in Heraklion, Crete, Greece), April 2020.


Conflict-free Replicated Data Types (CRDTs) for lists allow multiple users to concurrently insert and delete elements in a shared list object. However, existing algorithms behave poorly when users concurrently move list elements to a new position (i.e. reorder the elements in the list). We demonstrate the need for such a move operation, and describe an algorithm that extends a list CRDT with an explicit move operation. Our algorithm can be used in conjunction with any existing list CRDT algorithm. In addition to moving a single list element, we also discuss the open problem of moving ranges of elements.