I feel like collaborating on code today is broken. It is too hard to get started and even after learning all the basic tools and commands there is just too much effort in making contributions as a team. Why is it so hard to give meaningful feedback on each other's code? How come the rest of the stack has evolved, when collaboration hasn't?
Kiril and I could not let go of the idea that code collaboration doesn't have to be like this – and that there must be a better way. So we started sketching and building on a new version control system to make collaborating on code easier.
We quit our jobs to work on Sturdy just over 9 months ago. In this post I want to cover what we've learned since then, where we are now, and what our vision for the future of collaborating on code looks like.
When designing what would later become Sturdy, our first goal was to create a version control that is higher level and more leveraged than existing systems. This means creating a system with actions closer to what a human might want. For example the intention to "ship the code that I just have written to production" translates into a single action, instead of a chain of low-level commands. Other examples of this would be undoing code to an earlier version, or running a colleague's code on your computer, which should also be one-click actions. In a way this is similar to how high level programming languages like Python are more expressive and powerful than C, at the cost of giving up some control.