Show HN: Sturdy – online-first version control focused on collaboration
nonameiguess 2021-08-19 16:17:40 +0000 UTC [ - ]
Honestly, I feel with something like this, it'd be nice if you created some sort of "lib{NAME}" with functionality to synchronize some subset of versioned, diffable files between directories, that may or may not be on the same host. The primary motivation would be to build your own service on top of that library, but then other people could build different services on top of it to suit their own needs. Sort of how there is such a rich variety of alternative package managers for Arch Linux because all of the core pacman functionality is encapsulated in libalpm.
gentleman11 2021-08-19 13:42:37 +0000 UTC [ - ]
Today is the day that I read “we feel that x today is broken” one too many times and just scrolled past. It has now become startup marketing speak. On reflection, I thought it might be helpful to mention. This has no bearing at all on the quality of the startup or their product, just a note about the wording being over used
codingdave 2021-08-19 10:42:56 +0000 UTC [ - ]
For those who thought pair programming wasn't invasive enough?
I'm sure there are people and teams for whom this will work. But it sounds like a nightmare to me. Especially when learning something new, working through a tough problem, or simply having an off day, the last thing I want is to know my team is looking over my shoulder at everything I am doing.
videlov 2021-08-19 11:40:37 +0000 UTC [ - ]
Our goal is to normalize sharing of code that looks draft-y, before any emotions have been invested in the work. We want to change the entire vibe of working together on code. Instead of feeling like submitting homework (Pull Requests), we go for a Figma/Google Docs style of working together. You could sketch on something in a corner (we call them workspaces) and only seek feedback if/when it makes sense.
When coding doesn’t feel like homework, figuring stuff also feels less intimidating IMO. For example yesterday I was making a function more testable by injecting a function as an argument. Gustav spotted that and he knew that there was an interface that could be injected instead. With one operation he got a copy of my code and typed an alternative on his computer. That code shows up as suggestions for me that I could take with one click.
solarkraft 2021-08-19 15:39:05 +0000 UTC [ - ]
Git should be challenged. I can’t imagine that’s the best we can do. What will ultimately determine this project’s viability for larger projects is whether it’s really as powerful.
I’m definitely excited for new VCS solutions as I think the current state is a bit less than optimal.
Edit: Uhm, where’s the code? How do I self host?
zegl 2021-08-19 16:49:51 +0000 UTC [ - ]
My favourite take on the attitude the community has towards Git was posted by rossdavidh [1] in the "Git is too hard" thread:
> "Git is the bad boyfriend of the developer community. If anything bad happens it was your fault. If you ask it to do something and it does something else, it was your fault, and also you are stupid."
There must be a better way to do things, and we've made it our mission to find it.
We're not open-source yet. If you're interested in self hosting, reach out to me at gustav@getsturdy.com and we'll make it happen!
slackstation 2021-08-19 07:34:28 +0000 UTC [ - ]
There are other faster, free, high quality options for pair programming.
The features of one click deploys and rollbacks tie the deployment system to your proprietary closed-source service.
Retraining a team away from PR and Merge Requests would take time for something that doesn't seem to offer much in the way of new benefits.
Do I have to log into a website to create / switch branches? How do checkout code? Do I download a zip from a website and then click a sync button on my IDE? Am I forced to use VSCode for integration or can I use VIM/EMacs?
videlov 2021-08-19 08:09:40 +0000 UTC [ - ]
The equivalent of switching branches and checking out different code all happen in the webapp. On your computer you get a two-way-synced "magic directory" where you code with your existing tools/IDE/editor of choice. This means that if you wish to checkout someone else's work, a click in the webapp would instantly swap the content of your project dir.
this_was_posted 2021-08-19 13:02:09 +0000 UTC [ - ]
city41 2021-08-19 13:11:27 +0000 UTC [ - ]
zegl 2021-08-19 13:20:41 +0000 UTC [ - ]
What you can't do, at least today, is to jump between different workspaces, or prepare multiple different workspaces to be shared once you're back online.
I was on a 3 hour train ride just last week, with only intermittent connectivity available. Sturdy being online-first did not disrupt me nearly as much as than trying to hunt for documentation for the dependency that I was debugging.
wobblytable 2021-08-19 10:34:00 +0000 UTC [ - ]
That said, I'm curious about 2 things. First, git.live are tackling the same problem but _on top of_ git: do you think that there's going to be a bigger challenge for you because you're changing process _and_ technology, or do you think the fact that it's built from the ground up will make it easier (especially given how painful git can be)? I could see my own team being open to something like git.live (new process), but very skeptical about Sturdy (new technology). I'm curious how you intend to tackle that skepticism from developers.
Secondly, the homepage doesn't mention the fact that you _can_ integrate back into GitHub to support existing CI/CD integrations. That is something very important to me, and I didn't realise it was possible until looking at the help docs for GitHub migration[1]. Can you talk more about your vision for Continuous Integration with Sturdy? I've just noticed that it's mentioned as coming soon in the "Solutions" drop-down.
I'm going to give Sturdy a shot (using the GitHub integration to benefit from existing CI/CD) but a long term switch would be heavily dependent upon your vision for CI/CD! I come from a world where 10+ min test runs are acceptable, and so the slow turnaround of the Pull Request model (from write code to review) is necessary -- I'd love to hear how you think this can be done in (near) realtime.
Thanks,
zegl 2021-08-19 11:10:58 +0000 UTC [ - ]
As you saw, we are compatible with Git, and even support using both Sturdy and GitHub at the same time. Which we're hoping moves us close to only providing a new process for the sceptics, while you incrementally can use more and more of the new technology.
Developers are right to be sceptic, we're tackling this by staying open, both with the development process behind the scenes, and making Sturdy easy to test out and migrate to and away from.
Great that you spotted the GitHub integration, we should really highlight it more! For CI/CD, except for supporting it natively, we're also exploring automatically executing tests and linters at set intervals, or when new changes are detected. So that the test results are as up-to-date as possible, and that every time you come back from a meeting or a short break, that you would have new results available.
1: https://getsturdy.com/blog/2021-08-18-unbreaking-code-collab...
toovs 2021-08-19 14:16:12 +0000 UTC [ - ]
kevsim 2021-08-18 17:09:58 +0000 UTC [ - ]
zegl 2021-08-18 17:22:27 +0000 UTC [ - ]
I believe that webhooks and great public APIs are important to have in all dev-tools products. I have created countless scripts and tools to connect many different pieces of my workflow, so I'm excited to see what others will build once we release our public API!
tasn 2021-08-19 01:00:23 +0000 UTC [ - ]
Disclaimer: founder. :)
timpez 2021-08-18 14:17:38 +0000 UTC [ - ]
zegl 2021-08-18 15:46:27 +0000 UTC [ - ]
And of course, at Sturdy we've been using Sturdy to build Sturdy since day 1.
raman162 2021-08-19 10:05:50 +0000 UTC [ - ]
As a budding git enthusiast, I have a few questions. How are things like merge conflicts handled? Does sturdy support rebasing or some equivalent? Is there an equivalent to hooks?
I sometimes deplug when I want to get in the flow, how well does sturdy perform offline (no internet connection)?
zegl 2021-08-19 10:25:35 +0000 UTC [ - ]
There is no hooks, in what use case are you using hooks today? I haven’t been using hooks before, so it would be great if you wanted to share your experience of how you’ve been using them.
Sturdy works fine when offline, and resumes the syncing when the connection is restored. The actions that are driven from the site, such as creating a new workspace, are not available when offline however. A full copy of the code is always fully downloaded to the workstation, so that you always can code away!
bstpierre 2021-08-19 10:52:04 +0000 UTC [ - ]
Is this a full copy of just the current code or full history like git? I often use info from old commits or git blame to understand why a piece of code is written a certain way.
Regarding hooks: my team uses hooks to start ci. GitHub bots are built on top of hooks. I think a lot of people would consider it an essential feature.
zegl 2021-08-19 11:16:29 +0000 UTC [ - ]
Yes, we're going to support webhooks and also on integrating directly with CI/CD-providers. Today it's possible to use Sturdy and GitHub side-by-side, with changes on Sturdy being mirrored to GitHub. So you can use GitHub as kind of a proxy, with the added benefit that you don't have to migrate the webhook configurations to use Sturdy.
In my previous reply I though you made a reference to Git Hooks [1], which I interpreted as a different need. My bad!
zegl 2021-08-18 14:11:16 +0000 UTC [ - ]
My name is Gustav (zegl) and together with Kiril (videlov) we are the founders of Sturdy (YC W21). We are building an online-first version control focused on collaboration. You can think of it as asynchronous pair programming. It still allows parallel work tracks but because Sturdy is centralized and cloud based, it can offer some cool real-time insights.
We felt that collaborating on code today is broken. It is difficult to get started and even after learning all the tools and commands, contributing effectively in a team takes too much effort. This got us sketching and building.
Sturdy is very opinionated around early and continuous feedback. Here are the core principles we have built our VCS around:
* Higher level and more leveraged than existing systems (eg. Git). The actions devs perform are closer to what a human might want. Like “ship this code to production” or “undo the things I did a few moments ago”. In a way this is similar to how high level languages like Python are more expressive than C, at the cost of giving up some control.
* Focused on close collaboration. We are doing away with sharing batches of code (Pull / Merge Requests) in favour of continuous feedback. Developers can see each other’s work-in-progress code in real-time. Trying/running each other’s code is a one-click action and so is making code suggestions or comments.
* Compatible. Despite being a cloud service, developers can still use their local text editor / IDE. We do this with two-way-synced directories on the workstations. Writing and debugging code is local while management and collaboration are done in the webapp. We have also built a Git compatibility layer allowing exporting & importing.
We just finished writing a post telling the story of the mistakes, learnings and vision of our journey https://getsturdy.com/blog/2021-08-18-unbreaking-code-collab.... It turns out that building a new VCS is not just technically difficult but challenging Git also raises a lot of eyebrows (eg. https://news.ycombinator.com/item?id=25121416 ). What do you think? How can we make team VCS better?
You can try out Sturdy today for free, we would love to hear what you think. Moving forward we plan to offer Sturdy as a SaaS with a free tier for smaller teams, and a paid tier for larger organisations and codebases.
We would love to read any feedback you might have in the comments!