>>13,19
To be fair, the versioned dlls that MS provides (variations of libc runtime and mfc for example) only take 70mb on XP, and the system32 folder with most dlls usually wights 600MB-1.5GB on average. Binary compatibility with basic WinAPI can only be achieved in 8-10MB of DLLs on 9x. Full compatibility does take a lot more, but under 300MB is doable. The many different versions of the same library only applies to libc and visual studio modules which change version by version, and they're rarely exceeding 100MB total, even if you install most of them. The reason usermode executables will usually still work accross NT's is because the PE format remains mostly unchanged, APIs are usually grown, and compatibility with older versions maintained. Even commonly used APIs deprecated since Windows 3.11 are actively supported. Microsoft has no choice but to either stay as they are or slightly grow their API base. They've started redesigning how the Win32 API interface should be organized in NT 6, but of course, most applications are still and will still be using the same old APIs, for maximum compatibility. Even kernel-mode APIs which are subject to change are kept consistent across major versions, and inbetween major versions the changes aren't as drastic, so ports are still possible, unless some subystem was completly redesigned.
From one point of view, this is a good thing, as application developers have a solid base to build upon and will achieve binary compatibility on most systems. From another point, Microsoft's developers are faced with most likely very annoying maintenance jobs (you can sometimes see workarounds for other people's products's bugs in their own DLLs - providing it's something popular enough that it affects a lot of people) keeping compatibility. As most developers, people like to rewrite and improve their code, but I'm guessing Microsoft's Windows / Kernel developers rarely get such liberties, except when it's really needed and only on non-public APIs. When they add a new API, they'll be forced to support it for many years into the future.