Displaying 1 to 20 from 36 results

yjs - A CRDT library with a powerful abstraction of shared data

  •    Javascript

Yjs is a framework for offline-first p2p shared editing on structured data like text, richtext, json, or XML. It is fairly easy to get started, as Yjs hides most of the complexity of concurrent editing. For additional information, demos, and tutorials visit y-js.org. Yjs only knows how to resolve conflicts on shared data. You have to choose a ..

orbit-db - Peer-to-Peer Databases for the Decentralized Web

  •    Javascript

OrbitDB is a serverless, distributed, peer-to-peer database. OrbitDB uses IPFS as its data storage and IPFS Pubsub to automatically sync databases with peers. It's an eventually consistent database that uses CRDTs for conflict-free database merges making OrbitDB an excellent choice for decentralized apps (dApps), blockchain applications and offline-first web applications. All databases are implemented on top of ipfs-log, an immutable, operation-based conflict-free replicated data structure (CRDT) for distributed systems. If none of the OrbitDB database types match your needs and/or you need case-specific functionality, you can easily implement and use a custom database store of your own.

lasp - Prototype implementation of Lasp in Erlang.

  •    Erlang

Lasp is a programming model for synchronization-free computations. Lasp requires Erlang 19 or greater. Once you have Erlang installed, do the following to install and build Lasp.

peer-pad - 📝 Online editor providing collaborative editing in really real-time using CRDTs and IPFS

  •    Javascript

PeerPad is a decentralized editor that allows concurrent writing of text. Besides making live changes to a given document, it allows read-only nodes to follow the changes in real-time. It also allows you to publish a self-contained snapshot of the document to IPFS. Clone the repo and install the dependencies from npm.




mesh - A tool for building distributed applications.

  •    Go

Mesh is a tool for building distributed applications. Mesh implements a gossip protocol that provide membership, unicast, and broadcast functionality with eventually-consistent semantics. In CAP terms, it is AP: highly-available and partition-tolerant.

teletype-crdt - String-wise sequence CRDT powering peer-to-peer collaborative editing in Teletype for Atom

  •    Javascript

The string-wise sequence CRDT powering peer-to-peer collaborative editing in Teletype for Atom.

IPFS-CRDT-shared-editing - Decentralized Real-Time Collaborative Documents - Conflict-free editing in the browser using js-IPFS and CRDTs

  •    Javascript

An distributed application that allows for several users to edit the same document at the same time, something similar to Google Docs, but without any coordinating server.Check it out Live Here, Open it on few tabs or devices and start typing...


cpg - CloudI Process Groups

  •    Erlang

CPG provides a process group interface that is similar to the pg2 module within Erlang OTP. The pg2 module is used internally by Erlang/OTP, and is currently the most common approach to the combination of availability and partition tolerance in Erlang (as they relate to the CAP theorem). When comparing these goals with gproc (and its usage of gen_leader), gproc is focused on availability and consistency (as it relates to the CAP theorem), which makes its goals similar to mnesia. The cpg interface was created to avoid some problems with pg2 while pursuing better availability and partition tolerance. pg2 utilizes ets (global key/value storage in Erlang which requires internal memory locking, which limits scalability) but cpg uses internal process memory (see the Design section for more information). By default, cpg utilizes Erlang strings for group names (list of integers) and provides the ability to set a pattern string as a group name. A pattern string is a string that includes the"*"wildcard character (equivalent to ".+" regex while"**"is forbidden). When a group name is a pattern string, a process can be retrieved by matching the pattern. To change the behavior to be compatible with pg2 usage (or gproc), see the Usage section below.

netty-queue - Simple queue: java, json-rest, netty

  •    Kotlin

This is an simple java queue server. See integration test benchmarks for more details.

js-crdt - Conflict-free Replication Data Type in TypeScript

  •    Javascript

CRDT stands for Conflict-free Replication Data Type in JavaScript. Basic development requires at least nodejs@8.

wootjs - WOOT model for Scala and JavaScript via Scala.js

  •    Javascript

Then open http://127.0.0.1:8080/ to edit a document. Open another browser at the same address, and you'll get the idea of collaboration.

crjdt - A conflict-free replicated JSON datatype (CRDT) in Scala

  •    Scala

This is an implementation of the data structures and algorithms described in the paper A Conflict-Free Replicated JSON Datatype (PDF) by Martin Kleppmann and Alastair R. Beresford. The goal of this project is to provide a high-level API to the CRDT described in the paper that integrates well with other JSON libraries for Scala.

crdt - A Golang implementation of CRDTs.

  •    Go

This is an implementation of Convergent and Commutative Replicated Data Types in Go. The following state-based counters and sets have currently been implemented.

crjdt-haskell - A Conflict-Free Replicated JSON Datatype for Haskell

  •    Haskell

crjdt-haskell provides high level interface to CRDT which is formalised in the paper by Martin Kleppmann and Alastair R. Beresford. See haddocks.

sucredb - Distributed KV database with causality tracking

  •    Rust

Sucredb is a multi-master key-value distributed database, it provides a dynamo style tunable consistent and causality tracking. Any node that owns a partition (replicas) can serve both reads and writes. The database tracks causality using vector-clocks and will NOT drop any conflicting writes unlike LWW (last write wins) and other strategies. Conflicts can and do happen due to races between clients and network partitions.

dynamic-data-and-capabilities - Dynamic Data and Capabilities in IPFS Working Group

  •    

Research and development of building blocks that enable collaborative applications, providing solutions for security, identity, access control, concurrency, synchronization, offline and near-real-time collaboration on top of IPFS. Research and implement CRDTs on top of IPFS, creating building blocks that can be used by other applications.

jylis - A distributed in-memory database for Conflict-free Replicated Data Types (CRDTs)

  •    Pony

Jylis is a distributed in-memory database for Conflict-free Replicated Data Types (CRDTs), built for speed, scalability, availability, and ease of use. Visit the website for more information.

pony-crdt - Delta-State Convergent Replicated Data Types (ẟ-CRDTs) for the Pony language

  •    Pony

Delta-State Convergent Replicated Data Types (ẟ-CRDTs) for the Pony language. CRDTs are a special class of data types that can be replicated in a highly-available, partition-tolerant distributed system to yield results that are eventually consistent. That is, with enough message passing, replicas will eventually converge to the same result, even faced with arbitrary partitions.

rust-crdt - a collection of well-tested, serializable CRDTs for Rust

  •    Rust

Thoroughly tested serializable practical CRDT's ported from riak_dt. If you want to learn about how CRDTs work, I suggest starting with the readme from aphyr's meangirls repo. Afterwards, either check out the riak dt source code or A comprehensive study of CRDTs depending on if you like to read papers or jump straight to source code examples.