Gwil's garden

Enjoying the morning.

Earthstar January update

January 27th, 2022

It's a cold dark January evening here, and I'm writing this while seated next to my (happily snoozing) two month old. I'm happy to report that it's been a good month, with lots of progress to report. I hope the rest of the year is like this, just with better weather.

A reworked Earthstar approaches

Last April, Cinnamon began working on a total reworking of Earthstar, incorporating all the lessons we'd learnt since Earthstar's original release. Setting the stage for things we just couldn't do with v1. At this point we're getting very close to it being ready to replace Earthstar v1.

The final piece is a new protocol-agnostic sync which will let people sync over HTTP, Websockets, BroadcastChannel — and lots more. Cinnamon has been hard at work on a new RPC library which supports all these transports, as well as (soon) streaming requests. I'm now beginning to integrate this work into Earthstar itself with a nice syncing API ('natch). Earthstar v2 will have a few other interesting synchronising capabilities, such as the 'salted handshake', a way for two peers to discover which shares they have in common without revealing what those shares' addresses are.

As we prepare for public release, we've also landed a huge number of documentation annotations in the codebase via JSDoc. This makes it easy for us to bring top-notch documentation to wherever users are, be it in the command line, IDE, or online.

Another big change this month was switching to using Deno as our primary development runtime. For us this means faster tests, a simpler development environment, and an easier time distributing a single codebase across the browser, Deno, and Node. This didn't require many changes to Earthstar's code itself, but it was a big diff nonetheless (-3303 lines of code though, not bad!).

We also merged PRs for a new IndexedDB storage driver; faster cryptographic signing and verification with noble/ed25519; and are close to merging a new storage driver for Sqlite.

And last but not least, a warm welcome to a new contributor who came out of the blue! tlowrimore contributed a great glob and template querying feature that had been sorely missing from v2. Welcome!!!


I'm nearly done building a new website for Earthstar. Even though having a website is table stakes, it always ends up being way more work than you'd expect.

A screen capture of a website, showing a guide on how to use an API.

Besides the basics, it's got a developer tour to introduce Earthstar's API, a complete data specification, a general 'how it works' primer, and a few little extras. Naturally it's stuffed to the gills with diagrams and illustrations. If you consider yourself something of a library website connossieur I'd love to hear your feedback on it before it goes online — contact me by email, on our Discord or on SSB for a link.

It's going to be very nice to have a single resource to point people towards. I hope you'll enjoy it, bookmark it, and refresh it every single day.

Presentation at FOSDEM 2022

FOSDEM (Open Source Developers’ European Meeting — let's assume the F stands for 'free') is a yearly event promoting the widespread use of free and open software.

This year it's an online event taking place on February 5th and 6th, and — and! — I'll be presenting a 20 minute talk on Earthstar. Details here. It's actually a recording, but I'll try to wear the same clothes at the subsequent live Q&A so it looks like it's all really happening at the same time.

Me looking cynically at a bit of hyperloop concept art

I'll be taking the opportunity to dunk on 'web3' and it's inaccessibility to most people by way of also dunking on hyperloops — it's a twofer! What I think we need is more people-powered technologies — like bicycles — and I make the case that Earthstar fits this role neatly. With a lot of illustrations (when all you have is a hammer...)

There will be plenty of friends of Earthstar presenting at FOSDEM too, like Agregore (a browser for the decentralised web), Āhau (Māori Identity & Data Sovereignty), and Hyper Hyper Space. So keep that weekend free!

That's all for this time. See you on the internet!