awesome-crdt

CRDT resources

A collection of resources and papers on Consensus-based Replicated Data Types (CRDTs) for distributed systems

A collection of awesome CRDT resources

GitHub

1k stars
44 watching
48 forks
last commit: over 3 years ago
Linked from 1 awesome list


Awesome CRDT / Know Before You Go / Set Theory

Set Notation and Concepts
Set theory symbols

Awesome CRDT / Know Before You Go / Order Theory

Partially ordered set (Wikipedia)
Total Order (Wikipedia)
Causal Ordering
Semilattice (Wikipedia)
A CRDT Primer Part I: Defanging Order Theory

Awesome CRDT / Know Before You Go / Clocks

Logical Clock (Wikipedia)
Lamport Timestamps (Wikipedia)
Assigning Lamport & Vector Timestamps
Vector Clock (Wikipedia)
Version Vector (Wikipedia)
Why Logical Clocks are Easy

Awesome CRDT / Papers / Foundations

Achieving Convergence, Causality-Preservation, and Intention-Preservation in Real-Time Cooperative Editing Systems - Sun et. al. (1998)
Designing a commutative replicated data type - Marc Shapiro et. al. (2007)
CRDTs: Consistency without concurrency control - Mihai Letia et. al. (2009)
A commutative replicated data type for cooperative editing - Nuno Preguiça (2009)
A comprehensive study of Convergent and Commutative Replicated Data Types - Marc Shapiro et. al. (2011)
Convergent and Commutative Replicated Data Types - Marc Shapiro et. al. (2011)
Conflict-free Replicated Data Types - Marc Shapiro et. al. (2011)
Pure Operation-Based Replicated Data Types - Carlos Baquero et. al. (2017)
Evaluating CRDTs for Real-time Document Editing - Mehdi Ahmed-Nacer et. al.
Large-Scale Geo-Replicated Conflict-free Replicated Data Types - Carlos Bartolomeu
Pure Operation-Based Replicated Data Types - Carlos Baquero et. al. (2017)
Consistency, Availability, and Convergence - Mahajan et. al.
Time, Clocks, and the Ordering of Events in a Distributed System - Leslie Lamport (1978)
Virtual Time and Global States of Distributed Systems - Friedemann Mattern (1988)
Timestamps in Message-Passing Systems That Preserve the Partial Ordering - Colin Fidge (1988)
Dotted Version Vectors: Efficient Causality Tracking for Distributed Key-Value Stores - Carlos Baquero et. al.

Awesome CRDT / Papers / Applications

WOOT: Real time group editors without Operational transformation - Gérald Oster et. al. (2005)
RGA, RHT, RFA: Replicated abstract data types: Building blocks for collaborative applications - Hyun-Gul Roh (2011)
Logoot: A Scalable Optimistic Replication Algorithm for Collaborative Editing on P2P Networks - Weiss et. al. (2009)
TreeDoc: A commutative replicated data type for cooperative editing (2009)
SwiftCloud: Fault-Tolerant Geo-Replication Integrated all the Way to the Client Machine - Marek Zawirski et. al. (2013)
LSEQ: an Adaptive Structure for Sequences in Distributed Collaborative Editing - Brice Nédelec et. al. (2013)
WOOTR: Abstract unordered and ordered trees CRDT - Stéphane Martin et. al. (2011)
Logoot-Undo: Distributed Collaborative Editing System on P2P Networks - Stéphane Weiss et. al.
Yjs: A Framework for Near Real-Time P2P Shared Editing on Arbitrary Data Types (2015)
Causal trees: towards real-time read-write hypertext - Victor Grishchenko
RGASplit: High Responsiveness for Group Editing CRDTs
COPS: Don’t Settle for Eventual: Scalable Causal Consistency for Wide-Area Storage with COPS
Dotted Version Vectors: Logical Clocks for Eventually Consistent Systems 351 almost 7 years ago

Awesome CRDT / Papers / Proof and Verification

A framework for verifying Conflict-free Replicated Data Types (CRDTs) - Dominic Mulligan (2017)
Verifying Strong Eventual Consistency in Distributed Systems - VICTOR B. F. GOMES (2017)
On Verifying Causal Consistency - Bouajjani et. al. (2017)

Awesome CRDT / Blogs

A Look at Conflict-Free Replicated Data Types
Distributed data structures with Coq
Towards a unified theory of Operational Transformation and CRDT
Working code for Operational Transformation/CRDT hybrid
Convergent Replicated Data Types
Logs and docs
CRDTs explained - supercharge your serverless with CRDTs at the Edge (Russell Sullivan)
Good Spirits: Syncing Data Statelessly
Delta State Replicated Data Types
Datanet: a New CRDT Database that Let's You Do Bad Bad Things to Distributed Data
Data Laced with History: Causal Trees & Operational CRDTs
Serverless collaboration - (03/03/2019)
Code together in real time with Teletype for Atom - (15/11/2017)
A CRDT Primer Part II: Convergent CRDTs

Awesome CRDT / Skepticism

Real Differences between OT and CRDT for Co-Editors
Why CRDT didn't work out as well for collaborative editing xi-editor 19,817 8 months ago

Awesome CRDT / Videos

CRDTs: The Hard Parts - Martin Kleppman
Strong Eventual Consistency and Conflict-free Replicated Data Types - Marc Shapiro (ThisByGustav)
CRDTs in Practice - Marc Shapiro & Nuno Preguiça (Erlang Solutions)
Automerge: Making servers optional for real-time collaboration - Martin Kleppmann (J On The Beach 2018)
"Transactions: myths, surprises and opportunities" by Martin Kleppmann (Strange Loop)
"CRDTs Illustrated" by Arnout Engelen (Strange Loop)
Dmitry Ivanov & Nami Naserazad - Practical Demystification of CRDT (Lambda Days 2016) (Erlang Solutions)
ElixirConf 2015 - CRDT: Datatype for the Apocalypse by Alexander Songe (Confreaks)
Using Erlang, Riak and the ORSWOT CRDT at bet365 (...) - Michael Owen - Erlang User Conference 2015 (Erlang Solutions)
Kappa Day - Practical demystification of CRDT - Tomtom (Jug Łódź)
"Distributed, Eventually Consistent Computations" by Christopher Meiklejohn (Strange Loop)
Lightning Talk: Just-Right Consistency: Closing The CAP Gap - Christopher Meiklejohn (Erlang Solutions)
Tutorial: How to build an Collaborative Editing Application with IPFS using CRDT (IPFS)
WOOT: an algorithm for concurrency and collaborative authoring! (Julien Genestoux)
CRDTs for Non Academics (Russell Sullivan)
Datanet Website Slideshow

Awesome CRDT / Videos / Playlists

CRDT Talks Playlist (IPFS)
Coding CRDT's (Jeroen Zuijderhoudt)
CRDT (Adib Saikali)
crdt (Sonny To)

Awesome CRDT / Implementations / Data Structures

KSeq: A continuous sequence CRDT based on Logoot/LSEQ 57 over 8 years ago
LSEQ: CRDT for sequences 21 over 11 years ago
LSEQTree: A data structure for distributed arrays using the LSeq allocation strategy 56 over 6 years ago
LSEQArray: aims to provide an implementation of a CRDT-based array using the allocation strategy LSEQ 5 over 10 years ago
Automerge: A JSON-like data structure (a CRDT) that can be modified concurrently by different users, and merged again automatically 4,016 9 days ago
Yjs: framework for offline-first p2p shared editing on structured data like text, richtext, json, or XML 17,042 28 days ago
RON: Replicated Object Notation, a distributed live data format ( )
teletype-crdt: The string-wise sequence CRDT powering peer-to-peer collaborative editing in Teletype for Atom 751 almost 2 years ago
Peer CRDT: An extensible collection of operation-based CRDTs that are meant to work over a p2p network 60 almost 6 years ago
Distributed Data Structures in Coq 49 about 11 years ago
Akka CRDT: An Eventually Consistent REST/JSON database using CRDTs, Akka Cluster and LevelDB 227 over 8 years ago
Akka Distributed Data
wurmloch-crdt: Experimental implementations of conflict-free replicated data types (CRDTs) for the JVM 116 over 7 years ago
Companion to the article "Data Laced with History: Causal Trees & Operational CRDTs" 296 over 5 years ago
Meangirls: Convergent Replicated Data Types 651 almost 9 years ago

Awesome CRDT / Implementations / Editors

SandEdit: a project aiming to provide a distributed collaborative editor based on Conflict-free Replicated Data Type 6 over 10 years ago
Teletype for Atom: Share your workspace with team members and collaborate on code in real time in Atom 2,408 over 1 year ago
Xi Editor: an attempt to build a high quality text editor, using modern software engineering techniques 19,817 8 months ago
IPFS CRDT Shared Editing: Decentralized Real-Time Collaborative Documents - Conflict-free editing in the browser using js-IPFS and CRDTs 44 about 6 years ago
Shared editing demo using IPFS and CRDT 104 over 6 years ago
Co: collaborative text editor, uses woot. front end in Elm, back in node 42 over 8 years ago
woot-collaborative-editor: A real time collaboration toy project based on WOOT. Implemented with node.js and ws 25 almost 8 years ago
cljs-collab: Browser-to-browser collaborative editor
Xray: An experimental next-generation Electron-based text editor 8,473 over 5 years ago

Awesome CRDT / Implementations / Databases and Logs

Concordant
AntidoteDB
Riak KV
Hypermerge: combines Automerge, a CRDT, with hypercore, a distributed append-only log 1,279 almost 2 years ago
Roshi: a large-scale CRDT set implementation for timestamped events 3,153 over 1 year ago
Swarm: JavaScript replicated model (M of MVC) library 2,676 23 days ago
Datanet: an open source CRDT based data synchronization system
Kuhirō: The Near Cloud

Awesome CRDT / Implementations / Productivity

ff — a distributed note taker and task manager 191 5 months ago

Awesome CRDT / Projects and Organizations / SyncFree

SyncFree
Automerge

Awesome CRDT / More Lists

Readings in conflict-free replicated data types
Carlos Baquero bibliography
BOOM: Berkley Orders of Magnitude
CRDT.tech

Backlinks from these awesome lists:

More related projects: