-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 22.01.2016 18:43, Christopher Small wrote:
> Replicative lets you distribute state, so any time you'd like a
> distributed system to be able to share state, this is something you
> could consider to do that. In particular, every web application is
> a distributed system, so it's something you could use any time you
> wanted eventually consistent state between server(s) and clients.
> So the real question is what shared state offers.
> 
> If you're not doing shared state, you're probably doing something
> where you send messages through some remote transactor that
> (ideally) ensures consistency of the system. But that means two
> things:
> 
> * You can't be working offline (at least, not without a lot of work
> that starts to look like ad-hoc distributed state) * If you want
> optimistic UI updates (good for responsiveness & UX), you have to
> figure out how to undo UI updates if those transactions fail
> 
> Replicative solves both of these problems. You can work offline on
> your copy of the data, and then when you're able to reconnect, it
> does a "merge" (analogous to a git merge). Ideally, the merge is
> clean and the remotes get copies of the work you did, and everyone
> is happy. But, if there are any kind of conflicting changes that
> need to be merged, you have to go through history conflict
> resolution process, again, quite like you would have to in git.
> 
> So in very broad strokes, replicative is sort of like auto-synced
> git for application data.

Yes, this description is pretty accurate :). There is no example for
manual conflict resolution yet, but we already have a commit graph
visualization to allow analysis and time travel (not implemented yet,
but the vega.js plot routine should work in cljs apps):

https://github.com/replikativ/flechtwerk

Originally the plan was just to implement something like git for data.
But over the last year I have refactored it a few times, so now any
CRDT can fit and replikativ just covers the distribution for you. The
C in CRDT most often stands for "conflict-free" (we prefer
"confluent", because CDVCS represents conflicts in its value), so if
you pick other CRDTs, e.g. sets or a LWWR you don't even have to do
conflict resolution and just have an eventual consistent datatype.

> 
> Chris
> 
> 
> 
> On Thursday, January 21, 2016 at 9:00:28 PM UTC-8, Teemu Kaukoranta
> wrote:
>> 
>> Thank you, this looks immensely interesting! I'm still having
>> trouble understanding when exactly one should use replikativ; are
>> you saying it will make it easier to build offline applications?
>> 
You might have a look at Nikita's very nice blog post:
http://tonsky.me/blog/the-web-after-tomorrow/
He has a slightly more central take on distribution, as there still is
one authority ordering the transaction log. Replikativ + CDVCS also
allows you to fork data and dissent on its state, so you are allowed
not to converge with another writer. But even if you only allow
offline edits, you basically have to deal with conflicts, which is not
really avoidable in his centralized design as well.

>> 
>> There's two things that make this difficult to understand: its
>> academic nature, and the fact that many of us are just so used to
>> the central server that it's hard to imagine anything else.

I am sorry for this appeal, I really tried to explain it well and give
good examples including a non-trivial prototype application
(https://topiq.es). Why do you think it is academic? I have written a
paper and teamed up with the syncfree group for CRDT research, because
many eventual consistent (NoSQL) systems promise things which they
don't deliver and are poorly documented (read aphyrs Call me maybe
blog series to get scared...).

basho is in this research group as well btw. and is building
state-based CRDTs into Riak. I wanted to put the ideas and concepts
under serious scrutiny and give very high quality documentation about
the core design. But my motivation is not academic, it is rather
practical and political: I love data and I love machine learning, but
the current trend is that data is always privatized. What can I
improve to make it more clear that this a very practical project?


Christian


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.22 (GNU/Linux)

iQEcBAEBAgAGBQJWonqNAAoJEKel+aujRZMkZeYIAL5LC2wkPGh2prbq0ZHeIXOv
WKFV1BA7uDF9IzfhGBK6Wgs0t++wsHQu+1ovZlDPM0XDliQ7/tIdONsZi2Cud15T
oPrXVmyjJ8KEZXl9Skb9dEwVw79d8ZPYEdO75MoJB9+/bebad2H1ol1n3NEQYdVw
GRbGLiGhOgJPzR5N/VVV8H/OFhtywxy0VYC9PRCB6N2EPpJvMPvBUyObhbGjEOCI
ci2yNrsmA1lVRMoWtxoHlPKfOWdpRqM5Snr2gzGhB6xGa6lUYcF0t7xGy0zP6tcd
luCtdtbcX1BTPu+xYmDJS9s2lP3L0xOiGblVTOv07Kjlgy6bwRNQL/LFRm/GOeU=
=LY3W
-----END PGP SIGNATURE-----

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to