Re: [ANN] Schism, a set of CRDTs for Clojure and ClojureScript

2018-04-19 Thread Alex Redington
Another good question, and the answer is "it depends". As a guiding principle for the expectations of this abstraction, convergence should yield a collection as if it had all of the operations applied to it in the order that they were applied, locally. So let's work with M, and nodes A and B.

Re: [ANN] Schism, a set of CRDTs for Clojure and ClojureScript

2018-04-19 Thread John Newman
Alex, yeah that explains it for me. I'll probably want to use a fully connected address space, via a mesh or a hub and spoke topology, that I fully manage - so this is the perfect level of abstraction for me. I'd like to see that ZQ implementation though. So, to be clear, if node A sends schism-ma

Re: [ANN] Schism, a set of CRDTs for Clojure and ClojureScript

2018-04-19 Thread Alex Redington
I'll try to answer this question and John's at the same time. Schism does not try to manage state for you over time; there are a lot of good tools for doing that already (atoms, refs, agents, channels, etc). Schism is a set of collections that augment basic clojure collections with enough addit

Re: [ANN] Schism, a set of CRDTs for Clojure and ClojureScript

2018-04-18 Thread Luke Burton
This is cool! There seems to be some room for a recommendation on how to apply these data structures effectively in practice, especially around the distribution mechanism. For instance, I can imagine storing these in an atom and using watchers to push changes out over zero-mq. Or is that the

Re: [ANN] Schism, a set of CRDTs for Clojure and ClojureScript

2018-04-18 Thread John Newman
Wow, this is really cool! Could you describe how one might go about using this to implement, say, a crdt chat room using maps and sets? Can I for instance just push crdts between clients in a serverless fashion? Perhaps some examples would be instructive, but I've been hoping for something just l

[ANN] Schism, a set of CRDTs for Clojure and ClojureScript

2018-04-18 Thread Alex Redington
Good evening! I submit for your evaluation and reasoned feedback a library I've been working on to provide a set of convergent replicated data types to Clojure and ClojureScript: https://github.com/aredington/schism [com.holychao/schism "0.1.0"] Schism provides convergent collections for sets,