its a common misconception even among pro coders that open source is permission to contribute to source code.
It is not, even under GPL.
Open source is permission to use and modify a copy of the source code, to the extend the license allows it. Open source is not an “open door” policy.
Just because I allow you to change a copy of my source code, does not mean I allow you to change my source code.
To gain permission to contribute wont just require to satisfy the license but also to abide but a set of rules, ideologies and workflows established by the main maintainer of the project , aka BDFL (Benevolent Dictator For Life). Blender has Ton, pretty much any other open source project has at least one which is usually the original author of the code. You wont have to go far, just take a look how long it took Blender to make left click the default one. Blender has it own workflow of contribution aka code review system like pretty much any other open or closed source project out there. It’s there to make sure code is establishing a level of harmony and common direction. Without it, it would have been pure chaos.
And if you think that you stand much better chance of your code contribution request being accepted by going for much smaller projects , think again. Even tiny projects reject contributions. Almost daily. I have done so as well and the pull request was actually a pretty good idea and well written code. I just did not have the time to fully review it and decide if I really need it or willing to maintain it. Because as soon as you accept code, that code has to be maintained and that is a lot of extra work.
There is a reason why Git is the de facto version control system for code. There is a reason why GitHub has been the driving force of Git’s popularity and a reason why almost every open source project has a presence on Github. Git makes it easy essentially to have thousands upon thousands of forks. Forking is the very essence of git , every local copy of the code, even the one you download to build, for Git is a fork. Because Git is all about hardcore decentralization. There is a reason we call it “pull request” , its a request , not a contribution. It becomes a contribution only if it gets accepted and in order to accomplish that its an uphill battle most of the time. The bigger the code the harder it is. Even when your original idea has been accepted and well received.
If there is one thing humans always agree one, is that they disagree. It takes just a small disagreement to create a fork, a minor change to the code to make life a bit easier or to change things more to the personal taste a coder/user. It’s very easy for the coder not to have to seek permission for every change he makes to the code. It saves time, it boost productivity. Hence why forking is preferable to contribution for coders.
Git is the central workflow of Blender , even git branches are a form of mini-forks and this is the standard way for working on major code changes in Blender. Every Blender major feature you have seen started as a Blender branch.
Now you may say “wait , wait a second not every fork makes it to the main release”. Well… I have bad news for you , not every branch makes it to the main release either. Some get delayed for up to years, others are plainly rejected for some reason even if they have already started with some sort of approval. Popular example is GSOC projects.
Essentially what you like is impractical because a) Blender is a huge project so disagreements are inevitable b) because Blender is such a big project it had to establish strict contribution guidelines that leads to even bigger disagreements c) Blender official development workflow not only depends to fork orientated version control system but its entire workflow is essentially fork orientated. We have after all like a gazillion ways to build blender d) Is way more productive to work on a fork that directly contribute e) way more fun too f) if all fails you wont need to apologize.
In an ideal world we would have one Blender to rule them all but even the all mighty Saron had to make multiple rings to accomplish that
Life itself evolves by “forking”. What chance code has to resist the natural law of evolution ?
Mind you I am not saying that not having forks is a good thing for Blender. Quite the opposite, the lack of Blender forks is plain demonstration how easy it is to do major changes to Blender source code. The massive distance between the ability to read code and the ability to understand it.
The only major argument against forks is the problem of fragmentation , but that is very easy to avoid with establishing a common Plugin (nothing to do with addons or scripts) API system. This is way you can have a million forks yet one Blender.