The Local-First Software Movement is a philosophy and approach to software development that strongly emphasizes prioritizing user control and ownership of their data. Unlike traditional cloud-based or centralized applications, which store data on remote servers, local-first software primarily operates on users' devices and ensures that data remains under their direct control. This movement seeks to empower users by providing them with the benefits of collaboration and connectivity while preserving privacy, security, and data autonomy. It challenges the dominant paradigm of centralization in the digital world and aims to redefine how software applications interact with and safeguard user data.

Personal data ownership is more important now than ever. Companies train their AI models on user data without compensating users or offering clear ways to opt-out. Platforms change leadership and direction, leaving users scrambling for ways to liberate their content from walled gardens. Centralized services are a target for bad actors.

Today, we'll dive into the history of the LoFi movement, notable local-first projects, and how to get started.

The Early Days of Computing and Data Localization

In the early days of computing, data was all stored locally. It was always physically stored on a floppy disc, a flash drive, the computer's disk drive, or even punch cards and magnetic tapes. Computers relied mainly on physical connections. There was a risk of data loss if the hard drive failed, limited accessibility due to the data being tied to a physical location, and version control issues, as users couldn't edit files simultaneously and had to rely on naming conventions to keep track of changes.

Then, with the emergence of the Internet and advancements in networking technologies, users could connect with other users across geographical distances and exchange information securely and reliably. The rise of personal computers and the introduction of the World Wide Web in the '90s allowed users to access and share data globally via servers and browsers.

Then, in the '00s, we saw a major shift to cloud computing. The big three were (and remain) Amazon Web Services (AWS), Microsoft Azure, and Google Cloud Platform. These service providers offer on-demand computing and storage resources at scale. Major companies embraced the cloud to reduce costs. It eliminated the need to build and maintain large on-premises data centers. There were also competitive advantages, such as speedier deployment of new applications.

The Rise of Cloud Computing and Centralized Services

The shift to cloud computing has a profound impact on software development. One of the big benefits is optimal resource utilization. Developers can scale up or down their resource needs depending on demand. This is also reflected in the pay-as-you-go model, which allows developers to pay for a tier or plan that best fits their needs.

Cloud providers offer various managed services, including databases, analytics tools, machine learning, and AI, allowing companies to build innovative features and applications without starting from scratch.

They also offer APIs for effortless integration and redundancies that ensure high data availability.

But with these benefits also come drawbacks. For example, data privacy is one of the biggest concerns users express. When storing data with a centralized provider, users have limited control over how it is handled, accessed, and even shared. As the saying goes, "There is no cloud. It's just someone else's computer."

This can be easy to forget until a data breach or security vulnerability exists.

Centralized storage creates a single point of failure, which is attractive to bad actors. If it is compromised, the results could be widespread and disastrous.  

Vendor lock-in is another drawback. Once a company is so intertwined with a cloud platform's services, it can be time-consuming and challenging to make a change.

Cloud services are dependent on Internet connectivity. If there is an Internet outage, and the company is almost entirely cloud-based, business essentially ceases. This can lead to a loss of revenue and unhappy customers.

There are also additional costs that developers and companies need to be mindful of. For example, while pricing tiers can be a straightforward way to select a plan that suits the budget, going over the allotted storage can be pricy. The same goes for data transfer costs.

There are also legal considerations. Businesses must take additional security precautions to stay compliant when dealing with sensitive data, like healthcare and financial data. For example, access must be carefully monitored and data encrypted.

The Local-First Software Movement Takes Root

As a result of these growing concerns, some developers and users have shifted to a local-first approach. Local-first combines the convenience of cloud apps, including real-time collaboration and the ability to work on multiple devices, with the prioritization of local data storage and networks.

Local-first also shifts a key paradigm of version authority. With the cloud the file stored in the cloud is the primary copy. Any edits made offline don't matter until they are synced. With local-first, the local copy is the primary copy.

In the seminal paper, Local-First Software: You Own Your Data, In Spite of the Cloud, by Martin Kleppmann, Peter van Hardenberg, Adam Wiggins, and Mark McGranaghan, the authors lay out seven ideals for local-first software.

  1. No Spinners: Your Work at Your Fingertips - Instantaneous modifications to files, not burdened by the speed of light!
  2. Your Work Is Not Trapped On One Device - Users should be able to work on their computer, phone, and tablet.
  3. The Network is Optional - Even without Internet connectivity, users should be able to do work and sync their changes later when connectivity is restored.
  4. Seamless Collaboration with Your Colleagues - Cloud apps allow users to edit the same document, so should local-first apps.
  5. The Long Now - Users should be able to access their data long after the company that created the app is gone
  6. Security and Privacy by Default - End-to-end encryption protects sensitive data, whereas cloud services may not meet confidentiality requirements and offer an attractive target for bad actors.
  7. You Retain Ultimate Ownership and Control - A centralized service can lock users out of their data, but users always retain ownership with local-first apps.

Notable Local-First Software Projects and Initiatives

Several exciting projects have popped up recently in the local-first software space. Skiff, for example, is a privacy-first end-to-end encrypted workspace. Offering apps such as Skiff Drive, Skiff Docs, Skiff Calendar, and Skiff Mail, they provide a decentralized alternative to cloud-based collaboration tools. DXOS is an application framework, development platform, and toolchain that enables developers to build local-first, multiplayer applications. Fission's WNFS is a distributed file system that stores public and private data on IPFS while keeping it encrypted and controlling access via UCANs. More examples of local-first applications exist and are on their way, and there has never been more interest in the movement.

How Users Can Embrace Local-First Software

Users, developers, and businesses should all consider whether adopting local-first software solutions is the right fit for them. First, evaluate your data needs and sharing requirements. Do you need to store confidential information? How does the local-first tool handle encryption and access?

Local-first software builders should provide offline functionality and design with user control in mind. It should always be clear to users how to manage their data. There should also be data export and import features, with data in an interoperable format, so users can have a credible exit.

If you're interested in learning more about local-first software and you'll be in St. Louis on September 23rd, 2023, we invite you to join us for a LoFi Unconference! Sponsored by Fission, Ink & Switch, and DXOS, the LoFi Unconference will bring attendees in small discussion groups to:

  • Share best practices, help each other with the challenges we’re facing, and to figure out where we’re going in the future;
  • ​Get to know the people behind the core technologies for local-first software, such as CRDTs, client-side databases, and cryptographic security for local-first protocols;
  • ​Give you a chance to demo the software you’re working on or to give a lightning talk on a topic you want to share with the community.

The event is sold out, but we have a waitlist. Please email events@fission.codes if you want to be notified if and when more spaces open up.

And as always, we are happy to answer your LoFi questions in the Fission Discord.