A hands-on project to build a sequence CRDT for collaborative text editing from scratch and benchmark it. This is an attempt to understand the principles of CRDTs and their practical applications in real-time collaborative systems.
This project is a personal learning journey into the world of CRDTs (Conflict-free Replicated Data Types) in the context of real-time collaborative applications.
All milestone notes and technical write-ups are in the docs folder.
- CRDT Intro: Introduction to CRDTs and their types, common properties, and use cases.
- Conflict Modeling: Exploring different types of conflicts in CRDTs and how to handle them.
- CRDT Sequence: Detailed exploration of sequence CRDTs, their properties, and design considerations.
- CRDT Design: Design decisions and considerations for building a sequence CRDT.
- CRDT Implementation: Implementation details and code structure for the sequence CRDT.
- Editor Integration: Integrating the CRDT with a text editor for real-time collaboration.
- Library Comparison: Comparing the implemented CRDT with existing libraries in terms of performance and correctness.
- Benchmarks: Performance benchmarks of the implemented CRDT against existing libraries.
- Lessons Learned: Reflections on the learning journey, challenges faced, and key takeaways.
- Build a working sequence CRDT from first principles
- Compare its correctness and performance with production libraries
- Document key decisions, failures, and wins