Larry Osterman's WebLog

Confessions of an Old Fogey
Blog - Title

Young Turks

Young Turks

  • Comments 42
Ok, this is a bit of a rant.  I recently encountered an email exchange from someone I respect where the person in question asked (more-or-less) "I can't, for the life of me, see why on earth this particular piece of functionality exists in Windows".

Now this person is somewhat younger than I (ok, most everyone in the industry is somewhat younger than I), but he is a super smart guy.

The thing is, he has NO CLUE about how the personal computer world operated back in the early 80's when Windows was designed.  Windows was designed to run on machines with 512K of RAM, on machines with a 10M hard disk.  In addition, the CPU on which Windows was intended to run didn't support memory protection, so the concept of "separation of privilege" was meaningless.  MS-DOS (on which Windows 1.0 was built) had a long history of putting critical OS information into an application's data space.  For Windows, things were no different - the line between application and system was often blurred. 

Whenever there was a possibility of offloading potentially optional functionality onto the running application, Windows took it.  Instead of having a preemptive scheduler, Windows used a cooperative scheduler.  That meant that applications never had to deal with ugly issues like synchronization of data, etc.  The consequence of this cooperation was that a single errant Windows application could hang all the running applications. 

But that was ok, because the overhead of the infrastructure to FIX the problem (per-application message queues, etc) would have meant that Windows wouldn't be able to run on its target systems.  And adding all that extra stuff really wouldn't make that much of a difference since the applications were all running in the same address space (along with Windows and the operating system).

So it's not surprising that there were a lot of things present in the early versions of Windows that would make people cringe today.  Sometimes this isn't a problem, but one of the key values of the Windows platform is that Microsoft very rarely intentionally breaks applications.  We'll break applications when the applications depend on a security flaw, and sometime applications will break when there's a fundamental architectural shift occurring (we already know that some multimedia apps are broken in Vista because they depend on being able to call multimedia APIs during DLL initialization, which only worked by luck in XP). 

But barring that, Microsoft's made a strong commitment to not break customers applications.  The good thing is that it means that the Windows platform is remarkably stable.  Many applications written for Windows 1.0 still run on Windows Vista.  It means that corporations that have made an investment in technology aren't going to lose that investment by moving to a newer version of Windows.  It also means means that every version of Windows carries forward the designs from previous versions.

If there was any "mistake" made, it was Microsoft's unceasing commitment to backwards compatibility.  And I personally believe that a huge part of the reason for Windows success in the marketplace IS that commitment.  If we didn't have it, people would have moved onto other platforms long ago.

So when someone starts questioning why ancient stuff exists in Windows, they really need to understand the environment in which those decisions were made.  Part of the value of being a young turk is that they challenge the decisions that were made by their elders.  But before you decide to challenge an earlier decision, you need to understand the environment in which the decision was made.  Sometimes what no longer makes sense did at one time.



Btw, before people start claiming that this was somehow "Microsoft's" fault, the original Mac OS had many of the same issues, it was designed to run on a machine with 128K of RAM and didn't even HAVE a hard disk - it only supported a 400k floppy disk.  The designers of the Mac OS made many of the same decisions that the Windows designers did (Mac OS was also a cooperative multitasking environment), in addition, the Mac designers went even further and put significant parts of the OS into the system ROMs on the Mac, further blurring the lines between application and system.

  • Can you tell us which piece of functionality this person was talking about?
  • I assume this was regarding the WMF problem? I agree that the original functionality made sense for the era in which it was designed.

    Now that we live in an era of bountiful system resources, it seems like Microsoft has gone the other direction though. They did not preserve much compatibility between .NET and pre-.NET as VB6 developers discovered. The .NET framework is large, and users need to keep multiple copies of it on their systems. Since a lot of system services still use COM, .NET developers still need to have an understanding of COM but now have to go through yet another confusing layer to get to it. This doesn't feel like progress.

  • PatriotB, no, because it really doesn't matter.

    Dave, Actually the COM vs .Net is an example of preserving compatibility. There's a staggering amount functionality deployed both by MS and 3rd parties that's available via COM, if we want to allow .Net apps to leverage that functionality, interop is the only way to go (at least for the medium term).

    The VB.Net vs VB6 issue is a different issue, you'd have to talk to someone who actually knows about the real reasons for rational commentary on the issue - anything you'll get from me is rampant speculation.
  • Hi Larry,

    have heard about a project going on in
    Microsoft that is about create an OS from
    scratch (although there are no plans to
    make it a commercial stuff, it is more like
    a technological 'game'). Wouldn't be
    reasonable to create something like that
    as a commercial product so that:
    a.) to get rid of the legacy stuff
    b.) let the market decide which to use
  • "the original Mac OS had many of the same issues..."

    But didn't have the Microsoft culture of "backward compatability at all costs" and many of those issues have gone away.

    I'm not sure whether this is an argument for or against that culture, but it's successfully been employed before.
  • "The designers of the Mac OS made many of the same decisions that the Windows designers did (Mac OS was also a cooperative multitasking environment),"

    Plus Apple users didn't get protected memory and pre-emptive multitasking until OS X. At which point there was much rejoicing.

  • Your story about the memory footprint of the LAN manager 2.0 with Bill probably does not make much sense to developers that today have megabytes of RAM available. "8 BEEEP basics!"

  • If I'm not mistaken Windows 1.0 was 16-bit and I seem to recall that 16-bit support has been dropped on Vista. Wouldn't that mean that Windows 1.0 applications (or anything before 95?) would not run on Vista?

    Just wondering...
  • News to me that 16 bit support is dropped in Vista, last I saw it still was in. What was dropped was 16 bit support on x64 platforms. And it's my understanding that that happened because the CPU couldn't support 16, 32 and 64bit code running at the same time.
  • Clinton Pierce,

    "But didn't have the Microsoft culture of "backward compatability at all costs" and many of those issues have gone away. "

    This issues have gone away, but look at the market. Apple is a VERY minor player in the industry, compared to the PC market. Clearly, Microsoft's approach was the "winning" one.

    "I'm not sure whether this is an argument for or against that culture, but it's successfully been employed before."

    I would argue that it wasn't successful. Apple has slipped from being the single largest maker of personal computers to having a tiny (somewhere around 3%) marketshare. To me, that doesn't sound like a corporate success story.
  • > the original Mac OS had many of the same
    > issues, it was designed to run on a machine
    > with 128K of RAM and didn't even HAVE a hard
    > disk

    That sounds like the same hardware capabilities that MS-DOS 1.0 needed, but the Mac OS provided a graphical interface that Microsoft started to copy some years later than MS-DOS 1.0.

    The absence of hard disk support was a boon for MS-DOS 1.0. Microsoft's drivers or utilities could not cause the entire contents of hard disk partitions to be trashed.

    Backwards compatibility played a big role in MS-DOS 1.0. The manuals boasted that assembly language programmers could make system calls using the same familiar code they used in CP/M, giving MS-DOS 1.0 more compatibility than CP/M-86 had. (Though this didn't make a bit of difference to anyone who had programmed in assembly language on IBM mainframes, Digital VAX computers and PDP non-computers, and a bunch of other long forgotten machines.)
  • Window's success was more from the wide variety of manufacturers capable of slamming together a system that would run Windows. Apple was very strict about not letting other manufacturers in, and this cost them the market. The most dramatic example of compatibility breaking by Apple - OS X - actually improved their market share because it was a lot easier to program for it. Having a UNIX core didn't hurt, and the compatibility layer given by Classic is top quality (I have as yet only found two applications that break under it, but I must admit I haven't really been looking.)

  • ...Not that backwards compatibility doesn't help. Every once in a great while I find a need for some epically old Windows software, and being able to put it in my XP Pro machine and use it like it was 1989 all over again, except with better performance and a bit less crashing, sure is nice, and I thank the Windows team profusely for making sure that is possible.

  • >>.Not that backwards compatibility doesn't help.

    Dosbox supports Windows 3.x now. By the way, so do VMWare, Bochs, VirtualPC (it depends whether you want an emulator or a virtual machine).
  • "the original Mac OS had many of the same issues..."

    And what about these copying issues? I asked it on several MS blogs and forums but nobody did or wanted to reply.

    Why people think that MS copies Apple? I don't believe it. For instance now they say MS copied Exposé to create Flip3D (but i think Apple copied TaskGallery from MS Research).
    But they claim also about hundreds of features copied from OS X. Why is that? What are the roots of these opinions? Please, Larry, say something :-)
Page 1 of 3 (42 items) 123