Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
CRDTFramework-iOS
CRDTFramework
CRDTPlayground.xcodeproj
CRDTPlayground
CloudKitRealTimeCollabTest
External
Extras
Util
.gitignore
README.md
TODO.md
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.