Git has biggest moat of all software, and it is stifling innovation.
On one side it's good because everyone is using the same tool and we don't have to learn many different intricacies of other tools.
But on the other side, there's probably a better way of doing things that could dramatically simplify everything.
It was designed so long ago with such different computing and memory constraints, and the way we use repos today is very different - think monorepos.
There are so many projects trying to bandaid solutions to its scaling issues, and so many projects are using monorepos today which are not well supported.
I genuinely believe re-writing a VCS is actually a very simple task.
If you look at the core use cases, or the commands people use, they are very few.
Discussions on improving git tend to be dominated by people who not only don't grok git but don't actually grok the problems inherent with distributed code development and want it to be little more than dropbox for github. Once you filter out these people, a good chunk of the remainders are people asking for UI changes that already exist but they didn't bother to learn.
Catering to these people means attempts at this problem usually punish power users by removing useful things like staging or a distinction between commit and push.
Even outside of the distributed aspect, discussions on improving git tend to be started by people who have never felt the need to express `HEAD~10` or `origin/main...main`, and.. I just don't have much sympathy for the naivety left in me.
It would be neat to have a GUI rebase -i style "commit reorganizer" that let you visually reorder & drag commits between branches etc. But that'd just be an app calling git, and once you're experienced enough write it, you no longer really need it. So nobody does.
I'm advocating for a replacement...and why it's so difficult.
> distributed code development
Code development is no longer distributed. It's centralized in Github/Gitlab for about 99% of cases. And everyone is always connected in real-time to a central server...and also to all other contributors.
These possibilities are so far from the reality of when Git was created.
> staging or a distinction between commit and push
On one side it's good because everyone is using the same tool and we don't have to learn many different intricacies of other tools.
But on the other side, there's probably a better way of doing things that could dramatically simplify everything.
It was designed so long ago with such different computing and memory constraints, and the way we use repos today is very different - think monorepos.
There are so many projects trying to bandaid solutions to its scaling issues, and so many projects are using monorepos today which are not well supported.
I genuinely believe re-writing a VCS is actually a very simple task.
If you look at the core use cases, or the commands people use, they are very few.