diff options
Diffstat (limited to '_slides/2020-10-26-on-local-first-beyond-the-crdt-silver-bullet.slides')
-rw-r--r-- | _slides/2020-10-26-on-local-first-beyond-the-crdt-silver-bullet.slides | 272 |
1 files changed, 0 insertions, 272 deletions
diff --git a/_slides/2020-10-26-on-local-first-beyond-the-crdt-silver-bullet.slides b/_slides/2020-10-26-on-local-first-beyond-the-crdt-silver-bullet.slides deleted file mode 100644 index 02f6cc7..0000000 --- a/_slides/2020-10-26-on-local-first-beyond-the-crdt-silver-bullet.slides +++ /dev/null @@ -1,272 +0,0 @@ ---- - -title: 'On "local-first": beyond the CRDT silver bullet' - -date: 2020-10-26 - -layout: slides - -lang: en - -ref: on-local-first-beyond-the-crdt-silver-bullet - -published: false - ---- - -# On local-first - -Beyond the CRDT silver bullet - ---- - -# Part 1 - -Exposition - ---- - -## "cloud apps" vs "old-fashined apps" - ---- - -## 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 - -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` -- `Hello, Bob` - ---- - -Existing CRDTs differ: -- performance -- storage -- compression -- metadata overhead - ---- - -Hint towards the "automerge" CRDT - ---- - -*show comparison table, page 9* - ---- - -# 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. - ---- - -#### 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! -``` - ---- - -#### Example 2 - unintentional restriction - -```bash -# today -$ useful-program -# ...useful output... - -# tomorrow, with more data -$ useful-program -ERROR: Panic! Stack overflow! -``` ---- - -### local-first **requires** free/libre 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`** - ---- - -### 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.: -- delivery-templates -- `common-core.protocols.config` - -Why not exploit that more? - ---- - -### Ditching of web applications - -> The architecture of web apps remains fundamentally server-centric - -Disagree. Constrast [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 - ---- - -### Costs are underrated - -- storage -- backups -- maintanence - -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! - -<!-- 🤦 --> - ---- - -### 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 - ---- - -## 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. these slides: [{{ site.tld }}/slides.html]({% link slides.md %}) -2. [prose version of this presentation]({% link _articles/2020-10-26-local-first-software-you-own-your-data-in-spite-of-the-cloud-article-review.md %}) -3. "[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 -4. [The Morning Paper](https://blog.acolyer.org/2019/11/20/local-first-software/) - article -5. "[A Note on Distributed Computing][note-dist-comp]", by J. Waldo, G. Wyant, A. Wollrath and S Kendall - -[note-dist-comp]: https://web.archive.org/web/20130116163535/http://labs.oracle.com/techrep/1994/smli_tr-94-29.pdf |