Github itself basically followed this route. They didn't built Git on top of SVN. They built a much better product (than Sourceforge) and they used network effects (particularly their free-for-OSS offer) to grow their userbase until they could start to land corporate contracts.
I don't know if they were the first git forge, but they were certainly among the first.
The specific problem is that all the competitors to Github have to use git, and that limits how different they can really be than Github and thus how aggressively they can compete to win users
Problem for whom? Users who are happy using git? Or conartist86 who is thinking about how to get money?
> the competitors to Github have to use git
Why? Syncing between various VCSes has been a thing since forever. If you can't handle a compatibility layer to support git+new-better-thing, you don't have the technical chops to build new-better-thing in the first place.
The way I think about it, if I make a backwards compatible product I might end up with users who never really wanted any change at all, and those people would be almost impossible to make happy. Those are the "faster horse" users. What I need is to find the people whose life would be changed by a car!
If you would like me to list a single concrete technical idea, I am pleased to oblige. The idea is: universal gaps. Our syntactic-semantic documents can have holes in them, places where we know some content is missing. That allows a document to behave like a template which lets us fill in the blanks. In a text-editor-based IDE there is no equivalent, which means that when I go to make a new sticky regex in Javascript I type //y and the IDE thinks I meant to comment out the rest of the line. It has no way of expressing the concept that between those two slashes something is known to be missing, which is exactly what I want to be able to tell it so that it can understand the difference between the state when I'm about to write a regex body and the state where I'm about to write a comment body
A TODO comment can't do that because the syntax conflicts. For a regex the conflict would look like `//* TODO *//`, and for a comment it would look like `// /* TODO */`. Both have an existing meaning, and in neither case is that the meaning I want.
If I could have a magic "stuff goes here" character this would be solved. I often use · to represent the idea of this magic character. That gives you /·/ and //· at least, but of course it isn't safe to assume that no language will ever assign meaning to the · character so we can't literally use it as the universal gap. To get something universal, you need to move from using a sentinel token to using embedded/encoded data.
Your syntax assertion doesn't make sense. Commented code is supported without interference in every common language I'm aware of.
> I often use · to represent the idea of this magic character
You can configure JetBrains to treat that character the same as a TODO.
(Not sure why I'm replying to what is probably AI-generated nonsense rambling, but hope that's helpful in case you're being earnest.)