How to Contribute to Local-First Software
The vision of local-first software is not just a theoretical ideal; it is a practical goal that requires the collective effort of developers, researchers, and practitioners. If you believe in the importance of data ownership and seamless collaboration, here are some ways you can contribute to the realization of local-first software.
For Developers
As a software engineer, you have the power to influence the tools and applications that shape our digital landscape. Here are some actionable steps you can take:
Ideal | Key Strategy |
---|---|
Fast | Aggressive caching and resource preloading |
Multi-device | Syncing infrastructure like Firebase |
Offline | Progressive Web Apps (PWA) |
Collaboration | CRDTs or Operational Transformation (OT) |
Longevity | Export to standard formats like JSON or PDF |
Privacy | End-to-end encryption (E2EE) |
User Control | Easy backup for user data |
- Fast: Implement aggressive caching and resource preloading to prevent users from seeing spinners when opening your app or previously accessed documents. Trust the local cache by default instead of waiting for network fetches.
- Multi-device: Utilize syncing infrastructure like Firebase, iCloud, or self-hosted alternatives like Realm Object Server to support multi-device access. Each option presents a trade-off between ease of implementation, longevity, and privacy concerns.
- Offline: Design your applications to function seamlessly without an internet connection. Implement features that allow users to continue working offline and sync changes once they are back online. For web applications, leverage Progressive Web Apps’ features like Service Workers and app manifests. For mobile apps, be aware of WebKit frames and other network-dependent components, and test your app’s offline capabilities using tools like the Chrome Dev Tools network condition simulator or the iOS network link conditioner.
- Collaboration: Explore existing technologies for real-time collaboration, such as CRDTs or Operational Transformation (OT), as implemented in ShareDB. These can help you build applications that support multiple users working together without conflicts.
- Longevity: Ensure that your software can easily export to flattened, standard formats like JSON or PDF. Implement features like mass export (e.g., Google Takeout), continuous backup into stable file formats (e.g., GoodNotes), and JSON download of documents (e.g., Trello).
- Privacy: Clearly communicate to users when their data is stored only on their device versus being transmitted to a backend. This is particularly important for mobile or desktop applications, where users expect more control over their data.
- User Control: Provide users with the ability to easily back up, duplicate, or delete their documents within your application. This may involve re-implementing basic filesystem operations, as seen in Google Docs with Google Drive.
For Researchers
If you are involved in academic research, your work can significantly impact the development of local-first software. Here are some areas to focus on:
-
Distributed Systems: Investigate new algorithms and models that enhance the performance and usability of CRDTs and other distributed data structures. Explore how these technologies can be applied in real-world applications.
-
Human-Computer Interaction (HCI): Study how users interact with decentralized systems. Develop user interfaces that effectively communicate the state of data and collaboration, helping users understand their roles in a local-first environment.
-
Data Management: Research methods for managing version histories and conflicts in collaborative settings. Explore how branching and merging concepts from version control systems can be adapted for local-first applications.
For Practitioners
As a product manager, designer, or independent developer, you can help bridge the gap between theory and practice. Here are some strategies to consider:
-
Incremental Improvements: Assess your current applications against the local-first ideals. Identify areas for improvement and implement changes gradually to enhance user experience.
-
Community Engagement: Participate in discussions and forums focused on local-first software. Share your experiences, challenges, and successes with others in the community to foster collaboration and innovation.
-
Support Open Source Projects: Contribute to or support open-source projects that align with local-first principles. Your involvement can help accelerate the development of tools and technologies that empower users.
Call for Startups
If you are an entrepreneur, consider the market opportunity for local-first software. There is a growing demand for applications that prioritize user ownership and privacy. By developing solutions that embody these principles, you can create a significant impact in the software landscape.
Conclusion
By taking these steps, you can help shape the future of software to be more user-centric, collaborative, and respectful of data ownership. Together, we can realize the vision of local-first software and empower users to take control of their digital lives.