The past few weeks I’ve been trying to better document how Muse sync works, with posts describing how our hybrid logical clock helps us build up objects from atomic attributes. While I’m sure I’ll continue to write about our strategies and lessons learned, I’ve also done some talking about the topic recently too.
Just about a month ago, I explained the basics of Muse‘s sync architecture on the Metamuse podcast. We cover durable vs ephemeral changes, our last-write-wins strategy for the CRDT, and overall strategy for sync. Listen below, or subscribe to the podcast.
And this past week, I also gave a talk at the Programming Local First workshop at ECOOP’22 in Berlin. We stay fairly broad in the podcast, but in this talk I get a bit deeper into the weeds about how our sync works, how our CRDT works, and how we integrate our new sync backend with our Swift codebase.
I’ve set the embed to start at my talk – but be sure to watch the whole thing too! There were many other speakers that day with fascinating talks about how they’re all using a local-first approach in their research and products. Peter van Hardenberg of Ink & Switch kicked off the day with motivating talk about local-first’s ideals, a local-first era vs the current cloud era, and a list of challenges at the cutting edge of research.
I was overwhelmed with the ideas from the week and all of the new wonderful people I met. My mind is filled with ideas and new ways to think of local-first software, and new strategies for building user-centric and privacy-centric software.
There’s so much I’m excited to write about from our Muse sync implementation. This local-first ideal is a powerful one, and the more detailed implementations that we can document and learn from, the better.