Title: Hey HN, I want to share with you something I and my four colleagues have been working on for the last several years. It’s a whiteboarding and notes tool called Muse[1]. We just released a 2.0 version which includes local-first sync.<p>A little backstory: I’m one of the authors of the 2019 essay Local-first software[2]. (Past HN discussions[3][4].) The thesis is to reclaim some of the ownership over our data that we’ve lost in the transition from filesystems to cloud&#x2F;SaaS. So I’m excited to bring CRDT technology “out of the lab” and into a commercial product as a chance to prove the value of local-first in real-world usage.<p>As a developer and computing enthusiast, I care about abstract ideas like data ownership. But for most users I think the benefits of local-first will surface in how it feels to use the software day-to-day. One example is ability to work offline or in unstable network conditions: any changes between devices will be automatically merged when you reconnect to the network, no matter how long you’ve been disconnected.<p>Another area is performance. The sync backend was written by my colleague Mark McGranaghan who has written extensively about software performance[5][6] and why we think the cloud will never be fast enough to make truly responsive software.<p>A few technical details:<p>– Client-side CRDT written in Swift, streaming sync server written in Go<p>– Sync server is generic, doesn’t have any knowledge of the Muse app domain (cards, boards, ink, etc). Just shuffles data between devices<p>– Transactional, blob, and ephemeral data are all managed by this one single state system. For example ephemeral data (someone wiggling a card around) for example, isn’t even transmitted if there are no other clients listening in realtime.<p>More in this Metamuse podcast episode.[7]<p>We draw heavily on research from people like Martin Kleppmann, Peter van Hardenberg[8], and many others. A huge thank you to this wonderful research community.<p>Even if you have no interest in the Muse concept of a digital thinking workspace, I’d encourage you to try the free version just to see how local-first sync feels in practice. My opinion is that is fundamentally different from web&#x2F;cloud software is well as from classic file-based software—and an improvement on both. Would love to hear what you think.<p>[1]: <a href="https:&#x2F;&#x2F;museapp.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;museapp.com&#x2F;</a><p>[2]: <a href="https:&#x2F;&#x2F;www.inkandswitch.com&#x2F;local-first&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.inkandswitch.com&#x2F;local-first&#x2F;</a><p>[3]: <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=19804478" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=19804478</a><p>[4]: <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=21581444" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=21581444</a><p>[5]: <a href="https:&#x2F;&#x2F;www.inkandswitch.com&#x2F;slow-software&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.inkandswitch.com&#x2F;slow-software&#x2F;</a><p>[6]: <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=18506170" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=18506170</a><p>[7]: <a href="https:&#x2F;&#x2F;museapp.com&#x2F;podcast&#x2F;56-sync&#x2F;" rel="nofollow">https:&#x2F;&#x2F;museapp.com&#x2F;podcast&#x2F;56-sync&#x2F;</a><p>[8]: <a href="https:&#x2F;&#x2F;www.inkandswitch.com&#x2F;pushpin&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.inkandswitch.com&#x2F;pushpin&#x2F;</a>
Upvote: