As we're approaching the new major version of Yjs (v14), there are few breaking changes worth talking about. While most of them concern the API, a binary format itself remains stable (so don't be afraid, your…
crdt
A collection of 23 posts
Conflict-free Database over Virtual File System
This time we're going to cover a new implementation of persistent key value store, using Conflict-free Replicated Data Types (CRDTs) to enable multi-process writes. Moreover, this approach enables shift of replication protocol from custom made gossip servers into…
Can Yrs fit my table?
In this blog post we'll design a collaborative 2D table structure using yrs - Rust port of popular yjs conflict-free replicated data types library for creating real-time, local-first apps. We'll also cover some optimizations to improve…
Non-interleaving Linear Sequence (LSeq) CRDT
Today we're going to jump into LSeq - one of the famous text-editing conflict-free replicated data types we briefly introduced in the past blog posts. This time we're aiming for fixing one of the popular issues…
Conflict-free Replicated Spread Sheets
In this blog post we're going to cover a concepts and implementation behind collaborative 2-dimensional tables, with set of operation that could make them useful to work as spread sheets - popular in products like MS Excel or…
State of Yrs in May 2023
This blog post is a short summary of ecosystem and capabilities of Yrs (read: wires): a fully-compatible Rust port of Yjs library used to build collaborative peer-to-peer applications thanks to the power of Conflict-free Replicated Data Types. They are being…
CRDTs & Security: Authentication
Today we're going to continue exploration of Conflict-free Replicated Data Types domain. This time we'll start designing protocols that focus on a security aspects as first class citizens. Managing security and permissions in peer-to-peer systems may…
Conflict-free reordering
In this blog post we'll define the basics for a move operation used by Conflict-free Replicated Data Types (CRDT), which allows us to reorder the items in the collection. We'll define the general approach and go…