Windows is indeed full of old and new crust, but the foundations are actually not bad, NT is a pretty good kernel if you ask me.
The quality of Microsoft engineering is often underestimated, mostly because it is all over the place, different teams, a huge amount of technical debt, but in my opinion some key pillars have been built well enough and maintained, and they also managed to deal with the crust and survive without falling into the classic trap of the second system syndrome.
Just ordered a copy of the book "Showstopper"
I don't think Microsoft has any particularly secret sauce here, they just have a good reason to keep it going and the money to do so. Many other cases the money just isn't there.
And don't under estimate the herculean efforts Microsoft goes through, or eat least used to go through, to keep old programs running. It goes far beyond what I would have ever imagined had I not talked to some of the people involved with it. We're talking having the OS detect specific versions of specific programs (e.g. old versions of Quicken) and hot patching specific APIs with bug-compatible behavior so they don't break with an OS upgrade. Microsoft definitely takes backward compatibility seriously.
I don't think the same is true for Unity.
I love using Linux and Unix in general, but the legacy idiosyncrasies there are kind of worse.
I feel that we could do so much better in modern age if some of the things were just let go, but trenches has been dug and nothing will likely happen.
Deprecating Obj-C will probably also deprecate support for C/C++ support.
I never used Proprietary Apple tech stack, when I made games for iOS it was C/C++/OpenGL and these days Vulkan with MoltenVK
If they deprecate native code, they are going to lose a lot of devs.
Never going to touch Swift with a ten feet pole.
But they knew the shaky foundation and built NT which is a very good and that decision is probably the main reason Windows is still around.
Yes the core initial engineers and leadership that started it were ex-DEC engineers.
But if you listen to Dave Cutler's interviews and read about it you can see clearly that some concepts were borrowed but much of the thinking was from scratch. He took the chance of starting a greenfield project to make something far more current.
In particular NT was designed from the ground up to be multiprocessor and multithreading friendly, which is not the case for VMS.
Secondly NT was designed to host multiple OS "personalities", VMS not at all.
Finally NT was designed to be portable between ISAs and they spent years making sure it worked equally well on MIPS, PowerPC, Alpha, x86, and then amd64.
NT the kernel is awesome. I just wish they'd shipped a better userspace from day one.
Imagine if Microsoft had shipped NT with a proper Unix-like shell environment in the 90s and not the crap "command.com" and WinCRT.dll garbage. What a better world we'd live in.
It did not so much learn from Windows 3.1, TBH, but did learn from OS/2. And from VMS and RSX-11, which Dave Cutler worked on in the past.
The windowing system in the initial NT release did look like Windows 3.1 though.
Yeah, by only ever adding new layers of crust and never actually changing the Old Code, at least if the GUI is anything to go by.