{"id":16155423,"url":"https://github.com/keathley/drax","last_synced_at":"2025-07-03T22:38:02.355Z","repository":{"id":57491817,"uuid":"136565236","full_name":"keathley/drax","owner":"keathley","description":"CRDTs for elixir.","archived":false,"fork":false,"pushed_at":"2019-09-27T04:36:21.000Z","size":13,"stargazers_count":14,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-16T23:33:59.894Z","etag":null,"topics":["crdts","distributed-systems","elixir"],"latest_commit_sha":null,"homepage":"","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/keathley.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-06-08T04:11:27.000Z","updated_at":"2024-12-01T01:49:19.000Z","dependencies_parsed_at":"2022-08-30T23:21:11.409Z","dependency_job_id":null,"html_url":"https://github.com/keathley/drax","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keathley%2Fdrax","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keathley%2Fdrax/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keathley%2Fdrax/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keathley%2Fdrax/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/keathley","download_url":"https://codeload.github.com/keathley/drax/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244301165,"owners_count":20430888,"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":["crdts","distributed-systems","elixir"],"created_at":"2024-10-10T01:20:47.671Z","updated_at":"2025-03-18T20:30:26.316Z","avatar_url":"https://github.com/keathley.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Drax\n\n[Documentation](https://hexdocs.pm/drax).\n\nDrax provides a few, common CRDTs for building distributed systems. Drax only provides\nthe data structures themselves and does not provide a means to replicate or\ndistribute these data structures across your cluster.\n\n## CRDTs provided\n\n### OrSet\n\nState based, Observed-Removed Sets. It supports causal additions and deletions.\nIn the case of a conflit Add wins. Because this CRDT is state based it requires\nthat you replicate the entire CRDT to other nodes. This is prohibitive if you\nhave a large number of elements in the set.\n\n### GCounter\n\nA monotonicly increasing counter, similar to vector clocks.\n\n## Why do we need more CRDTs?\n\nYou don't. In all reality you probably want to just use the CRDTs provided in\nLasp. That said, I do have some simple goals for this project:\n\n1) Learn more about how to properly implement and test CRDTs.\n2) Provide a limited set of common CRDTs that I think are useful for the majority of projects.\n3) Serve as a reference document for how CRDTs work.\n\n## Should I use this in production?\n\nProbably not. But then again you probably shouldn't be building stateful services\nanyway so if you're here then you're my kinda people. Look at the code and see\nif they do what you need them to do.\n\n## Installation\n\n```elixir\ndef deps do\n  [\n    {:drax, \"~\u003e 0.1.0\"}\n  ]\nend\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeathley%2Fdrax","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkeathley%2Fdrax","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeathley%2Fdrax/lists"}