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…
distributed-systems
A collection of 23 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…
Plumtree - epidemic broadcast trees
Some time ago, we covered an idea behind HyParView [https://bartoszsypytkowski.com/hyparview/], a cluster membership protocol that allowed for very fast and scalable cluster construction. It did so by using the concept of partial view: while our cluster could…
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,…
RAMP up your distributed transactions
Last time [https://www.bartoszsypytkowski.com/hash-partitions/] we were talking about partitioning in distributed systems. Now it's a time to talk about protocols that allow us to establish transactional reads and writes across partitions - which could be living on…
Distributed systems: partitions
Today we'll talk about topic of resource allocation in distributed systems using partitions. While we mention two common approaches - partitioning by key and hash rings - further down the post we'll focus only on the second. But let's start…