I'm not the first one to say this, but I'm worried about Windows as a platform.
The code base has now been recycled 5 times over, and they keep adding layers to it instead of cleaning it up.
(One thing I admire about Apple. When the OS code got old and crufty, they weren't afraid to start at the beginning and do it right.)
Windows has had to promise and deliver complete backward compatibility to retain their market share. They've painted themselves into a corner, and at a certain point, they are going to have to break that promise or figure out some clever way to unchain themselves from that anchor. (I think I read something about them trying virtualization as a possible solution.)
Apple's start-from-the-beginning effort was Copland. That turned out pretty badly for Apple. (Which is part of the reason they abandoned it in favor of buying NeXTSTEP (Which turned into OS X))
By way of agreement with you, I will say there's no "but in a way" about it. As I recall--I was a Mac developer at the time--Copland was everything Jobs is not. A large, bureaucratic team. Infighting and feature poaching between the Pink and Blue teams with nobody to step in and provide Adult Supervision. No hard ship date with a command to abandon anything that wouldn't fit (real artists ship, Copland did not ship).
Much has been made of how little Jobs contributed to the original Macintosh. However, looking back we see what he did contribute: the all-consuming focus on shipping a product, and the willingness to make the hard decisions needed to do so.
This was entirely unlike the Copland effort in every which way.
Windows has had to promise and deliver complete backward compatibility to retain their market share. They've painted themselves into a corner
I think that's correlation, not causation. Look at Sun and their Solaris backwards-compatibility guarantee (which is, if your old binaries break on our new version, it's our bug and we'll fix it).
The code base has now been recycled 5 times over, and
they keep adding layers to it instead of cleaning it up.
There have been lots of stupid extensions - technologies in the space we call COM - but they don't reflect on the core. And with the core - they've cleaned it up multiple times. Microsoft have been excellent at doing incremental releases with the exception of Vista. Everything else (including Windows 95) has just been a steady increment on the previous version. Dot net is an attempt to create a clean new alternative stack to allow them to stablise the legacy system so they can get it stable and then just leave it.
With NT3 they did as little as possible by taking lots of inspiration from OS2 but fixing up the things it got wrong such as single input queue. What were the major features improvements of Windows 2000 over NT4? Some steady interface improvements that were already available for NT4 as a patch, plus you could change IP addresses without rebooting. XP over 2000? More annoying user interface, support for some new hardware.
Also, you say 'recycled'? It has and respects legacy, and I agree that this holds it back - there are certain things about the core that are awful and hard-wired that way for the rest of time. One of the major reasons I avoid it for anything more than running browsers and office is that I can't stand the command-line limitations. But code doesn't get worn out through reuse. The major criticism I'd have of Vista is that they were so carried away by the prospect of duplicating the ridiculous operating environment that I hate about my OSX environment that they didn't recycle enough!
(One thing I admire about Apple. When the OS code got old
and crufty, they weren't afraid to start at the beginning
and do it right.)
They didn't though. They just rolled NeXT forward and wrote compatibility layers for the Apple stuff. I can't cite this exactly, but when he was launching NeXT, Jobs said something along the lines of "it's late, but there may just be enough time left to establish one more workstation platform". And really they cheated because it's just unix with their own GUI.
Windows 7 is breaking application binary compatibility. My understanding is that if your executable's manifest does not specify 7, then you get <= Vista. The next version will provide <= Vista, 7, and 8. And so on.
I may have misunderstood, but this seems like it will relieve many compatibility woes.
The code base has now been recycled 5 times over, and they keep adding layers to it instead of cleaning it up.
(One thing I admire about Apple. When the OS code got old and crufty, they weren't afraid to start at the beginning and do it right.)
Windows has had to promise and deliver complete backward compatibility to retain their market share. They've painted themselves into a corner, and at a certain point, they are going to have to break that promise or figure out some clever way to unchain themselves from that anchor. (I think I read something about them trying virtualization as a possible solution.)