When I publish a mutable link to some data, I give agency to the author of that data. They are free to change the contents in the future, or even to fully remove the data. Like a verbatim copy, an immutable link would not award this agency. By granting this agency, I voluntarily cede control. The quality of my work will vary based on the future actions of another human. A web of mutable references…
My last project update was in October. Whoops. It’s not for a lack of news. In the last year Willow has grown from an idea to a fully specified family of protocols with implementations. willowprotocol.org In February Aljoscha and I launched willowprotocol.org , which we’d been working on for about eight months. After meeting in Berlin the previous summer to present Willow at p4p@offline, we came…
A peer-to-peer data protocol focused on privacy and efficiency. I'm a co-designer of Willow alongside Aljoscha Meyer . I've implemented Willow in TypeScript, and now doing the same again in Rust. Specifications can present an awful lot of information at in a small area, so I wondered if I could use my experience making comics to make it easier for readers. As such, the site is littered with…
It's been a while since my last update on Earthstar and Willow. Sorry. It's not been for lack of progress: Aljoscha and I have been working hard on specifications, on the TypeScript implementation of Willow, and on an exciting addition to this family of protocols. Capabilities Centralised systems have it easy when it comes to authority. Granting access to a server's data is like a bouncer outside…
Earthstar LAN sync Earthstar v10.2.0 can now automatically discover other Earthstar peers on a local network and sync with them over an encrypted TCP connection. This feature is enabled by the new DNS-SD implementation which I wrote about in the last update , as well as some super-annoying streaming encryption stuff I wrote which uses WebCrypto APIs. Earthstar's Peer class has a new discover…
When you're working on a lot of interrelated ideas for a long time, I think there's this natural point where, meiosis-like, that body of ideas starts to split and boundaries form around different groups of ideas. In Earthstar's case, these groups would be: Formatting rules for document paths and 'cinn25519' keypairs. A sound, multi-writer, mutable data model and replication scheme for distributed…
A change of plans Last year I shared that this year's package of developments funded by NLnet would include 'complete encryption' for Earthstar shares . This is no longer the case. I wasn't able to work out how to do this within the constraints of the Earthstar project, those being: Earthstar's need to run in browsers, Deno, and Node; Earthstar's current usage of ed25519 keypairs; and me being not…
Happy new year! I'm very happy to find myself writing a second "Earthstar January update". What's happened since November ? Earthstar v10 released The features I worked on last year were finally released in Earthstar v10. This update added attachments so that syncing videos, music, or whatever else is now possible. It added read-only shares, so that Earthstar has a more granular permission model.…
A framework for building connected applications owned and run by their users. I inherited this project from my dear friend Cinnamon , who had designed this novel, mutable, data model for eventually consistent systems. All of their design sensibility came from a place of care and kindness, something I've tried to bring into all my projects since. Eventually this data model would become the basis…
If my year was a cup, it frequently spilled over. Was the cup too small, or the contents too much? It's both: turns out I have a small head and there is a lot going on. A new child, a new war, new work, a new hobby, and a recovery. It was a big year. Here's to a less dense year ahead! A new baby in the family Our second child was born in late 2021. Going from zero children to one is obviously a…
TL;DR: Efficient sync implementation is done. I published a new generic library for range-based set reconciliation. I have finished a GUI for modifying a server’s settings. I am exploring using Earthstar servers to serve Earthstar browser apps which are stored and distributed on Earthstar shares (Earthstar). The next major version of Earthstar will be released January 2023. Last month I wrote…
There's only a few more slices of the cake that is 2022. But as the saying goes: you can't have your cake and experience linear time. It's time to start wrapping this year's project up. A quick recap of what's been done so far: A ground-up rebuild of Earthstar (this was good trust me) A new, maybe slightly too interactive Earthstar CLI A new replica server implementation with support for…
Last year the Earthstar project was awarded a grant from NLnet foundation . This grant has made an enormous difference to the Earthstar project, making it possible for me to work on this FLOSS project full-time. It's no exaggeration to say that without their support it's hard to imagine how this project would have continued. So I'm pleased to share that NLnet foundation will continue to support…
I'm deep into the development of the next major version of Earthstar, but will be travelling until the beginning of July. Until then, I'd like to leave you with an idea of how Earthstar Squirrel is shaping up. Like its namesake, Earthstar Squirrel will be small, fast, and like to store things. Much faster read/write and sign/verify Most of Earthstar's computational overhead comes from reading and…
The yellow console arrived this week. There's lots to like, and a few things I find weird. Screen The Playdate's screen is my first time seeing a Memory LCD. It displays extremely fine and crisp detail, as though it was drawn with a 0.01 mm tip pen. The way greys and half-tones can be approximated using pinstripes or half-tones has to be seen in person. When applied properly it has the same beauty…
Okay, I've probably said this at least a hundred times, but: did you know this blog is powered by Earthstar ? I write regular markdown files in a regular directory on my regular filesystem using my regular text editor. I transfer those files' contents into a local Earthstar replica. I sync that replica to this web server, which happens to be an Earthstar peer itself. And because my webserver…
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. Cinnamon 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…
After living with a terminal diagnosis for a long time — and continuing to be their wonderful self despite it — I'm sad to share that our dear friend Cinnamon died yesterday. Among many other things, Cinnamon was the creator and guiding hand of Earthstar. We became friends after I began contributing to the project, and that friendship blossomed into that rare and joyous overlapping of friendship…
This is a ground-up rebuild of Earthstar which has been in the making since last April. It brings a lot of new features, the foundations for more to come, and is about as breaking as breaking changes get. There are new features, APIs, and concepts. It's a lot to take in, so in addition to this new version of Earthstar, we've got a shiny website with explainers, API tours, technical documentation,…
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…
It's been a year and a half since I began contributing to the Earthstar project. The project's aim is to provide a toolbox for users who want to operate their own online utilities: their own personal file sync; a blog publishing system; graphical chatrooms; a bespoke social network. Earthstar sits on a relatively unexplored band of the spectrum of new web technologies: ephemerality in place of…
This morning I received a kind email from someone saying how much they'd enjoyed Peaches, a narrated comic I made nearly a decade ago. Not just that, but that it had been something they'd come back to over the years when they were feeling down. These kinds of emails make my day. It made me think back to when I'd published Peaches: I thought I'd launched a new career, a bold debut into the…
The last few days I've been putting together a Deno extension for Panic's Nova editor. v0.1 is now available for download . Motivation Deno is exciting. I love being able to start writing and running code with only a single .ts file — no tsconfig.json, no package.json, no node_modules. I like having access to basics like linting and testing without having to install and configure any new tools.…
A comic about a boy with a secret and his sister's lighthouse. It's unfinished at only fourteen pages, but I have always loved how those fourteen pages came out.