diff options
Diffstat (limited to 'src/content/en/slide/2020/11/14/local-first-hype.eslaides')
| -rw-r--r-- | src/content/en/slide/2020/11/14/local-first-hype.eslaides | 232 |
1 files changed, 232 insertions, 0 deletions
diff --git a/src/content/en/slide/2020/11/14/local-first-hype.eslaides b/src/content/en/slide/2020/11/14/local-first-hype.eslaides new file mode 100644 index 0000000..8f44ad2 --- /dev/null +++ b/src/content/en/slide/2020/11/14/local-first-hype.eslaides @@ -0,0 +1,232 @@ += On "local-first" + +Beyond the CRDT silver bullet + +<<< + +== Part 1 +=== Exposition + +<<< + +== Target +... +* documents +* files +* personal data repositories +.. +Not: banking services, e-commerce, social networking, ride-sharing, etc. + +<<< + +... +== 7 ideals for local-first software + +<<< + +... +== 1 - no spinners: your work at your fingertips + +<<< + +... +== 2 - your work is not trapped on one device + +<<< + +... +== 3 - the network is optional + +<<< + +... +== 4 - seamless collaboration with your colleagues + +<<< + +... +== 5 - the long now + +<<< + +... +== 6 - security and privacy by default + +<<< + +... +== 7 - you retain ultimate ownership and control + +<<< + +== Towards a better future +.... +[.lead] +CRDTs (Conflict-free Replicated Data Types) as a Foundational Technology + +<<< + +== Use case +---- +# in node A and node B +s = "Hello, World" + +# in node A +s = "Hello, Alice" + +# in node B +s = "Hello, Bob" + +---- +How to reconcile those? +* Hello, ABloibce +* Hello, AliceBob +* Hello, BobAlice +* Hello, Alice +\... + +<<< + +== Existing CRDTs differ +* performance +* storage +* compression +* metadata overhead + +<<< + +... +== Hint towards the "automerge" CRDT + +<<< + +...... +[.lead] +@show comparison table, page 9 + +<<< + +== Part 2 +=== Critique + +<<< + +== Software license +... +[.lead] +@"In our opinion, maintaining control and ownership of data does not mean that the software must necessarily be open source." + +<<< + +== Example 1 - intentional restriction +---- +#!/bin/sh +TODAY="$(date +%s)" +LICENSE_EXPIRATION="$(date -d 2020-10-27 +%s)" +if [ "$TODAY" -ge "$LICENSE_EXPIRATION" ]; then + echo 'License expired!' + exit 1 +fi +echo $((2 + 2)) +---- +---- +# today +$ ./useful-adder.sh +4 + +# tomorrow +$ ./useful-adder.sh +License expired! +---- + +<<< + +== Example 2 - unintentional restriction +---- +# today +$ useful-program +# ... useful output ... + +# tomorrow, with more data +$ useful-program +ERROR: Panic! Stack overflow! + +---- + +<<< + +.. +== local-first *requires* free software + +Otherwise "The Long Now" (ideal nÂș5) is lost + +<<< + +== Denial of existing solutions +.. +[.lead] +@"In principle it is possible to collaborate without a repository service, e.g. by sending patch files by email, but the majority of Git users rely on GitHub." +Solution: either GitHub+CRDTs or git send-email + +<<< + +== Plain-text formats +[.lead] +@"Git is highly optimized for code and similar line-based text file" +It even pulls software to the plain text directtion, e.g.: +* delivery-templates +* common-core.protocols.config +Why not exploit that more? + +<<< + +== Ditching of web applications +.. +[.lead] +@"The architecture of web apps remains fundamentally server-centric +// FIXME: links +Disagree. Contrast PouchDB with Android Instant Apps + +<<< + +== Costs are underrated +* storage +* backups +* maintenance +Example: blog vs vlog + +<<< + +== Real-time collaboration a bit overrated +It is only possible on the presence of reliable, medium-quality network connection +.. +[.lead] +@"X also works when inside an elevator, subway or plane!" + +<<< + +== On CRDTs and developer experience +[.lead] +@"For an app developer, how does the use of a CRDT-based data layer compare to existing storage layers like a SQL database, a filesystem, or CoreData? Is a distributed system harder to write software for? +[.lead] +YES. +// FIXME: link +See "A Note on Distributed Computing" + +<<< + +== Conclusion +Why this is a "paper I love": it took offline-first and ran with it. +But a pinch of CRDT won't make the world local-first. +The tricky part is the end of the sentence: "in spite of the Cloud". + +<<< + +== References +// FIXME: links +. "Local-First Software: You Own Your Data, in spite of the Cloud", by M. Kleppmann, A. Wiggins, P. Van Hardenberg and M. F. McGranaghan +. The Morning Paper article +. "A Note on Distributed Compiting", by J. Waldo, G. Wyant, A. Wollrath and S. Kendall +. these slides: euandre.org/slide/ +. prose version of this presentation +. view source |
