uprtcl / js-uprtcl

Libraries, tools and modules to create _Prtcl web apps
http://www.uprtcl.io/
Other
43 stars 13 forks source link

Offline-first #22

Open erlend-sh opened 4 years ago

erlend-sh commented 4 years ago

Does the protocol aim to support offline-first principles?

https://www.inkandswitch.com/local-first.html

https://blog.acolyer.org/2019/11/20/local-first-software/

...and if yes, will CRDT play a role in that, or do you have a different approach in mind?

pepoospina commented 4 years ago

Yes, it can handle offline manipulation of Evees (Evolving Entities) by developing service providers that live in the browser or, eventually, standalone software on the local machine.

CRDT works fine for perspectives (branches) from a single writer. When they have multiple writers either the changes can be automatically merged (if done on different parts of the Evee or sub-Evees) or they will result in a legit conflict that needs to be addressed by a human as in GIT.

Its also possible to delegate the CRDT logic to service providers that are eventually consistent, like Holochain or OrbitDB. In that case, it is their responsibility to specify the current head of a given Evee with whatever logic they implement.

Real-time collaboration will also be possible by having a "shared working directory" (following the GIT analogy) to which soft changes can be done prior to making new commits.

erlend-sh commented 4 years ago

Thanks!

Its also possible to delegate the CRDT logic to service providers that are eventually consistent, like Holochain or OrbitDB.

There’s a discussion going on that’ll probably expand a bit on that possibility: https://forum.holochain.org/t/article-local-first-software/1240?u=erlend_sh