DeepAI AI Chat
Log In Sign Up

Collabs: Composable Collaborative Data Structures

by   Matthew Weidner, et al.
Carnegie Mellon University
Rice University

Replicated data types (RDTs), such as Conflict-free Replicated Data Types (CRDTs), provide an abstraction for reasoning about replication and consistency in distributed systems. To make them as useful as ordinary, local data structures, RDTs need to be both modular and composable, so that programmers can create new app-specific RDTs by composing existing ones. However, no existing RDT libraries combine these properties; either they use monolithic architectures that rule out new RDTs or they do not support composition techniques. In this work, we introduce the Collab (collaborative data structure), a novel abstraction for modular and composable RDTs. We also describe the collabs library, an open-source TypeScript library that we built around this abstraction. Our library supports arbitrary programmer-added RDTs and includes composition techniques that make them easier to implement. This allows programmers to work at a higher level of abstraction: custom RDTs for arbitrary concepts in their application, instead of just a fixed menu of generic RDTs. It also allows programmers to extend the library with new RDT algorithms as they are published, instead of waiting for the library to implement them. Our library includes a collection of built-in op-based CRDT implementations, including several that were not previously implemented. To demonstrate the library, we built numerous apps on top of it, including decentralized collaborative apps that can be deployed from a static web page. Benchmarks show that its CRDTs have performance comparable to state-of-the-art CRDT libraries for web apps, and that unlike existing libraries, it can support 100 simultaneous users with low latency in a geo-distributed collaborative app.


page 21

page 22


For-Each Operations in Collaborative Apps

Conflict-free Replicated Data Types (CRDTs) allow collaborative access t...

Using Nesting to Push the Limits of Transactional Data Structure Libraries

Transactional data structure libraries (TDSL) combine the ease-of-progra...

iLibScope: Reliable Third-Party Library Detection for iOS Mobile Apps

Vetting security impacts introduced by third-party libraries in iOS apps...

Real-time Collaborative Multi-Level Modeling by Conflict-Free Replicated Data Types

The need for real-time collaborative solutions in model-driven engineeri...

A thread-safe Term Library

Terms are one of the fundamental data structures for computing. E.g. eve...

JGraphT -- A Java library for graph data structures and algorithms

Mathematical software and graph-theoretical algorithmic packages to effi...

Splitability Annotations: Optimizing Black-Box Function Composition in Existing Libraries

Data movement is a major bottleneck in parallel data-intensive applicati...

Code Repositories


OWebSync Benchmarks recreated for the Collabs paper

view repo