Peter van Hardenberg, director of the Ink & Switch Research Lab, discusses the concept of Local First software, its limitations, and suitability for different applications. They explore the role of peer-to-peer technology, potential of local-first software, and cross-app collaboration. The chapter delves into the benefits of this approach, examples of successful implementation, and available technologies. The podcast emphasizes the importance of having data live on the user's device.
Local first software prioritizes the user's experience by focusing on local computing and data synchronization.
Building local first web apps requires rethinking traditional architectures and considering data availability and synchronization.
The future development of local first software includes areas such as version control, authentication, security, syncing optimization, and cross-app collaboration.
Deep dives
The Importance of Collaboration in the Cloud
Collaboration is a key aspect of the cloud, allowing users to easily work together by sharing links and accessing data. However, relying solely on the cloud can have downsides, as users do not have the software itself on their devices. The ideal solution is to have a copy of the program and data on local devices while enabling collaboration with others.
Transition from Cloud to Local First
The journey towards local first software began with the frustration of relying on cloud-based music apps that failed to work offline. This realization led to questioning why software had shifted from something easily accessible to something that relied heavily on the internet. It became clear that the traditional approach of cloud-centric development could be reevaluated to prioritize the user's experience by focusing on local computing and synchronization of data between devices.
Architectural Shifts in Local First Software
Building local first software requires rethinking the traditional architecture of web apps. Developers must consider how to ensure data availability when users are offline, and how to synchronize data between devices in a seamless and efficient manner. The goal is to enable users to have control over their data, access it on multiple devices, and collaborate with others while minimizing reliance on central servers. This architectural shift can simplify software development, enhance the user experience, and allow for greater ownership and control over data.
Building local first software requires inventing along the way
Building local first web apps in 2023 still requires inventing solutions along the way. While React and CRDTs like YJS or Auto-merge are popular choices, developers should expect to encounter challenges related to offline use, access control, and syncing. Despite the progress made by companies like Apple Notes, Figma, and Google Docs, local first software is still a relatively new concept that requires exploration and experimentation. However, the benefits of building with a local first approach, such as improved user experience and simplified development, make it worth exploring.
Future directions in local first software
Several areas of focus in the future development of local first software include version control and versioning, authentication, authorization, and access control, app models and architectural patterns, security and encryption, syncing optimization and background syncing, and cross-app collaboration and interoperability. These areas pose both design and technical challenges, but present opportunities for innovation and improvement. While the local first ecosystem is still evolving, there are already tools and technologies available, such as Automerge, YJS, and Electric SQL, that developers can leverage to build local first apps.
In this inaugural episode, I'm speaking to Peter van Hardenberg, who helped to coin and popularize the term Local First. As the director of the Ink & Switch Research Lab, he's been on the forefront of this work for the better part of a decade. My conversation with him today starts with the basics of what Local First is and why you, an application developer, should care about it.