CRDT

Open-source projects categorized as CRDT | Edit details

Top 17 CRDT Open-Source Projects

  • GitHub repo gun

    An open source cybersecurity protocol for syncing decentralized graph data.

    Project mention: gun: NEW Data - star count:14993.0 | reddit.com/r/algoprojects | 2021-12-05
  • GitHub repo orbit-db

    Peer-to-Peer Databases for the Decentralized Web

    Project mention: Any suggestions to build a decentralized web app? | reddit.com/r/ipfs | 2021-11-22

    I want to build a decentralized social media web app for a personal project, and I'm thinking on using IPFS. What tool, API, or library can get me set up without writing smart contracts or using blockchain solutions? I've heard that GunDB or OrbitDB are useful libraries- is that true? What are your thoughts and suggestions?

  • Scout APM

    Scout APM: A developer's best friend. Try free for 14-days. Scout APM uses tracing logic that ties bottlenecks to source code so you know the exact line of code causing performance issues and can get back to building a great product faster.

  • GitHub repo yjs

    Shared data types for building collaborative software

    Project mention: Where is the CRDT for syntax trees | news.ycombinator.com | 2021-12-03
  • GitHub repo berty

    Berty is a secure peer-to-peer messaging app that works with or without internet access, cellular data or trust in the network

    Project mention: Is there a real serverless working example of pubsub usage? | reddit.com/r/ipfs | 2021-10-17

    https://github.com/berty/berty/ does serverless pubsub with orbitdb in go.

  • GitHub repo FluidFramework

    Library for building distributed, real-time collaborative web applications

    Project mention: Microsoft Launches Google Wave | news.ycombinator.com | 2021-11-02

    (Disclosure: Work at Microsoft, but I work in Azure and some open source stuff, not on or directly with Fluid/Office/etc.)

    That's just a trademark clause for Microsoft logos and brands. The Fluid Framework itself is [MIT licensed](https://github.com/microsoft/FluidFramework/blob/main/LICENS...) and doesn't require exposing any of those logos/brands when you use it, so the framework itself is fairly open for usage.

    I think the main thing that would slow down adoption for Fluid is that the only "production" backend is an Azure service, which isn't part of the open source Fluid Framework. [Other open source backends](https://fluidframework.com/docs/deployment/service-options/) aren't recommended for productions. Until there are some open source ones, I'd assume adoption will be limited to folks in the Azure ecosystem.

  • GitHub repo teletype-crdt

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

    Project mention: 5000x Faster CRDTs: An Adventure in Optimization | news.ycombinator.com | 2021-07-31

    Cool! It'd be interesting to see those CRDT implementations added to Kevin Jahns' CRDT Benchmarks page[1]. The LogootSplit paper looks interesting. It looks like xray is abandoned, and I'm not sure about teletype. Though teletype's CRDT looks to be entirely implemented in javascript[2]? If the authors are around I'd love to see some benchmarks so we can compare approaches and learn what actually works well.

    And I'm not surprised these techniques have been invented before. Realising a tree is an appropriate data structure here is a pretty obvious step if you have a mind for data structures.

    To name it, I often find myself feeling defensive when people read my work and respond with a bunch of links to academic papers. Its probably totally unfair and a complete projection from my side, but I hear a voice in my head reword your comment to instead say something awful like: "Cool, but everything you did was done before. Even if they didn't make any of their work practical, usable or good they still published first and you obviously didn't do a good enough literature review if you didn't know that." And I feel an unfair defensiveness arise in me as a result that wants to find excuses to dismiss the work, even if the work might be otherwise interesting.

    Its hard to compare their benchmark results because they used synthetic randomized editing traces, which always have different performance profiles than real edits for this stuff. Their own university gathered some great real world data in an earlier study. It would have been much more instructive if that data set was used here. At a glance their RAM usage looks to be about 2 orders of magnitude worse than diamond-types or yjs. And their CPU usage... ?? I can't tell because they have no tables of results. Just some hard to read charts with log scales, so you can't even really eyeball the figures. So its really hard to tell if their work ends up performance-competitive without spending a couple days getting their enterprise style java code running with a better data set. Do you think thats worth doing?

    [1] https://github.com/dmonad/crdt-benchmarks

    [2] https://github.com/atom/teletype-crdt

  • GitHub repo SyncedStore

    SyncedStore CRDT is an easy-to-use library for building live, collaborative applications that sync automatically.

    Project mention: Web Applications from the Future: A Database in the Browser | news.ycombinator.com | 2021-06-08

    I’m exploring the ideas (an easy to use framework to build local-first [1] apps) in my library Reactive-CRDT (https://github.com/yousefed/reactive-crdt). Feedback welcome!

    All credit for the underlying tech to YJS, which has been amazing as mentioned by others in this thread.

    [1]: https://www.inkandswitch.com/local-first.html

  • Nanos

    Run Linux Software Faster and Safer than Linux with Unikernels.

  • GitHub repo go-orbit-db

    Go version of P2P Database on IPFS

  • GitHub repo hyperhyperspace-core

    A library to create p2p applications, using the browser as a full peer.

    Project mention: AWS is playing chess, Cloudflare is playing Go | news.ycombinator.com | 2021-10-18

    I'm thinking there's an interesting parallel between my browser-based p2p project [1] and cloudflare workers / DurableObjects. Instead of DurableObjects, we got HashedObjects [2], and instead of workers running on an edge network somewhere, we got in-browser p2p nodes running a browser-to-browser mesh network.

    [1] Hyper Hyper Space: https://www.hyperhyperspace.org

  • GitHub repo rdoc

    Conflict-free replicated JSON implementation in native Go (by gpestana)

    Project mention: Rdoc – Build better decentralized and offline-first applications in Go | news.ycombinator.com | 2021-01-25
  • GitHub repo ron-rdt

    Haskell implementation of RON and RON-RDT (by ff-notes)

  • GitHub repo go-ipfs-log

    Go version of append-only log CRDT on IPFS

    Project mention: The Limits to Blockchain Scalability ~vitalik | reddit.com/r/CryptoTechnology | 2021-05-23

    If consensus is not needed, then append-only logs (CRDTs) are excellent for bringing about the distributed web and are already starting to get wide usage (go-ipfs-log, ceramic, textile, dat/hyperledger). You can just about recreate the vast majority of applications & services on these structures. These structures can actually operate in a completely distributed manner unlike applications built on-top of blockchains that require gateways and APIs (i.e. Infura).

  • GitHub repo dotted-logootsplit

    A delta-state block-wise sequence CRDT

    Project mention: 5000x Faster CRDTs: An Adventure in Optimization | news.ycombinator.com | 2021-07-31

    Yes, xray was abandoned and teletype is written in JS.

    I understand your point and as a researcher and engineer I know your feeling. I took some cautions by using "Some optimizations". I value engineering as much as research and I'm bothered when I heard any side telling the other side that their work is worthless. Your work and the work of Kevin Jahns are very valuable and could improve the way that researchers and engineers do benchmarks.

    This is still hard for me to determine when position-based list CRDT (Logoot, LogootSPlit, ...) are better than tombstone-based list CRDT (RGA, RgaSplit, Yata, ...). It could be worth to assess that.

    3 year ago I started an update of LogootSplit. The new CRDT is named Dotted LogootSplit [1] and enables delta-synchronizations. The work is not finished: I had other priorities such as writing my thesis... I have to perform some benchmark. However I'm more interested in the hypothetical advantages of Dotted LogootSplit regarding synchronization over unreliable networks. From an engineering point-of-view, I'm using a partially-persistent-capable AVL tree [2]. Eventually I would like to switch to a partially-persistent-capable b-tree. Unfortunately writing a paper is very time consuming, and time is missing.

    I still stick with JS/TS because in my viewpoint Wasm is not mature yet. Ideally, I would like to use a language that compiles both to JS and Wasm. Several years ago I welcomed Rust with a lot of enthusiasm. Now I'm doubtful about Rust due to the inherent complexity of the language.

    [1] https://github.com/coast-team/dotted-logootsplit/tree/dev

  • GitHub repo osmosis-js

    JS reference implementation of Osmosis, a JSON data store with peer-to-peer background sync

    Project mention: Ask HN: What Are You Working On? | news.ycombinator.com | 2021-01-14

    A peer-to-peer data sync library for native apps, based on UDP discovery and CRDTs. It's nowhere near done, but the GitHub README describes it thoroughly:

    https://github.com/ar-nelson/osmosis-js

  • GitHub repo collab-edit

    Edit text in collaboration!

    Project mention: Chronofold: A data structure for versioned text | news.ycombinator.com | 2021-08-01

    The repo seems to be abandoned. Author of chronofold (@gritzko) pointed me to another impl ( https://github.com/decentralized-hse/collab-edit ) but not checked it, yet...

  • GitHub repo crdt-event-fold

    A Haskell library providing a garbage collected CRDT event accumulation datatype.

  • GitHub repo crdt-woot

    Implementation of collaborative editing algorithm CRDT WOOT.

    Project mention: Collaborative Editing Using CRDT WOOT | news.ycombinator.com | 2021-10-30

    Hi, I would like to share this collaborative editor I have created using the CRDT WOOT algorithm as described in the paper Data Consistency for P2P Collaborative Editing. You can try it here. (I added some visualisation of what happens in the algorithm, which is the array of value above.

    https://crdt-woot.herokuapp.com/

    It's more of a proof of concept, which would need some more improvements in order to be production ready.

NOTE: The open source projects on this list are ordered by number of github stars. The number of mentions indicates repo mentiontions in the last 12 Months or since we started tracking (Dec 2020). The latest post mention was on 2021-12-05.

CRDT related posts

Index

What are some of the best open-source CRDT projects? This list will help you:

Project Stars
1 gun 15,006
2 orbit-db 6,219
3 yjs 5,678
4 berty 5,068
5 FluidFramework 3,571
6 teletype-crdt 692
7 SyncedStore 166
8 go-orbit-db 164
9 hyperhyperspace-core 99
10 rdoc 67
11 ron-rdt 62
12 go-ipfs-log 59
13 dotted-logootsplit 27
14 osmosis-js 20
15 collab-edit 19
16 crdt-event-fold 3
17 crdt-woot 2
Find remote jobs at our new job board 99remotejobs.com. There are 32 new remote jobs listed recently.
Are you hiring? Post a new remote job listing for free.
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com