Introducing ebb
Why I stopped building a notes app and created a framework for building real-time, collaborative, offline-capable applications instead.
π Hey friends,
A common trap we all fall into from time to time is working on our tools rather than with our tools.
We research new gadgets, gizmos, implements and instruments β all under the assumption that, "if I just bought this, I'd spend more time doing that." And if you're cursed with the skills to make your own tools, it gets worse.
That seductive push to buy becomes an opportunity to build. Suddenly, you stop writing because you're too busy working on a custom notes app that will make it "so much easier" to write your 1,000 word blog posts.
*Sigh*
Obviously, I'm speaking from experience. This is exactly what happened to me over my paternity leave. I got caught in the trap.
I spent months working on a document editor that syncs across devices, enables collaborative editing and commenting, and works offline. And what do I have to show for all the time spent productively procrastinating?
Experience. Because experience is what you get when you didn't get what you wanted.
Turns out, there's a reason essentially every other writing app chooses between working offline and working collaboratively. Providing both is one of the most complicated problems in distributed systems design.
It requires completely rethinking the traditional client-server application architecture, turning your database inside out, and dealing with concurrency and conflicts.
And after watching masters level lectures on CRDTs, Merkel trees, broadcast protocols and Lamport Clocks, and frankenstening every existing tool and library together just to start working on the UI of this app, I felt there needed to be a better way.
So, instead of unintentionally falling for the trap of working on my tools, I deliberately decided to build one.
Ebb is a framework for building real-time, collaborative, offline-capable appsβthe types of apps I want to see more of in the world.
It's a complete rewrite of the architecture I was building for my notes app, but abstracted to help developers focus more on features instead of infrastructure. I'm rebuilding it in public and documenting the decisions and learnings along the way in a "devlog".
The first article is already up, and if you're interested in reading about database consistency models, check it out π.
Until next time,
Drew