Udostępnij za pośrednictwem


Why do people think that Windows is "easy"?

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 :).

Comments

  • Anonymous
    October 29, 2007
    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.

  • Anonymous
    October 29, 2007
    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.

  • Anonymous
    October 29, 2007
    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.

  • Anonymous
    October 29, 2007
    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.

  • Anonymous
    October 29, 2007
    >>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.

  • Anonymous
    October 29, 2007
    You can't make an omelet without breaking a few eggs.  Personally, I think Vista is closer to runny scrambled eggs.

  • Anonymous
    October 29, 2007
    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.

  • Anonymous
    October 29, 2007
    "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.

  • Anonymous
    October 29, 2007
    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.

  • Anonymous
    October 29, 2007
    Larry, 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.

  • Anonymous
    October 29, 2007
    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.  

  • Anonymous
    October 29, 2007
    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.

  • Anonymous
    October 29, 2007
    The comment has been removed

  • Anonymous
    October 29, 2007
    ...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: http://www.zen-simplicity.com/ 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". Stu

  • Anonymous
    October 30, 2007
    The comment has been removed

  • Anonymous
    October 30, 2007
    Peter: It's my understanding that was a restriction of the hardware - we had a choice - 64bit or 16 bit. But you're right, 64bit windows don't support 16bit apps any more.

  • Anonymous
    October 30, 2007
    Craig Matthews: I believe the call center was running Windows XP.  And I have no idea why they wanted to upgrade, but they did (maybe they wanted the improved security, maybe they wanted the eye candy, I honestly don't know).

  • Anonymous
    October 30, 2007
    As Patrick said in the first post of this thread, this is where something like virtualization could really (I hope) free Micrsoft up and give them more flexibility. With all the investment Microsoft is making in virt technology with Viridian etc I hope that maybe someday Windows will ship with a few previous versions of windows as VM's which could be used to run incompatibile software. Paralells and VMWare have proven this can be done on the Mac and to make the apps running in the VM look as though they are running in the host OS with correct look and feel. If this was able to be got working successfully (lets say in a Windows 8 timeframe) it would free Microsoft up to make some actual breaking changes which I am sure the actual dev teams have wanted to do for a while (like the deprecated NT4 audio you mentioned) whilst still maintaining an upgrade path for existing customers with LOB apps. Just my €0.02 Kevin

  • Anonymous
    October 30, 2007
    The comment has been removed

  • Anonymous
    October 30, 2007
    The comment has been removed

  • Anonymous
    October 30, 2007
    Larry, but what about this? http://arstechnica.com/news.ars/post/20071021-core-of-windows-7-taking-shape-meet-the-minwin-kernel.html Is it just hype or something really going on?

  • Anonymous
    October 30, 2007
    Tanveer: Beats me.  Minwin was the goal of the architectural layering work that was done for Windows Vista.  You can see some of results of that work with the Server Core SKUs of Windows Server 2008. As I understand it, minwin isn't an OS feature in any meaningful sense of the word, it's just a refactoring of the source tree to create "core" of the OS upon which higher level constructs are layered.

  • Anonymous
    October 30, 2007
    The comment has been removed

  • Anonymous
    October 30, 2007
    Anon: I don't know of anything that Microsoft does to prevent you from running old OS's. We don't sell them any more, but you should be able to continue running them (until you run out of replacement parts on your hardware). We don't sell old versions of our OS's, but that's primarily because it costs us a LOT of money to support those old operating systems (and nobody else in the industry supports old versions of their operating systems).  Even with that, our support policies are dramatically better than our competitors policies - the support lifecycle for Windows is far better than the support lifecycle for any other operating systems out there.

  • Anonymous
    October 30, 2007
    Larry: One way Microsoft prevents you from running old OS's:

  1. Buy machine with Windows XP on it
  2. Wait three years for the machine to get fried, broken, or whatever.
  3. Buy new machine with Windows Vista on it
  4. Pay, on top of the cost of Vista, an additional amount equal to half the price of Vista for the right to run Windows XP on it //INSTEAD of Vista//. Once you have to get your computer replaced, you have to pay 1.5 times the cost of the Vista on the new machine in order to be allowed legally to run XP on it.  Microsoft already got the money for Vista from the PC purchase and they want more money for me to be able to downgrade it.   In essence, Microsoft is STILL selling Windows XP; except now, it's being sold at half the cost of Vista, and at the same time, being tied to the purchase of Vista.  Once vendors stop offering Windows XP with their machines, the only way that I will legally be able to run Windows XP on a new machine is to buy, in monetary terms, ONE AND A HALF licenses of Vista. It's stupid really because you're only using ONE operating system on the machine.  
  • Anonymous
    October 30, 2007
    Craig, you're describing OEM licenses, which are highly restrictive licenses tied to a single machine.  If you use your existing version of Windows that your purchased at retail, you should have significantly more flexibility in what you can legally do with the product.

  • Anonymous
    October 30, 2007
    The comment has been removed

  • Anonymous
    October 30, 2007
    Just in relation to Windows Backwards compatibility, the push with MinWin and Windows Server Core to a more modular operating system. Would it not make sense to try and modularise the legacy elements of the OS (something even in the form of Mac OS Classic VM). To have them as an non-installed by default package(s) in the hopes of creating a still fully functional version of Windows just a bit more leaner? This may also push application writers to use the newer API’s and such.

  • Anonymous
    October 30, 2007
    It should be interesting when hardware-assisted virtualization becomes more common; offloading backwards-compatibility into a virtual OS could free up Microsoft from many of these issues.   With whatever latest Windows version acting as a hypervisor, the "compatibility layers" could be the old OSs themselves.  (I am impressed with how Parallels integrates with the host OS and even provides guests with 3d gaming support).

  • Anonymous
    October 30, 2007
    OK, I see my comment is redundant.

  • Anonymous
    October 30, 2007
    I've taken OS design courses, and I can say with no small amount of certainty that writing an OS is hard.  Even on a fixed hardware set with very many shortcuts already done for me, I was hard-pressed to write something that actually worked. Adding all this backwards compat stuff isn't so terrible, but at some point the design flexibility comes into play.  A commenter at Raymon Chen's blog asked what kind of performance hit there was, but it really isn't a perf thing at all -- just a design thing.  Dropping these audio interfaces might have freed up dev time and opened some freedom in design, but if the customer (or more likely, several customers) has this sort of problem, you're going to have to support them.  The money proposition is there, and even if they have escrow source for drivers or whatever it was, that cost to them is not trivial. With the escrow thing, you might think to get it for the applications and maybe even OS, but I don't think most places think to get it for all the drivers for all possible hardware they own which could count in the hundreds.

  • Anonymous
    October 30, 2007
    The comment has been removed

  • Anonymous
    October 30, 2007
    Norman, I explicitly was referencing the support lifecycle - in other words, the period of time in which you can get support for a product.  I'm not aware of any Linux vendor that's providing support for 8 year old versions of Linux.  You might be able to get community support for such an old release, but that doesn't help you. If the support incident ends with Microsoft providing a fix, the incident costs are refunded.  As an individual, I don't entirely like the policy, but it helps to reduce the costs (and every support incident costs Microsoft a TON of money (hundreds of dollars, last I looked, far more than the amount we charge customers)).

  • Anonymous
    October 30, 2007
    "I'm not aware of any Linux vendor that's providing support for 8 year old versions of Linux." Agreed.  You get the bug fix by upgrading, for a price of 0 yen.

  • Anonymous
    October 30, 2007
    The call center problem shows very well, why the concept of open source development is better for all parties involved. In case all software involved in this problem were under the GPL, the driver could be ported to the new driver model, the call center software could be ported to work with the new driver and your OS would not have to carry the weight of backwards compatibility any further. The closed source model in contrast leads to non-ideal solutions.

  • Anonymous
    October 30, 2007
    Referring to the comment about each support incident costing MS more than they charge the customer. All this somehow reminds me of the US healthcare business. In a working healthcare system, each party with the right to use the product pays for it (like the Microsoft tax, everyone of us pays, when buying a PC). And then of course, not everybody is experiencing problems. But when they have one, they are not required to pay for the real cost of their problem. In a good system, they would not actually have to pay anything else but the usual tax in case something happens. Microsoft however appears to me more like the US healthcare system, where they are trying to provide less care than actually needed to increase profits! And requiring them to pay huge amounts of money for fixing their problems even though they already pay the tax.

  • Anonymous
    October 31, 2007
    Why not rewrite? let us take the VMS: microkernel starts it kernel         runs it then we have 4 layers of access kernel mode system routines, they are allowed to ask kernel for  doing the atsks (drivers and protocol handlers) system mode less priviledges, no access to kernel, they can ask kernel mode to do the job for them (drivers, priviledged programs) executive mode (user priviledged programs) user mode (user programs and environment) so why not? the example with the call center would be probably somewhere in the nondangerous zone at executive level....who cares then?

  • Anonymous
    October 31, 2007
    Elias, You're forgetting to take into account the risk with making those changes.  Who nows what else will get broken in the porting of the driver.  Plus who will do the porting?  Unless you pay a company to do it then you are relying on an individual sacrificing his free time to port the driver.  Waiting on an individual to port the driver is hardly an optimal solution for a company dependent on a mission critical piece of software that basically runs their business.

  • Anonymous
    November 01, 2007
    I don't really agree - not supporting a particular application with your next OS is not an issue as long as you don't block that customer from access to the previous version. That aside, .NET is perfect proof that a part of MS is not caring to much about backward-compatibility I've allways been quite amazed at MS quite pragmatic, non-sientific approach to their software. Yet after 10-15 years (depending where you count) I guess it WOULD be a good choice to start anew. Windows NT was different from the 3.1 / 95 Stream, and although that hampered some use cases (e.g. games, multimedia, drivers) in the end it's MS decision on what runs and what doesn't.

  • Anonymous
    November 01, 2007
    The example with the call center is really strange. Usually Vendors give expicit go's and no-go's to customers which OS (Windows version) THEY support. If a call center were the vendor actually was no more have an admin who suggest updating to windows vista no matter what, then this guy should be fired. Never touch a running system - eh? @Larry: Imaging Windows v10 in maybe year 2020. If you keep that policy Window will be 100 GiB heavy instead of 1GiB and ligtning fast. I for myself will jump over Vista and stay to XP as long as possible because its nice, fast AND stable.

  • Anonymous
    November 01, 2007
    DonRon: The vendor's been out of business for 10 years.  The call center's the customer. .Net has it's own set of rules regarding backwards compatibility.  From what I understand, they use the strong versioning of the CLR to bind an application to a single CLR implementation.  That frees up applications to specify which version of the CLR they'll work with.  That has its own set of issues: Since assemblies are tied to a CLR version and you can't have more than one version of the CLR in a Win32 process (I believe this is true, I may be wrong), it can be difficult to mix assemblies from 3rd parties.  It also means you need to have multiple versions of the CLR on your machine, which increases the servicing complexity.  On the other hand, it frees the CLR team to make breaking changes.  It's a trade-off.

  • Anonymous
    November 01, 2007
    I think dropping backward compatibility is not really an option. There are too many people who want to work with an up-to-date OS that also runs their old software as smoothly as possible.

  • Anonymous
    November 01, 2007
    The comment has been removed

  • Anonymous
    November 03, 2007
    > You get the bug fix by upgrading, for a price of 0 yen. 0 yen + 16 man-hours of getting it all working again (try upgrading from a 5 year old release of Linux and you'll be in for a world of pain -- if works best if you always keep perfectly up-to-date; who's got time for that?) Yeah, and about 50 million new bugs to go along with it! But anyway, that still doesn't help you when you don't even know if your bug is fixed yet or not. You've just got to upgrade and "hope" -- if it's not fixed, you've got report the bug anyway!

  • Anonymous
    November 04, 2007
    Sunday, November 04, 2007 7:51 AM by Dean Harding >> You get the bug fix by upgrading, for a price of 0 yen. > 0 yen + 16 man-hours of getting it all working again Interesting.  That makes it even quicker than Windows upgrades (besides being cheaper).  What distro are you using? > Yeah, and about 50 million new bugs to go along with it! Just like Windows 2000 (though SP3 and SP4 removed some of them).  Just like Windows XP (though SP2 removed some of them).  Just like Vista (though SP18 will remove some of them, if it survives that long).  Just like NT4 SP4 (SP3 removes some of them, but you have to reinstall NT4 from scratch to get there). > But anyway, that still doesn't help you when you don't even know if your bug is fixed yet or not. Just like Windows.  Sometimes you can see fixes listed in change reports, but you don't really know until you try it.  And of course you don't know about new bugs until you try it. But really, since your distro takes only 16 person-hours to try to get a new version working, please say what distro you're using.  Every Linux and Windows distro that I've tried have taken longer.

  • Anonymous
    November 05, 2007
    Google hat seinen Pagerank f&uuml;r viele Webseiten angepasst. Aber was bedeutet das praktisch? Welchen Einflu&szlig; hat Google auf Webseiten? Als Gast haben wir Alex von stereophone.de in der Sendung, der uns das Thema n&auml;herbringt. F&uuml;r Mac

  • Anonymous
    November 13, 2007
    The comment has been removed