Conflict-free replicated data type
Liveblocks is a neat application of CRDTs. Automerge, Yjs (with Hocuspocus) & CROWDs are great libraries. CRDT wiki is great.
Gentle Introduction to CRDTs & Building a BFT JSON CRDT are nice reads.
Diamond Types seem like a nice Rust CRDT implementation.
CRStore is nice CRDT plugin for Svelte. Would love to build same one for Solid.
libSQL Discord has insight crdt room with discussions.
Notes
Links
- James Long - CRDTs for Mortals (2019)
- Applied Monotonicity: A Brief History of CRDTs in Riak (2019)
- Why CRDT didn't work out as well for collaborative editing xi-editor (HN)
- How Figma’s multiplayer technology works (2019)
- HN thread on CRDT (2019)
- An API for data that changes over time (2019)
- Statecraft - Protocol and set of tools for interacting with data that changes over time.
- Full implementation of CRDTs using hybrid logical apps and a demo app that uses it
- Swarm.js - JavaScript replicated model (M of MVC) library.
- To OT or CRDT, that is the question (2020) (HN)
- CRDTs wiki (Code) (HN)
- Awesome CRDT
- Local-first packages & explorations
- Automerge JS - JSON-like data structure (a CRDT) that can be modified concurrently by different users, and merged again automatically. (Tweet) (HN) (Docs) (HN) (2.0) (HN)
- Automergeable
- Automerge in Rust
- Automerge persistent
- Peter Bourgon on CRDTs and State at the Edge (2020)
- Moving Elements in List CRDTs
- Chronofold: a data structure for versioned text (2020)
- roshi - Large-scale CRDT set implementation for timestamped events.
- CRDT benchmarks - Collection of reproducible benchmarks.
- pony-crdt - Delta-State Convergent Replicated Data Types (ẟ-CRDTs) for the Pony language.
- Jylis - Distributed in-memory database for Conflict-free Replicated Data Types (CRDTs), built for speed, scalability, availability, and ease of use.
- An introduction to Conflict-Free Replicated Data Types (2020) (HN)
- CRDTs: The Hard Parts (2020) (Abstract & References) (HN)
- CRDTs in a Nutshell (2020) (Lobsters)
- A First Replicating Type (2020)
- Conflict-Free Replicated Data Types (CRDTs) in Swift (2020)
- Local-first software: You Own Your Data, in spite of the Cloud (2019) (HN)
- Are CRDTs suitable for shared editing? (2020)
- Room Service - Faster-Than-Light Multiplayer Engine. (Docs)
- I was wrong. CRDTs are the future (2020) (HN) (Lobsters) (Reddit) (HN)
- A Pragmatic Approach to Live Collaboration (2020)
- Local First (2020)
- A Bluffers Guide to CRDTs in Riak
- bft-crdts - Byzantine Fault Tolerant CRDT's and other Eventually Consistent Algorithms. In Rust.
- Large-Scale Geo-Replicated Conflict-free Replicated Data Types
- CRDT notes
- syncpad - CRDT-based collaborative source code editor (featuring the Monaco editor).
- Verifying Strong Eventual Consistency in δ-CRDTs
- Reactive CRDT - Easy-to-use library for building collaborative applications that sync automatically.
- Conflict-free Reinterpretable Ordered Washed Data (CROWD) - Like CRDT but better. (Demo)
- crdt-tree - Implementation of a tree Conflict-Free Replicated Data Type in TS.
- CRDT Tutorial for Beginners
- CRDT optimizations (2021)
- Pure operation-based CRDTs (2021)
- Operation-based CRDTs: JSON document (2021)
- Text CRDT Prototype - Prototype of a simple high performance CRDT for text. Its loosely based off automerge.
- Faster CRDTs: An Adventure in Optimization (2021) (HN)
- Chronofold - Conflict-free replicated data structure (a.k.a. CRDT) for versioned text.
- What to use to build collaborative web application today (2021)
- HN: CRDT resources (2021)
- How do CRDTs solve distributed data consistency challenges? (2021) (HN)
- LWW-element-graphs study (Comment)
- go-ds-crdt - Distributed go-datastore implementation using Merkle-CRDTs.
- ldb - Replication of CRDTs in Erlang.
- CRDTs meet Redux
- Peritext - CRDT for asynchronous rich-text collaboration, where authors can work independently and then merge their changes. (Article)
- Automerge: a new foundation for collaboration software (2021) (Tweet) (HN)
- SyncedStore CRDT - Easy-to-use library for building live, collaborative applications that sync automatically. (Docs) (HN)
- valtio-yjs - Proxy state library for ReactJS and VanillaJS. yjs is an implementation of CRDT algorithm (which allows to merge client data without server coordination).
- Naisho - Architecture for end-to-end encrypted CRDTs.
- The limits of conflict-free replicated data types (2021)
- delta-crdts - Delta State-based CRDTs in JavaScript.
- Y-Py - Python binding for Y-CRDT.
- CRDT: Conflict-free Replicated Data Types (2018)
- Making CRDTs Byzantine Fault Tolerant (HN)
- A highly-available move operation for replicated trees (HN)
- Testing CRDTs in Rust, From Theory to Practice (2022) (Lobsters)
- CRDTs - Library of Conflict-Free Replicated Data Types for JavaScript.
- CRDT Swift - Convergent and Commutative Replicated Data Types implementation in Swift.
- Python CRDT - Python library for CRDTs (Conflict-free Replicated Data types).
- Designing Data Structures for Collaborative Apps (2022)
- Programming Local-first Software (2022)
- checked-automerge - Attempt at model checking Automerge.
- Vaxine - Rich-CRDT database platform for backend applications. (Web)
- Yboard - Multiplayer desktop-like workspace based on CRDT. (HN)
- Automerge Chat Demo
- Meangirls - Convergent Replicated Data Types in Ruby.
- Peritext: A CRDT for Collaborative Rich Text Editing (2022) (Tweet)
- Yorkie - Open source document store for building collaborative editing applications. Yorkie uses JSON-like documents(CRDT) with optional types. (Web)
- How to build a todo list app using state-based CRDTs
- Evolu - React Hooks library for local-first software with end-to-end encrypted backup and sync using SQLite and CRDT. (Twitter)
- Katara - Synthesize CRDTs from classic data types with verified lifting.
- Otto Test - Unified approach to CRDTs and OT.
- Crsql - Multi-writer and CRDT support for SQLite. (HN)
- Fundamentals of CRDTs
- Byzantine Fault Tolerant CRDTs in Rust - JSON-like Byzantine Fault Tolerant CRDT in Rust.
- Building a BFT JSON CRDT (2022) (HN) (Tweet)
- CRDT: Fractional Indexing (2022) (HN)
- Data Laced with History: Causal Trees & Operational CRDTs (2018) (Code)
- CRDTs make multiplayer text editing part of Zed's DNA (2022) (HN)
- You might not need a CRDT (2022) (HN)
- pg_crdt - an experimental CRDT extension for Postgres (2022) (HN) (Code)
- CRAttributes - CRDT on CloudKit.
- Keep CALM and CRDT on (HN) (Lobsters)
- Hocuspocus - Y.js WebSocket backend.
- y-supabase - Supabase Provider for Yjs.
- Gentle Introduction to CRDTs (HN)
- CRDT work (2023)
- Automerge Repo - Wrapper for the Automerge CRDT library which provides facilities to support working with many documents at once, as well as pluggable networking and storage.
- y-sync - Yjs/Yrs sync protocol implementation.
- Collabs - Collections library for collaborative data structures.
- Plain Tree: A Basic List CRDT (2022) (Code)
- replicatingtypes - Conflict-Free Replicated Data Types (CRDTs) in Swift.
- CRDT Papers (HN)
- CRDT-richtext: Rust implementation of Peritext and Fugue (2023) (HN)
- JSON-joy CRDT benchmarks, 100x speed improvement over state-of-the-art (2023)
- You may not need a CRDT (2023)
- crdt-richtext - Rich text CRDT that implements Peritext and Fugue.
- y-sweet - Open-source stack for building real time applications on top of the Yjs CRDT library.
- pairpad - Collaborative text editor using CRDTs and WebSockets. Lightweight, easy-to-setup.
- y-octo - CRDT implementation which is compatible with yjs.
- Cola - Text CRDT for real-time collaborative editing. (HN)