If you 'fork' and start off on a new development trail, its hard to retain compatibility.
If you keep with the legacy branch, you can end up with a frankenstein monstrosity.
Most of the examples used are of very highly coupled pieces of monolithic code ie. kernels, language runtimes, and probably also extends to databases. Its hard to take these apart without losing performance in some aspect or another...
I suspect most 'user-land' developers have moved to the microservices/SOA type development methodology where API's dominate so this is less of a concern.
If you 'fork' and start off on a new development trail, its hard to retain compatibility.
If you keep with the legacy branch, you can end up with a frankenstein monstrosity.
Most of the examples used are of very highly coupled pieces of monolithic code ie. kernels, language runtimes, and probably also extends to databases. Its hard to take these apart without losing performance in some aspect or another...
I suspect most 'user-land' developers have moved to the microservices/SOA type development methodology where API's dominate so this is less of a concern.