Skip to content
Swift Objective-C
Branch: master
Clone or download
Latest commit 9e856f0 Mar 30, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
CRDTFramework-iOS
CRDTFramework
CRDTPlayground.xcodeproj
CRDTPlayground
CloudKitRealTimeCollabTest
External Working visualization & partially implemented CT algo. Sep 1, 2017
Extras
Util
.gitignore
README.md
TODO.md WIP: moving over to weave indices in draw tree. Sep 27, 2017
iphone.gif
mac-main.gif
mac-revisions.gif
mac-shapes.gif
mac-yarns.gif

README.md

This repository is a companion to the article "Data Laced with History: Causal Trees & Operational CRDTs", where I examine the fascinating new class of "operational" CRDTs in detail. Not a framework; for educational use only. Please don't use this in production unless you know what you're doing!

A generic implementation of Victor Grishchenko's Causal Tree CRDT, written in Swift. State-based (CvRDT) implementation. Features many tweaks, including a site identifier map, atom references, and priority atoms. Uses Lamport timestamps instead of "awareness".

Two pieces of companion software are included. The first is a macOS app that simulates device sync over a hypothetical network with any arbitrary topology and any number of partitions. The app is designed for testing the resiliency of a CRDT under difficult network conditions and includes editing support for text and vector graphics. The second is a very basic, CT-based text editor for iOS that works equally well online and offline, syncs documents over CloudKit, and supports real-time collaboration over CloudKit Sharing. No extra servers required! (Such is the glory of CRDTs.)

Performance is good: everything should be O(nlogn) or faster.

You can’t perform that action at this time.