Microsoft’s decision to slash the price of the Windows Millennium Edition upgrade from $89 to $59 — a whopping 33 percent savings — made headlines this week. But the public should beware of geeks bearing gifts. Windows Me has some significant improvements, but for most users those improvements do not justify the pain and potential dangers they will face with this upgrade. Microsoft can lower the price of Windows Me and give it a few great features, but it can’t fundamentally make Me a better operating system than Windows 95, because of underlying technical flaws with the whole Windows operating environment.
I know, because I spent more than a week struggling with a Windows Me upgrade before I gave up, reformatted my hard drive, installed a clean version of the operating system on my 550 MHz Pentium III desktop computer and reinstalled all of my applications. Now that my computer is finally operational once again, I’m quite pleased with the results. But I doubt that other computer users will think that the new features are worth the hassle.
Microsoft’s Windows Millennium Edition won’t be in stores until September, but the code for the operating system has been finalized for many weeks now. A few weeks ago a publicist at Microsoft’s public relations firm called me up and offered to send me a complementary review copy of system. “Sure,” I said, “send me a copy. I love living dangerously.”
The publicist laughed a little and reassured me that she was sending me “final code.” A few days later the promised CD-ROM showed up in the mail, and I bravely inserted it into my machine.
Windows Me is the latest in a long series of Microsoft operating systems that are directly descended from the PC-DOS operating system that powered the original 1981 IBM Personal Computer.
Looking back from our vantage point in the 21st century, people remember DOS as a slow, clunky operating system. But I remember DOS as an exceedingly reliable operating platform. In part, this is because of its simplicity. DOS had two main functions: controlling the placement of files on a computer’s disk drive and loading application programs into memory for execution. I had one of those early IBM computers and my memory is that the only time it crashed was when I wrote my own programs. If I was running BASIC or my simple word processor, that original PC was far more reliable than the Windows-based computers that I use today. It was also reasonably fast.
DOS was so reliable and fast, in fact, that Microsoft was ridiculed when it started shipping the graphical user interface now known as Windows. Back then Windows wasn’t so much an operating system as a programming framework that Microsoft built into its word processing and spreadsheet applications. Windows was slow; it made computers crash. When computer makers started shipping Windows 3.0 pre-installed on desktops and notebooks, many people uninstalled the software and kept running DOS.
Since then, Microsoft has released a series of Windows upgrades — Windows 3.1, Windows for Workgroups, Windows 95, Windows 95B, Windows 98, Windows 98 Second Edition — and the computer-using public has eagerly adopted each of these in turn, all with the hope that their computers would become easier to use and less prone to crashing. According to PC Data, Microsoft has sold more than 4 million copies of Windows 98 and Windows 98 SE from retail shelves, producing $350 million in revenue. That’s not bad when you consider that people who bought computers running Windows 95 technically didn’t need to upgrade to Windows 98 — you can download most of the improved functionality over the Web from the Microsoft site.
For the most part, people upgrade to newer versions of Windows because they think that the new versions will improve their lives. Specifically, people think that the new versions will make their computers crash less frequently. And, to Microsoft’s credit, each version of Windows is marginally more reliable than the previous version. But versions of Windows — even Windows 2000 — are still nowhere near as reliable as Unix or Linux operating systems. I believe that the primary reason for this lack of reliability is Microsoft’s slavish devotion to the god of backwards compatibility.
To Microsoft’s great credit, each successive version of Windows is able to run software from every previous version of the operating system, all the way back to DOS. This sort of backwards compatibility is fairly unique in the computer industry. Other manufacturers have limited backwards compatibility; usually the current version of an operating system can run software from one or two versions back, but not from five or six!
Many Microsoft engineers credit the commitment to backwards compatibility, in part, for their company’s success. You would be hard-pressed to run software designed for a 1984 or 1985 Macintosh on today’s MacOS 9 systems — and it simply will not run on MacOS X, with Apple’s new “Carbon” interface — but the vast majority of software that ran on the 1981 IBM PC still runs inside the MS-DOS Box that is part of today’s Windows 98 Second Edition. Even Windows NT and Windows 2000 can run the majority of DOS applications.
But a slavish devotion to backwards compatibility is also a curse. Many of the stability and reliability problems with Windows Me and Windows 2000 can be traced back to architectural decisions that were made during the development of DOS and Windows 3.1 — decisions that haunt Microsoft to this day.
For example, Windows 3.1 maintained two special 64K blocks of memory, called “heaps,” that were shared between running programs. If you were running a program that used up all 65,535 bytes, your computer would stop running properly, and would quite possibly crash. When Microsoft created Windows 95, it added two more heaps — both 2MB — but it didn’t get rid of the original 64K heaps, because many programs still used the 16-bit resources.
As a result, Windows 95, 98 and Me users frequently get the message “system resources dangerously low” or “there was not enough memory to complete the requested task. Please close some windows and try again.” I get these messages all the time on my computer, even though it has 256 MB of memory. The reason is that Windows 98 has exhausted the 64K heap, and it cannot allocate any more space.
Backwards compatibility was also responsible for my repeated inability to upgrade my desktop computer to Windows Me — attempts that left me with a blue screen (not the infamous Blue Screen of Death, but a compassionately conservative blue screen) with a cryptic message: “Error: 0E : 002 : FF0780ED.” This problem has a lot to do with the nature of Windows applications.
On Unix, Linux and the Macintosh, application programs can be thought of as monolithic components that are loaded into the computer’s memory, run and then exit. But on Windows, many application programs actually modify the operating system when they are installed. The most common way to modify the operating system is to add something called a DLL, or dynamically linked library. Because all DLLs are shared between all applications running on the computer, a bad DLL that’s loaded for one program can interfere with the operation of another program — or the entire operating system.
Because so many application programs make subtle modifications to the Windows operating system as they are installed, there is no easy way to install a fresh copy of Windows without simultaneously reinstalling all of the computer’s applications. This is in direct contrast to both Unix and the Mac, where it is common practice to do fresh operating system installs when new releases of the operating system are distributed.
The two big features that I’ve noticed in Windows Me are the new user interface (it now looks a whole lot like Windows 2000), and dramatically improved performance of the TCP/IP network stack. For home users, neither of these functions really matters. Windows Me has the ability to share an Internet connection — good if you have a cable modem — but this feature was in Windows 98 Second Edition. You can also buy a $150 home firewall appliance to share a DSL circuit or cable modem — and that appliance will give you far more security than Windows Me ever can.
But it’s a sad comment on Redmond’s wizards that they haven’t figured out a way to let people install an operating system without jeopardizing their computer’s health at the same time. It’s insane that there is no way to install a clean copy of the operating system without simultaneously having to reinstall every single application program. Both of these failings are the result of Microsoft’s priorities.
The underlying design of the Unix operating system protects individual running programs from one another. Each program is given its own slice of memory and control over a limited number of system resources. Likewise, Unix was designed from the beginning to be a multi-user system, automatically protecting one user from the actions of others.
The creators of Windows had different priorities: They wanted a decent graphical user interface, and they needed to preserve backwards compatibility at all costs. The results of these priorities are on my desktop computer today. The Windows graphical user interface is vastly better than any of the interfaces available for Unix or Linux. And my copy of Windows Me can still run that great DOS software that I wrote back in the early 1980s. But I have to spend a lot of time reinstalling all of my applications every time I upgrade.