diff options
Diffstat (limited to 'src/content/en/slide/2020/11/14')
-rw-r--r-- | src/content/en/slide/2020/11/14/local-first-hype.adoc | 306 |
1 files changed, 129 insertions, 177 deletions
diff --git a/src/content/en/slide/2020/11/14/local-first-hype.adoc b/src/content/en/slide/2020/11/14/local-first-hype.adoc index bb27074..fd83115 100644 --- a/src/content/en/slide/2020/11/14/local-first-hype.adoc +++ b/src/content/en/slide/2020/11/14/local-first-hype.adoc @@ -1,252 +1,204 @@ -= On "local-first": beyond the CRDT silver bullet +# On "local-first" -# On local-first - -Beyond the CRDT silver bullet - ---- - -# Part 1 - -Exposition +@Beyond the CRDT silver bullet --- - -## "cloud apps" vs "old-fashioned apps" +## Part 1 +# Exposition --- - ## Target - +... - documents - files - personal data repositories - -Not: banking services, e-commerce, social networking, ride-sharing, *etc*. +.. +Not: banking services, e-commerce, social networking, ride-sharing, etc. --- - -## 7 Ideals for local-first software +... +# 7 ideals for local-first software --- - -### 1 - No Spinners: Your Work at Your Fingertips +... +# 1 - no spinners: your work at your fingertips --- - -### 2 - Your Work Is Not Trapped on One Device +... +# 2 - your work is not trapped on one device --- - -### 3 - The Network Is Optional +... +# 3 - the network is optional --- - -### 4 - Seamless Collaboration with Your Colleagues +... +# 4 - seamless collaboration with your colleagues --- - -### 5 - The Long Now +... +# 5 - the long now --- - -### 6 - Security and Privacy by Default +... +# 6 - security and privacy by default --- - -### 7 - You Retain Ultimate Ownership and Control +... +# 7 - you retain ultimate ownership and control --- - -## Towards a Better Future - -CRDTs (Conflict-free Replicated Data Types) as a Foundational Technology +## Towards a better future +.... +@ 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" -``` +## 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` -- `Hello, Bob` +- Hello, ABloibce +- Hello, AliceBob +- Hello, BobAlice +- Hello, Alice +\... --- - -Existing CRDTs differ: +# Existing CRDTs differ - performance - storage - compression - metadata overhead --- - -Hint towards the "automerge" CRDT +... +# Hint towards the "automerge" CRDT --- - -*show comparison table, page 9* +...... +@@show comparison table, page 9 --- - -# Part 2 - -Critique +## Part 2 +# Critique --- - -### Software license - -> In our opinion, maintaining control and ownership of data does not mean that -> the software must necessarily be open source. +## Software license +... +@@"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 -#### Example 1 - intentional restriction - -```bash -#!/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)) -``` - -```bash -# today -$ ./useful-adder.sh -4 -# tomorrow -$ ./useful-adder.sh -License expired! -``` - + # 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! -#### Example 2 - unintentional restriction - -```bash -# today -$ useful-program -# ...useful output... - -# tomorrow, with more data -$ useful-program -ERROR: Panic! Stack overflow! -``` --- - -### local-first **requires** free software +.. +# local-first *requires* free software Otherwise "The Long Now" (ideal nº5) is lost --- - -### Denial of existing solutions - -> 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`** +## Denial of existing solutions +.. +@@"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 - -> Git is highly optimized for code and similar line-based text file - -It even pulls software to the plain text direction, e.g.: +## Plain-text formats +. +@@"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` - +- common-core.protocols.config +. Why not exploit that more? --- - -### Ditching of web applications - -> The architecture of web apps remains fundamentally server-centric - -Disagree. Contrast [PouchDB][pouchdb] with Android [Instant Apps][instant-apps] - -[pouchdb]: https://pouchdb.com/ -[instant-apps]: https://developer.android.com/topic/google-play-instant - -??? - -Talk on dynamic content +## Ditching of web applications +.. +@@"The architecture of web apps remains fundamentally server-centric +. +% FIXME: links +Disagree. Contrast PouchDB with Android Instant Apps --- - -### Costs are underrated - +## 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 - -> X also works when inside an elevator, subway or plane! - -<!-- 🤦 --> +## Real-time collaboration a bit overrated +. +It is only possible on the presence of reliable, medium-quality network connection +.. +@@"X also works when inside an elevator, subway or plane!" --- - -### On CRDTs and developer experience - -> 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? - -Yes. - -See "[A Note on Distributed Computing][note-dist-comp]" - -[note-dist-comp]: https://web.archive.org/web/20130116163535/http://labs.oracle.com/techrep/1994/smli_tr-94-29.pdf +## On CRDTs and developer experience +. +@@"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? +. +@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**". - ---- - -## Thank you! - -References: - -1. "[Local-First Software: You Own Your Data, in spite of the Cloud](https://martin.kleppmann.com/papers/local-first.pdf)", by M. Kleppmann, A. Wiggins, P. Van Hardenberg and M. F. McGranaghan -1. [The Morning Paper](https://blog.acolyer.org/2019/11/20/local-first-software/) article -1. "[A Note on Distributed Computing](https://web.archive.org/web/20130116163535/http://labs.oracle.com/techrep/1994/smli_tr-94-29.pdf)", by J. Waldo, G. Wyant, A. Wollrath and S Kendall +. +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 +1. "Local-First Software: You Own Your Data, in spite of the Cloud", by M. Kleppmann, A. Wiggins, P. Van Hardenberg and M. F. McGranaghan +2. The Morning Paper article +3. "A Note on Distributed Compiting", by J. Waldo, G. Wyant, A. Wollrath and S. Kendall +4. these slides: euandre.org/slide/ +5. prose version of this presentation +6. view source |