Earthstar March update
Published on March 28, 2022 by Sam Gwilym
A lot has changed since my last update in January, much of it bad. Russia's invasion of Ukraine, where much of my family lives, has made it hard to focus. And last week I received some news which I'd hoped against hope I'd never have to hear.
Regretfully the most important news I have to share is that Cinnamon, Earthstar's creator, died last week. Cinnamon was the guiding light of the Earthstar project, and it is a huge loss to the project and the decentralised space at large that we've lost such a gentle, thoughtful, disciplined soul. I've written more on my feelings regarding Cinnamon's passing here.
My work on Earthstar will continue, and I will be doing my utmost to keep Earthstar on the path Cinnamon envisioned for it: a simple, versatile, and empowering technology. Cinnamon's vision for Earthstar will endure for a long time to come.
Last month we released the culmination of a year's coordinated work in the form of Earthstar v7.0.0 "Stone Soup". This is a big release which lays the groundwork for much of our work to come, and has many new exciting features, such as a new Peer API, protocol-agnostic syncing, faster cryptographic operations, a cache abstraction, and Deno support. You can read all about the changes in my release post here.
Since then, I've been doing a lot of post-launch care, fixing small bugs and improving performance. One particular driver for these improvements was being able to use Earthstar in dynamically rendered UIs.
If you can write React, you can now write a decentralised app for you and your friends.
react-earthstar is a compact integration library for using Earthstar with the ubiquitous React UI library. Its main responsibility is telling React when to re-render the UI for new updates from Earthstar (e.g. a new chat message arriving from another peer).
Previous versions of react-earthstar had very react-specific APIs which meant users had to learn two APIs: Earthstar's, and react-earthstar's. In v3, most of these APIs have been shed in favour of using Earthstar's native APIs (with a little magic sprinkled in). This means developers only need to learn one API to get up and running. Docs can be found here.
These new APIs are also far more performant thanks to Earthstar's new ReplicaCache abstraction. The effect is that React components will only re-render for updates to document queries they have expressed interest in.
This new version of react-earthstar was informed by the development of a new set of Earthstar tools, starting with a long-form discussion app. If you'd like to find out more this app and try it for yourself, please join our Discord for an invitation.
Milestone 2 - Collaborative online publishing
After this tumultuous beginning to the year, I'm finally ready to begin working on the second milestone of the NLnet grant. This milestone is focused on getting some useful, fun tools into users' hands, and includes:
- A new Earthstar CLI tool for managing identities and synchronising shares to disk.
- A new replica driver which synchronises with the filesystem, offering a completely new way to interact with data stored on Earthstar shares.
- A new form of replica server able to serve an Earthstar share's documents. Synchronise images, webpages, and music and then expose them to the world via HTTP
And that's it for this month's update. It's the end of an era, and the beginning of a new one. I'll be doing my best to make sure it's one Cinnamon would be proud of.
See you on the internet!