{"id":21083264,"url":"https://github.com/archagon/crdt-playground","last_synced_at":"2025-03-17T14:16:25.605Z","repository":{"id":27195342,"uuid":"103196172","full_name":"archagon/crdt-playground","owner":"archagon","description":null,"archived":false,"fork":false,"pushed_at":"2019-08-20T14:02:45.000Z","size":14014,"stargazers_count":298,"open_issues_count":6,"forks_count":20,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-03-03T23:49:48.442Z","etag":null,"topics":["causal-trees","cloudkit","collaborative-editing","crdt","cvrdt","distributed-systems","eventual-consistency","icloud-sync","peer-to-peer","sync"],"latest_commit_sha":null,"homepage":"http://archagon.net/blog/2018/03/24/data-laced-with-history/","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/archagon.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-09-11T22:54:55.000Z","updated_at":"2025-02-11T22:17:24.000Z","dependencies_parsed_at":"2022-07-25T17:00:36.658Z","dependency_job_id":null,"html_url":"https://github.com/archagon/crdt-playground","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/archagon%2Fcrdt-playground","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/archagon%2Fcrdt-playground/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/archagon%2Fcrdt-playground/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/archagon%2Fcrdt-playground/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/archagon","download_url":"https://codeload.github.com/archagon/crdt-playground/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244047645,"owners_count":20389206,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["causal-trees","cloudkit","collaborative-editing","crdt","cvrdt","distributed-systems","eventual-consistency","icloud-sync","peer-to-peer","sync"],"created_at":"2024-11-19T20:17:21.292Z","updated_at":"2025-03-17T14:16:25.566Z","avatar_url":"https://github.com/archagon.png","language":"Swift","funding_links":[],"categories":["Implementations"],"sub_categories":["Data Structures"],"readme":"*This repository is a companion to the article \"[Data Laced with History: Causal Trees \u0026 Operational CRDTs][article]\", 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!*\n\nA generic implementation of Victor Grishchenko's [Causal Tree][trees] 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\".\n\nTwo 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.)\n\nPerformance is good: everything should be *O*(*n*log*n*) or faster.\n\n\u003cimg src=\"mac-main.gif\" /\u003e\n\n\u003cimg src=\"mac-shapes.gif\" /\u003e\n\n\u003cimg src=\"mac-revisions.gif\" /\u003e\n\n\u003cimg src=\"iphone.gif\" /\u003e\n\n\u003cimg src=\"mac-yarns.gif\" /\u003e\n\n[article]: http://archagon.net/blog/2018/03/24/data-laced-with-history/\n[trees]: http://www.ds.ewi.tudelft.nl/~victor/articles/ctre.pdf\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farchagon%2Fcrdt-playground","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farchagon%2Fcrdt-playground","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farchagon%2Fcrdt-playground/lists"}