Last week, I examined Judge Thomas Penfield Jackson’s Final Judgment in the Microsoft antitrust case, in which he ordered the company to be broken into two parts. This week, my midyear report on Microsoft and its troubles continues with a radical suggestion: I believe Microsoft should take charge of its own destiny and voluntarily break itself up, then use its self-imposed terms of divestiture as leverage for an out-of-court settlement.

I can already hear the screams from hard-core Microsoft advocates who believe that Bill Gates & Co. should not give an inch on the crucial issue of controlling what goes into Windows. And yes, I understand there’s a chance that the U.S. Court of Appeals or the Supreme Court will completely overrule Judge Jackson. However, I also think there’s a real chance that much of the judge’s verdict will be upheld. If that happens after Microsoft has spent hundreds of millions of dollars in legal fees and months or years being distracted from its true business, the company will end up on the defensive, with Windows weakened tremendously.

Instead, I’d like to see Microsoft spin off the Windows company and give the Windows development team a clear charter. Let Office, MSN, Expedia, and all the other non-Windows products go off to a separate company. Keep the development tools and server products (including BackOffice) in the new Windows company, which would have its hands full creating a rock-solid, kernel-based version of Windows, along with a separately packaged product made up of optional components currently included with Windows.

After poring over hundreds of white papers and tech notes in Microsoft’s online archives, I’ve put together a list of what this ideal core operating system should include. Remember, this isn’t my arbitrary list—it comes straight from Microsoft:

  • Kernel services are at the head of the list. Memory management, CPU scheduling, and I/O belong in this category.
  • File system support. Both FAT32 and NTFS are well-tested file systems, and they should be in the base OS.
  • Basic network services, including workstation and server capabilities, TCP/IP support, and the ability to boot remotely.
  • Security infrastructure would give developers access to the Security Account Manager and encryption support.
  • GUI support, in the form of the Window Manager, the Graphics Device Interface, and a basic HTML rendering engine (which could be replaceable).
  • Hardware support, including the Hardware Abstraction Layer, Windows Driver Model, Plug and Play, and power management.
  • Software APIs from the Win32 subsystem (for application compatibility).
  • Tools and utilities, but only those required for essential system tasks, including a simple text editor, FDISK, Registry Editor, and the like.

Note that this isn’t a pure microkernel implementation—it includes large chunks of user code, primarily to guarantee compatibility with existing Windows applications.

What’s not included? Plenty, not much of which fits in the classical definition of an operating system: Outlook Express, Windows Media Player, games, dozens of system maintenance utilities and administrative tools, and eye candy such as themes, wallpaper, and screen savers. Oh yes, and the integrated Explorer.

Putting a price tag on those add-ons would give third-party developers an opportunity to succeed by building a better Windows than Windows (a phrase that old OS/2 hands will recognize). Of course, if you want to buy it all from Microsoft, you could still do so, but breaking out the options as extra-cost items would indeed be good for competition.

Next week, in the final installment of this series, I’ll offer my suggestions on how Windows could be packaged in a post-breakup world.

The Challenge is back!
How have I spent my summer vacation? Not at the beach, or in the mountains, or even goofing off in the yard. I’ve spent two weeks debugging a nasty Blue Screen of Death in Windows 2000 Professional. Every few days, my multiprocessor system locked up tighter than a drum, generally after I clicked on a URL. The Stop message was one I’d never seen before: BAD_POOL_CALLER. I’ve tried all the standard techniques for dealing with a BSOD, without success. Have you seen this BSOD? If you know what to do when you see this specific error message, tell me and your fellow TechRepublic members (and earn some valuable TechPoints in the process). Click here to tackle this week’s Microsoft Challenge.