Simple & efficient code collaboration
Tags: git, productivity, devops, opensource
Published: 2022-03-09 17:45:50

There is this big debate out in the dev community about collaborating on code —

> Code reviews vs. Pair programming

Surely though, there must be more alternatives. For the longest time, I have been wondering how a code collaboration tool, specifically designed for teams at work could look like.

This is what prompted me to build an alternative. I would love to hear what you think!

[Sturdy](https://getsturdy.com/) is a low overhead code collaboration platform for fast moving teams. It is, of course, [open-source](https://github.com/sturdy-dev/sturdy). Here are the key ideas —

* 👨‍💻 High-level operations around developer intent
* 🙌 Enable early & fast feedback on code
* 🔌 Compatible with Git and GitHub

It is specifically built for collaborating on code at work, and aims to remove most of the overhead associated with contributing code in a team setting.

## 🙋 Why build a new platform?

I think it's fair to say that the way we code at work is not the same as open-source. The biggest difference is in how closely developers collaborate with one another — at work, we do standups, plan together, and share knowledge. 

On top of that...
> Waiting for code reviews sucks!
 
For developers adopting DevOps and Continuous Delivery, shipping small, incremental changes is crucial. At the same time, the default pull request workflow has a fixed overhead per contribution — pulling code, creating a branch, staging, committing, pushing etc., not to mention getting a review! This is very pronounced when trying to integrate your code multiple times per day.

## 🧑‍💻 How is Sturdy different from code reviews?

With Sturdy, you work in the open within your team. This means you can discover and interact with draft code in your team as it is written. Those team drafts are a bit like live pull requests (think Figma or Google Docs, but using your local editor).

You can easily get a copy of someone else's draft code to your computer, explore it in your IDE and edit the code to automatically create suggestions.

>But why? 

This enables early, proactive feedback. It means you can help each other in a meaningful way, communicate better, and when everything goes well, your code is pre-reviewed.
Contributing code should not feel like submitting homework!

## 💁 Sounds a lot like pair programming. How is Sturdy different?

Pair programming is great for knowledge sharing and moving fast, but the tradeoff is flexibility — you have to be there in the moment.

Some developers describe Sturdy as — 
>asynchronous pair programming

This is because, similar to pairing, everybody in the team can see, try, and give suggestions to draft code. The key difference is that feedback exchange can happen whenever it suits individuals, and doesn't require you to be in a call.

## 🤷 Is this compatible with my existing setup?

Yes! Sturdy uses Git as a database but not as a protocol. This means preserving compatibility of the output, while gaining flexibility to design new ways of interacting with code. 

It also has a GitHub bridge integration, which allows you to use it side by side with your existing setup, CI/CD and other integrations.

## 💻 Can I try it by myself, without involving my team?

Yes, absolutely! Your own workflow will be faster for it. It's not necessary for an entire team to adopt Sturdy to benefit from a more leveraged VCS experience. 

With the GitHub bridge set up, by default, Sturdy follows changes on the default (main) branch and allows you to quickly create pull requests.

## 🐣 Can I try it? How about getting involved?

For sure! You can try the [cloud hosted Sturdy](https://getsturdy.com/) **or** run your own instance with this Docker one-liner:

```
docker run --interactive \
    --pull always \
    --publish 30080:80 \
    --volume "$HOME/.sturdydata:/var/data" \
    getsturdy/server
```
If you choose to host yourself, be sure to check out [the docs](https://getsturdy.com/docs/self-hosted).

Sturdy is [open-source](https://github.com/sturdy-dev/sturdy) and we love receiving feedback, bug reports, issues, and even code. The project uses some cool tech - `Go`, `Vue 3`, `GraphQL`, be sure to check out the code :). While you are there, consider giving it a star ⭐️, it would make my day 🙏!

Thanks! I will be happy to answer any questions in the comments. 

— Kiril