Every once in a while, someone sends me mail (or a pointer to a blog post) and asks "Why can't you guys do something like that?". The implication seems to be that Windows would be so much better if we simply rewrote the operating system using technology <foo>.
And maybe they're right. Maybe Windows would be better if we threw away the current kernel and rewrote it using <pick your favorite operating environment>. I don't know, and I doubt that I'll ever find out.
The reason is that making any substantial modifications to an operating system as large and as successful as Windows is hard. Really, really, really hard. You can see this with Vista - in the scheme of things, there were relatively few changes made to existing elements of the operating system (as far as I can tell, the biggest one was the conversion from the XP display driver model to the Vista display driver model), but even those changes have caused a non trivial amount of pain for our customers.
Even relatively small modifications can cause pain to customers - one of the changes I made to the legacy multimedia APIs was to remove support for NT4 style audio drivers from winmm. This functionality has been unsupported since 1998, and we were unaware of any applications that actually used it. Shortly after Beta2 shipped, we started receiving bug reports from the field - people reported that some call center applications had stopped working. We started digging and discovered that these call centers were using software that depended on the NT4 style audio drivers. These call centers didn't have the ability to upgrade their software (the vendor had gone out of business, and the application worked just fine for their needs). So we put the support for NT4 drivers back, because that was what our customers needed to have happen.
Windows is an extraordinarily complicated environment - as a result, it's extremely unlikely that any changes along the line of "throw away the kernel and replace it with <foo>" are going to happen. Of course, I've been wrong before :).
Can't these clients stick with XP or use virtualization technology?
It seems silly that a minority of businesses running legacy applications are holding back fundamental improvements to the operating system or forcing extra bloat.
Why did you guys throw away DirectSound3D? Pretty ironic that the "games for Windows" platform killed off 90% of previous games' 3D sound. I'm curious as to the rationale for keeping OpenAL but not your own API.
I mean, at least Creative is trying to bring it back by wrapping it to OpenAL.
Hopefully, one of the things that the Free Software movement will cause to happen in the world of proprietary and custom software is source escrow. So that if a vendor does go out of business, or merely fails to keep a product up-to-date (e.g. fails to patch critical security vulnerabilities within set timeframes) then the users of that software still have the option of fixing it (or paying someone else to fix it) themselves.
It's certainly something that I hear more and more people asking about.
Mark: From what I understand, support for hardware acceleration in DirectSound was pulled because there was only a VERY small set of vendors that supported it.
Our team wasn't involved in the decision - DirectSound is owned by the gaming team, and they work very closely with the gaming vendors - I've not heard of any gaming vendors complaining about the lack of DirectSound hardware support.
>>Hopefully, one of the things that the Free Software movement will cause to happen in the world of proprietary and custom software is source escrow.
Source escrow is already a reality in many software houses, and has been for many years; well before Free Software could have been pointed to as an influence.
The problem with the concept in relation to something like Windows is that Windows is *huge*. Even if you got the source code and an appropriate license to modify/rebuild it to fit your needs, even Fortune 50 companies would have a hard time justifying the expense of putting together a team that could maintain it.
Look at Linux, and take a number of common pieces of software that would have to be included to put it at feature parity with a release of Windows. You're looking at hundreds of developers, and scores of companies contributing to the effort. That's not going to be realistically duplicated in a source escrow situation where more likely than not, a single company would have to foot the cost, since the licensing almost certainly wouldn't allow free sharing and collaboration to build the type of development community Free Software has.
You can't make an omelet without breaking a few eggs. Personally, I think Vista is closer to runny scrambled eggs.
tfries > I wasn't talking about Windows as much as I was talking about things like call center applications or other old apps that rely on long-deprecated APIs, or just rely on quirks or bugs in Windows code (e.g. rely on being able to do double-free()s).
If Windows gets updated and undocumented or plain wrong behaviour stops working, and you've got a system that you just can't keep running Windows ME on anymore, but are reliant on, then being able to update that system so it works on XP could be a big win.
Sorry if that was unclear.
"You can see this with Vista - in the scheme of things, there were relatively few changes made to existing elements of the operating system [...]"
I think that is biggest problem.
For years I really looked forward to Vista. There were a number of really promising technologies. However, most of them were cut. In the end, Vista got a shiny new interface, but the internals are for the most part the same old.
My old applications work just fine on my old OS. There is no reason to upgrade to a shiny new interface.
Break as many legacy applications as needed. Completely rewrite the internals. Give me a good reason to upgrade. Then I probably will.
Craig: You might be right. IMHO, the Windows team both overpromised on Windows Vista, and the press overexagerated the effect of what promises were made.
But we can't break legacy applications. Our customers have made it VERY clear that they have a very low tolerance for breaking applications. Other vendors (including some that have new releases coming out around this time) don't have the same issues as we do, largely I suspect because their application base is a small fraction of the application base ours is.
I can understand that perspective. However, if Microsoft is too afraid to truly evolve Windows due to breaking legacy applications, then I honestly must question what kind of future Windows really has.
Craig: We're not, IMHO (but I'm biased). What it does mean is that we just need to be more careful in the changes we make.
Every OS out there reaches this point - The instant you accept a fixed ABI, you raise the compatibility barrier.
I do feel that I should point out that the 64bit windows codebase finally killed 16 bit compatibility so Microsoft don't keep on doing legacy support for ever.
I can still keep running 16 bit apps in virtual PC so this isn't the end of the world but I can imagine some folks with odd ball software (perhaps that talks direct to some hardware) won't have this option.
16 bit isn't quite dead yet but it is in intensive care.
It's always amusing to see people suggest that Microsoft should just take some kernel like BSD and port Windows to it, as some means of achieving security/stability/whatever's-lacking. The logic is usually that if Apple could do it, MS should be able to. Of course, it took Apple almost as long to release OS X as it took MS to write WinNT from scratch, and they started with a prewritten kernel from BSD, microkernel from Mach, and UI layer from NEXT.
But I suppose those same people who don't understand the complexities of OS writing also don't understand that security is actually determined by the apps (e.g. assuming they're running as admin), the users (e.g. loading Trojan horses), and critical mass (i.e. the platform having enough users to be worth attacking). Stability is mostly determined by the quality of 3rd-party drivers.
Those same people also don't understand the importance of legacy. People use Windows because it runs Windows applications and supports hardware made to be used with Windows. Apple was able to force people to use the new OS by not manufacturing computers that run the old OS. If MS makes a new OS that isn't sufficiently compatible with the old OS, people will keep using the old one and PC makers will manufacture computers that run the old one until there is no longer demand. That's why MS was never able to get OS/2 to take hold. Windows NT took 8 years to become mainstream!
Hell, VB.Net is a complete legacy-breaking upgrade, and some people don't even consider it to be VB. They call it "Visual Fred". There may be many VB.Net programmers out there, but there are still millions of VB6 programmers because of the vast legacy of VB6 code still in use.
...as if users even care what design the OS uses. OS's should be invisible, and 99% of the time Windows manages to be just that. (Most of the bad 1% is IMHO Explorer locking up when you insert a CD or browse to a bad network, and wireless oddities).
So when I stumbled on this one it made me laugh and cry in equal measure:
Like a user's going to say, "well, I really like those 300 new features in Leopard, but I wish they had spent the time rewriting the kernel to be a modular microkernel instead".
(no relation to "Craig M.")
Am I missing something? Is someone putting guns to call center's heads and forcing them to replace Windows ME or Windows NT or whatever with Windows Vista?
If their call center application worked just fine, why did they upgrade the OS that it runs on? The whole backward compatibility issue really doesn't make sense to me. Yes, fixing problems in a new version of Windows will break backward compatibility with existing line of business applications -- so the question is -- what is forcing these businesses to replace the operating system on machines that "work just fine?"
I don't expect our DOS based accounting package to work flawlessly under Windows Vista. That's why it still runs on a DOS machine.
What am I missing?