Specification <number> below refers to the section in the paper A comprehensive study of Convergent and Commutative Replicated Data Types describing the CRDT.
Scratched out means DONE.
Write docs for:
The functionality and semantics of the CvRDTThe JSON view of each CvRDTSimple JavaScript demo querying the REST serverHow to start up the cluster serviceREST APIScala CRDT APIHow to run the DemoRestServerArchitecture (pub/sub, leveldb) etc.Configuration- Scala ClusterClient API
- LevelDB and other storage options
- More background and concepts around CRDT, CAP and CALM
- Explain difference between CvRDT and CmRDT
Support in both Scala and REST API:
- def keys(): Set[String]
- def values(): Iterator[CRDT]
Specification 6 State-based increment-only counterSpecification 7 State-based PN-Counter
Specification 11 State-based grow-only Set (G-Set)Specification 12 State-based 2P-Set- Optimized OR Set - as defined in An Optimized Conflict-free Replicated Set
- Specification 8 State-based Last-Writer-Wins Register (LWW Register)
- Specification 10 State-based Multi-Value Register (MV-Register)
- Specification 5 op-based Counter
- Specification 9 Op-based LWW-Register
- Specification 13 U-Set: Op-based 2P-Set with unique elements
- Specification 14 Molli, Weiss, Skaf Set
- Optimized OR Set - as defined in An Optimized Conflict-free Replicated Set
- Specification 16 2P2P-Graph (op-based)
- Specification 17 Add-only Monotonic DAG (op-based)
- Specification 18 Add-Remove Partial Order
- Specification 19 Replicated Growable Array (RGA)
- Specification 21 Op-based Observed-Remove Shopping Cart (OR-Cart)
- TODO
- Using eventsourced - Use the Akka 2.2 branch.
- Write a JavaScript CRDT library. So a client can grab the real JSON representation, modify it, do the merges as needed and then push the result back to the server.
- Java API for CRDT classes/ClusterClient