Local-First, sync engines, CRDTs

A Programming Language Perspective on Replication

<p>Distributed systems replicate data to improve availability, scalability, and fault tolerance. Ensuring that replicas remain eventually consistent is difficult. Current practices advocate for the use of Replicated Data Types (RDTs) which guarantee convergence out-of-the-box, e.g. CRDTs. However, programming distributed systems using these RDTs is non-trivial due to the lack of appropriate abstractions for replica discovery, update propagation, etc.</p> <p>At our research lab at the Vrije Universiteit Brussel, we look at what it means for developers to build and utilise eventually consistent data types in their applications. The majority of current RDT approaches are ad-hoc, they require a dedicated implementation for each data type. However, building advanced collaborative applications requires custom RDTs that are tailored to the needs of the application. That implies extending or composing existing RDTs, or designing new ones.</p> <p>Our goal is to develop abstractions and methodologies for the systematic construction of applications requiring replicated state. In this talk, we particularly focus on two main aspects: (1) non-ad hoc approaches to efficient RDT implementations, and (2) simplifying the development of application-specific RDTs:</p> <p>Many approaches use ad-hoc solutions to track causality and ensure eventual convergence, e.g. keeping meta-data in the implementation. In a lot of cases, their design does not translate well into efficient implementations and is not suitable for resource-constrained runtimes. We present Flec[1, 2, 3], a framework that guides developers in making informed decisions during the development process, by providing an API that gives developers a uniform and structured way to deal with functional system requirements. This can range from network constraints to security and authorization aspects.</p> <p>To simplify the development of collaborative applications using RDTs, we investigate alternative approaches where RDTs can be automatically derived from their sequential implementation [4, 5]. By means of an analysis we can detect conflicting operations, and automatically derive functional CRDTs. In some datatypes, certain application invariants would be impossible to guarantee with CRDTs. For these cases, we support automatically detecting where an application would have to synchronise and output an RDT with mixed consistency. </p> <p>[1] <a href="https://cris.vub.be/ws/portalfiles/portal/116156754/Jim_Bauwens_PhD_thesis.pdf">Jim Bauwens, 2024. Flexible CRDTS for a demanding world. PhD Thesis</a> [2] Jim Bauwens and Elisa Gonzalez Boix. 2020. Flec: a versatile programming framework for eventually consistent systems. Proceedings of the 7th Workshop on Principles and Practice of Consistency for Distributed Data. Association for Computing Machinery, New York, NY, USA, Article 12, 1–4. <a href="https://doi.org/10.1145/3380787.3393685">DOI</a> [3] <a href="https://gitlab.soft.vub.ac.be/jimbauwens/flec">https://gitlab.soft.vub.ac.be/jimbauwens/flec</a> [3] Kevin De Porre, Carla Ferreira, Nuno Preguiça, and Elisa Gonzalez Boix. 2021. ECROs: building global scale systems from sequential code. Proc. ACM Program. Lang. 5, OOPSLA, Article 107 (October 2021), 30 pages. <a href="https://doi.org/10.1145/3485484">DOI</a> [4] <a href="https://github.com/verifx-prover/verifx/tree/main">https://github.com/verifx-prover/verifx/tree/main</a></p>

Weitere Infos

Live Stream https://live.fosdem.org/watch/k3201
Format devroom
Sprache Englisch

Weitere Sessions

01.02.26
Local-First, sync engines, CRDTs
K.3.201
<p>Welcome to the "Local First, sync engines and CRDTs devroom", first edition this year at FOSDEM'26. We are excited to propose you a full day of amazing talks ranging from CRDT libraries and frameworks, to local first projects using them, and including academic research, UX design, sync protocols and engines.</p> <p>We believe Local First software is the future of app development. But what is Local First software? In this short introduction we will touch upon the general concepts and describe ...
01.02.26
Local-First, sync engines, CRDTs
Giordano Ricci
K.3.201
<p>CRDTs are an exciting primitive for distributed state. In local-first apps, synced CRDTs can be framed as a natural extension to reactive local state, allowing developers to build eventually consistent multi-device and multi-user apps, with business logic living completely on the client, only requiring generic syncing infrastructure.</p> <p>A key feature that traditional backends solve remains a challenge, though: how do permissions work in this world? In addition to being a ...
01.02.26
Local-First, sync engines, CRDTs
Bartosz Sypytkowski
K.3.201
<p>Yjs is one of the oldest and most widely used libraries that enhance web editors by allowing multiple users collaborate over documents in real time, also without requiring continuous network connection. Evernote and Jupyter Notebooks are among many of its prominent users.</p> <p>During this presentation we'll address some of the common pitfalls that new developers may encounter when working with Yjs library, what architectural foundations are causing them to happen and what can we do to ...
01.02.26
Local-First, sync engines, CRDTs
M Palanikannan
K.3.201
<p><a href="https://github.com/makeplane/plane">Plane</a> is an open source project management tool used by thousands of teams. A year ago, we shipped Wiki — a collaborative documentation system built on Yjs with real-time editing, offline support, and version history.</p> <p>Yjs is remarkable. Kevin Jahns and the community have built something incredible — real-time sync, conflict resolution, offline editing, all handled elegantly. But integrating a powerful library is just the start. This ...
01.02.26
Local-First, sync engines, CRDTs
K.3.201
<p>Automerge is a mature library for building local first applications by enabling version control for structured data. The strategy is to capture all edits to data at a very fine grain (e.g. per keystroke when editing text) and then present a good API for managing concurrently edited versions of this data. </p> <p>The version control approach to collaboration makes working concurrently feasible and makes servers fungible - it increases user autonomy, but it introduces problems as you can't rely ...
01.02.26
Local-First, sync engines, CRDTs
K.3.201
<p>NextGraph is a protocol, a framework, and a platform that supports easy development of Local-First, decentralized, secure and private apps.</p> <p>By combining the best of the local first world (Yjs, Automerge CRDT libraries), a graph database, DID (decentralized identifiers) for users and documents, and end-to-end encryption plus encryption at rest, we provide an SDK that offers all the requirements of portability, interoperability and security needed today for building a true alternative to ...
01.02.26
Local-First, sync engines, CRDTs
Kevin De Porre
K.3.201
<p>Building fast, resilient, and collaborative applications increasingly demands more than reactive UI frameworks and client-side state management. The next generation brings reactivity to the data layer itself—letting applications stay in sync with the backend automatically through a sync-engine architecture.</p> <p>This talk explores how <a href="https://tanstack.com/db">TanStack DB</a> provides a practical path toward such architectures without requiring a rewrite or commitment to a ...