Hi, I stumbled upon the CRDT concept [0,1] of data types offering strong eventual consistency. I am thinking such data structures could be really useful for apps wanting to manage huge collections (Set, Map, etc.) but can't afford to linearise writes.
At Adobe we have such use cases for cross region login infrastructure or group management applications. AFAIK, the idea of CRDT is to offer data types that ultimately converge to the the same value from all observers. The data structure is structured in such a way that changes to its state can be done in any order which avoid mineralization yet guarantee consistency (ultimately). Looking at Oak, it seems it offers the bases for implementing such CRDTs. AFAIK, Oak could be tweaked in such a way that conflicts are automatically resolved according to specific merging rules. I have read the presentation in [2] and I was wondering if one of those mode of conflict handling would help to implement CRDTs. Knowing more about configuration of conflict handling was the intend of my question in [4]. I have seen Riak [3] is supporting them and we could do the same for Oak (release a library of CRDTs that leverages Oak). The added value of this library would be to offer general structures that are easy to reason about consistency wise and would be bug-free. Since Oak is a tree, we could likely implement a CRDT Set nicely. From the CRDT Set we could implement a Map, a graph, and so on. Would it make sense to investigate CRDTs for Oak ? It may make a really interesting student project (Google Summer of Code or such). wdyt ? Regards, Timothee [0] http://hal.upmc.fr/file/index/docid/555588/filename/techreport.pdf [1] http://arxiv.org/pdf/1201.1784v1.pdf [2] http://www.slideshare.net/MichaelDrig/oak-39377061?related=1 [3] http://docs.basho.com/riak/2.0.2/dev/using/data-types/ [4] https://mail-archives.apache.org/mod_mbox/jackrabbit-oak-dev/201505.mbox/browser
