Local-First Software

How does PowerSync fit in to the local-first software movement?

What is local-first software?

The vision of local-first

Local-first software is a term coined by the research lab Ink & Switch in its 2019 manifesto essay.

Ink & Switch's rationale for local-first is to get the best of both worlds of stand-alone desktop apps (so-called “old-fashioned” software) and cloud software:

“We would like both the convenient cross-device access and real-time collaboration provided by cloud apps, and also the personal ownership of your own data embodied by ‘old-fashioned’ software”.

The manifesto proceeds to defines local-first as software that:

“prioritizes the use of local storage (the disk built into your computer) and local networks (such as your home WiFi) over servers in remote data centers”.

It also puts emphasis on the primacy of the local copy of data:

“In local-first applications [...] we treat the copy of the data on your local device [...] as the primary copy. Servers still exist, but they hold secondary copies of your data in order to assist with access from multiple devices.”

Expanding on this, the manifesto identifies 7 ideals “to strive for in local-first software”, which we will explore further below.

Much more theoretical research is still needed to practically build software that conforms to all of the ideals of local-first software as envisioned by Ink & Switch, since it will need a fully decentralized architecture and needs many complex requirements to be addressed (see here for more details). In the meantime, the manifesto essay does provide practical guidance on things that developers can do to bring their software closer to the ideals.

Local-first in practice today

Most implementations that are referred to as "local-first" today conform to only a subset of the local-first ideals envisioned by Ink & Switch. We argue that a practical definition of most local-first implementations today is the following:

Local-first implementation today generally refers to apps that work with a local client database which syncs automatically with a backend database in the background. All reads and writes go to the local database first.

This kind of architecture already enables large benefits for both end-users (speed, network resilience, real-time collaboration, offline usage) as well for developers (reduced backend complexity, simplified state management, etc.). Refer to References for more on this.

Does PowerSync allow building local-first software?

High-level concepts

Here's how building software with PowerSync as its sync engine stacks up in terms of the high-level definitions of local-first software mentioned above:

The 7 ideals of local-first

Here's how applications built using PowerSync can be brought closer to the 7 ideals of local-first in the Ink & Switch manifesto essay:

References

Last updated