#software #engineering #architecture #pattern
idea
Local-first software is a paradigm that keeps user's data locally first, and then synchronizes it to a remote store. The concept is pushed forward by Kleppman et.al.[1], the goal being to enable "7 ideals", of which ownership and privacy, longevity, independence from the network.
This is achieved by storing data locally and then replicating across, using potentially existing synchronization technology already owned by the customer such as dropbox or git.
There are challenges, mostly managing conflicts and merges for collaborative software, and event driven architectures, with the help of CRDTs or other conflict resolution strategies can definitely make the strategy viable.
Coincidentally, there are challenges when it comes to licensing for software that is remote-first[2], since these are hiding data from their customers.
links
Entry and exit cost: If exiting is impossible, then entering had a correlated high cost. Local first software allows a low exit cost.
references
[1]: Martin Kleppmann, Adam Wiggins, Peter van Hardenberg, and Mark McGranaghan. Local-first software: you own your data, in spite of the cloud (and ref). 2019 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software (Onward!), October 2019, pages 154–178. doi:10.1145/3359591.3359737
[2]: Martin Kleppmann It's time to say goodbye to the GPLref (backup) is discussing that GPL was made to counter closed-source software, but now the problem is with cloud services that don't let you access your data.
Wikipedia /CRDT: CRDTs can be used to prevent or manage conflicts.