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…
crdt
A collection of 18 posts
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 be quite cumbersome as…
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 through example implementation build…
Shelf: easy way for recursive CRDT documents
In the past we already discussed how to build JSON-like Conflict-free Replicated Data Type [https://www.bartoszsypytkowski.com/operation-based-crdts-json-document/]. We used operation-based approach, with wide support for many operations and characteristics of a dynamically typed recursive documents. However with that…
Deep dive into Yrs architecture
In this blog post we're going to cover the the internals and architecture behind Yrs [https://crates.io/crates/yrs] (read: wires) - a Rust port of popular Yjs [https://yjs.dev/] CRDT library used for building collaborative peer-to-peer applications,…
Delta-state CRDTs: indexed sequences with YATA
In this blog post we're coming back to indexed sequence CRDTs - we already discussed some operation-based approaches in the past. This time we'll cover YATA (Yet Another Transformation Approach): a delta-state based variant, introduced [https://www.google.com/url?…
CRDT optimizations
After series of 11 blogs posts about Conflict-free Replicated Data Types, it's time to wrap up. This time let's discuss various optimizations that could be applied to CRDTs working at higher scale. Other blog posts from this series: * An introduction…
Pure operation-based CRDTs
In this blog post we'll continue on topic of operation-based CRDTs and focus on the optimizations and approach known as pure operation-based CRDTs [https://hal.inria.fr/hal-01287738/document]: how can we use them to address some of the problems…