Earlier quoted context omitted.
The common abstraction is a shared log. I'm boiling down my current side project ( http://www.adama-lang.org/ ) into reusable components. I'm also looking at WebAssembly as the way of doing work ( http://www.adama-lang.org/blog/micro-monoliths ) versus generic operations. Something interesting to consider is how important is offline use these days? If we get to an online-99.9% world, then the solution feels ... simpl…
But you'd want to allow the client query a snapshot before doing a full sync on the shared log.
An area that I'm playing around with is a log reducer which transforms a region within a log into a single item. For instance, if the log entries are just JSON (without arrays) then json merge (RFC 7396) is an example reducer. See http://www.adama-lang.org/blog/json-on-the-brain for more detail.