  Conflict-free Replicated Data Types (CRDTs) allow optimistic replication in a
principled way. Different replicas can proceed independently, being available
even under network partitions, and always converging deterministically:
replicas that have received the same updates will have equivalent state, even
if received in different orders. After a historical tour of the evolution from
sequential data types to CRDTs, we present in detail the two main approaches to
CRDTs, operation-based and state-based, including two important variations, the
pure operation-based and the delta-state based. Intended as a tutorial for
prospective CRDT researchers and designers, it provides solid coverage of the
essential concepts, clarifying some misconceptions which frequently occur, but
also presents some novel insights gained from considerable experience in
designing both specific CRDTs and approaches to CRDTs.
