I am a chip designer and software developer for a small company that specializes in graphics. While I use Windows plenty, I am the only hardware designer at my company that uses Linux on his workstation, while everyone else uses Windows. Similarly, most of the software developers use Suns, and again I have gone my own way. There are many things I prefer about Windows and Solaris, but since I develop for UNIX platforms, getting a PC with Linux was very comfortable combination of fast, inexpensive hardware and a UNIX-like environment. I enjoy using Linux, but I am not a Linux zealot.
I have been paying attention to the Microsoft trial since long before there was a trial. I like to be fair but have always had reservations and complaints about the way they do business, not to mention the quality of their software. This article outlines some of my thoughts about their approach to business and technology.
What is an Operating System?
The academic debate over what is an operating system has existed since the idea was first conceived. Professors and grad students had their abstract ideals, and all the real world had computers with their own unique operating systems which fell far short of each ideal in their own varied ways.
As the decades passed, new ideas and features began working their way into our computer systems. Once, there was no such thing as virtual memory, and now every PC has it. There once was no such thing as the internet, but now no operating system (OS) would be caught dead without TCP/IP built in. Ten years ago, when games like Duke Nukem and Wolfenstein 3-D first game out, all of the 3D graphics technology was part of the game itself. By contrast, today's operating systems come with facilities like OpenGL and Direct3D that provide advanced 3D graphics in a portable and generalized manner, saving developers time and giving them easy access to the latest graphics technology.
What an operating system is has evolved dramatically over the past half century. What is considered fundamental to a particular OS varies from one to the next. While to one OS, the file system might be inextricably tied to its basic functionality, another one might consider it to be no more part of the OS than a web server, and yet a third might not even have the concept of files.
As expectations have changed, the lines between application and operating system facility have blurred. When the NCSA Mosaic web browser was first developed, it was an application which could be installed and run on various UNIX platforms as well as Windows. It was an application that was self-contained. It relied on certain basic things being in the OS, but nothing else relied on its presence. Today, Microsoft says that Internet Explorer is part of the operating system.
Bundling and Middleware
As people have striven for clarity, another academic concept has started to become popular, called "Middleware". As that idea has proliferated, and developers have wanted to combine technologies, things that were once applications have transformed so that sometimes, they are the application, and sometimes, they are an OS facility being used by another application.
But regardless of how you divide the OS from middleware and applications, users have come to expect certain things to just be there. A typical user has no concern for how you define a web browser. He just wants to surf the web. In fact, the number of things that users have come to expect to "just work" has multiplied exponentially over the past few decades.
Because of this, there is great merit in the idea of bundling key facilities with an OS. Microsoft is right to want to bundle web-browsing and multimedia facilities with their OS because many applications other than just Internet Explorer (IE) and Windows Media Player (WMP) rely on them as middleware. Because of these things, a developer of a business application can embed web and multimedia facilities by just calling up pieces of IE and WMP to do the job. That saves him a lot of work, time, and money.
This kind of modularity can also save space and development time for the OS itself. For instance, an OS need not have a web browser separate from its help system. Even though they differ in some areas, they both use the same basic hypertext approach. This means that both the help system and the "web browser" are just shells which make use of the same web browser middleware facility that is embedded in the OS.
Modularity is an old concept which is being forced into mainstream maturity by the current state of the art in the computer consumer market. In a Computer Science class, they teach us to write software in a modular way so that code we wrote six months ago can be dropped into a new application that we are developing now. This kind of thing has to happen at one level or other in any huge software project, but that modularity stayed at the development level, hidden from the user. Now, the industry has taken this idea to a whole new level where entire programs are modules which can be plugged in and made to interoperate with everything else.
Now, we take modularity for granted. Everyone who has ever bought a new graphics card and had to install driver software has seen the benefits of modularity. The GeForce 4 you just bought to replace your old Voodoo Banshee seems to put windows and icons on your monitor screen no different from before. Windows boots up the same, and you have the same desktop that you always did. But you notice that your 3D games are a heck of a lot faster, and you can crank up all those nifty antialiasing features to the max and still be able to play the game. Because of the modular nature of the Windows operating system, a small piece of software makes every graphics card look like every other so that Microsoft Word does not know or care that you changed the hardware.
Microsoft's fear of losing market share has, however, caused them to play some games with definitions. On the one hand, to developers, Microsoft is touting their platform as a great modular system that provides all of these wonderful features out of the box. They even have nifty names for technologies they have developed to support modularity like OLE, COM, DLL, ActiveX, and now their "holy grail" .NET. On the other hand, they try to tell consumers that their OS is not modular enough to have certain things removed and that's why they have to have IE and WMP installed with every computer. Sounds to me like Microsoft is having some difficulties with being honest.
The truth is that if Windows were not modular at every level, it could not have been developed. With the hundreds upon hundreds of developers who have written pieces of what we know as "Windows", the OS has to be chopped into very small, clearly-defined pieces that can be handed to individual programmers and then assembled later. Modularity permeates every level. One group of engineers writes functions that perform primitive tasks. Another group of engineers assemble those together into features. A third group assembles sets of those into pieces of middleware. And finally, more engineers assemble those pieces together using a user interface shell that leads us to believe that everything is a unified whole.
Most importantly, that modularity has to be purely hierarchical. Every piece of code that is developed must be tested by itself, independent of anything that might rely on it, and only once the lowest levels are finished can you do anything with the next. Often, you will see one facility that relies on another, but seldom will you see two that are so interdependent that neither can run without the other. That would be a software development nightmare, and even Microsoft is not foolish enough to do things that way.
Microsoft can tell you that the file system cannot be removed from the OS. Although the file system in Windows is just as much of a module as anything else and can be replaced quite easily, you cannot really have an OS for a PC without one. Essentially everything relies on being able to access and manipulate files, but I can name hundreds of things that can run just fine under Windows without the presence of a web browser. Microsoft is justified in "tying" the file system to the OS, but the web browser?
To Bundle or not to Bundle
So which is it? First I said bundling the web browser and multimedia facilities is a good thing. Then I said the opposite.
To answer that question, let us consider another example of Windows modularity. DirectX is a collection of facilities that make it easier for game developers to manage audio, video, 3D graphics, and a number of other things. Almost everyone who has ever installed a game on their Windows PC has encountered it. Much like how IE is built on an HTML rendering facility and Windows Media is built on a collection of codecs, most Windows games are built on top of DirectX. New Windows computers today come with DirectX pre-installed, but not always in the past, and as a result, game developers have had to supply it with their games.
Going a little further back, consider Visual Basic. In the beginning, Visual Basic programs were not compiled to machine language. In order to run, a module had to be installed in the OS which provided the proper environment, and that environment was not bundled with Windows. By default, when installing an application written in VB, the installer would automatically plug in the necessary module so that the VB program would run.
The key to these Microsoft technologies was that the developer could bundle them with their application without paying a royalty to Microsoft. Even today, games that rely on DirectX do not assume your OS has the necessary software installed. The benefit to this approach is two-fold. One is that the OS comes installed without unnecessary facilities that the user may never need. The other is that if such a facility is ever needed, it can be installed with the application that uses it. DirectX and VB are only two examples of the plethora of middleware modules that can be added to Windows by an application.
The "technologies" behind IE and WMP are no different. There is no reason why Netscape could not use IE's HTML renderer or IE use Netscape's. Open standards that make things interoperable allow developers to take advantage of this kind of modularity universally. Of course, Microsoft isn't into open standards any more than they are into being nice.
A Nicer Microsoft?
Microsoft is not in the business of playing nice. Before Windows, Microsoft was just like every other company. It was a business in a competitive economy, and it had to fight tooth-and-nail against competition to make a profit. Today, Microsoft is a legally-declared monopoly which has a stockpile of tens of billions of dollars in liquid assets and little or no competition left in many areas, but they haven't shed the small-business attitude. When they had competition, they helped the economy by striving to produce something that sold better than someone else's products. Now that they are a monopoly, they hurt the economy by squashing anyone who dares to invade their territory.
Having a monopoly is not illegal. Acting to maintain it is. Because of these things, Microsoft has superseded IBM and AT&T as being the evil giant that everyone loves to hate and everyone feels forced to deal with at knifepoint. Few people I know actually like Microsoft; they just use their software because they're forced to by everyone else who is also forced to use it. Microsoft has used underhanded tactics to put out of business every company that was once competition, taking choice away from consumers. Capitalism is not perfect, but it works well because it is based on fundamental human selfishness and adversarialism. People only strive to do better when they have something to gain and someone to beat.
Now Microsoft is in trouble. They have been caught being a bully, and they may have some things taken away from them because of it. But it is amazing how they continue to act as they always have, being just as anticompetitive as ever. Unless they get an attitude shift really fast, they will suffer.
What kind of attitude shift, you may ask? My suggestion that follows is laughable and unrealistic, but they need to become a different kind of company. No longer the kid who had to compete with his siblings and schoolmates, they are now the parent who must be mature and nurturing towards the smaller people. That's a condescending way of putting it for smaller companies, but the idea is that Microsoft should remove themselves from the competitive arena. They have arrived at the end of the journey and need to fade into the background.
First, they should nurture the developments of other companies. Rather than competing with Netscape (or some other browser), they should have licensed and expanded the technology, paying royalties to Netscape and sharing in the development. Rather than developing their own media player, they should have licensed Real Player (or something better?) and paid royalties to Real. Every technology they have decided to copy in order to put someone out of business, they should have licensed from someone else. There are pros and cons to that approach, but it's cooperative, not anti-competitive. Now, the time is past for some companies, but Microsoft needs to change how they add a new facility to their OS in the future; they should prefer to pay for someone else's technology in order to help that company grow.
Second, they should nurture ideas and technology. Rather than developing proprietary technologies which they reveal only to those who do not pose a competitive threat, they should make everything open so that anyone can develop for their platform. They should give to the community, not take away. Rather than trying to compete with other operating systems through FUD (Fear, Uncertainty, and Doubt), they should embrace the ideas of their would-be competitors by being compatible with them. More people would use Linux if it could run Windows programs; likewise, more people would use Windows if it could run Linux programs. Rather than making their file and printer sharing incompatible with other operating systems, Microsoft should cooperate with other OS vendors to ensure that they can all interoperate. Microsoft has grown to the point where they now have the responsibility to play fair and even foster competition with themselves.
Using Windows and writing applications for Windows needs to be an easy experience. Microsoft knows this and is saying that they need to continue to behave as they have in order to maintain that. But if they were a team player and had an open attitude, they would have an even more secure hold on their dominance in the OS market because everyone would like them and want to do business with them. For a very long time, companies have lived in fear of Microsoft crushing them or suing them into oblivion if they developed something that touched Microsoft's territory. Microsoft needs to become a benefactor that helps smaller companies by providing them with development tools and distribution channels.
I think this is the only salvation for Microsoft, but I do not think they are daring enough to do it. As an idealist who would like everyone to be happy, I believe that if Microsoft turned from being everyone's enemy into being their friend, then everyone would get off their case. Unfortunately, this is also totally against human nature. Since when has any company ever been nice to anyone? Why should we expect Microsoft to turn into a non-profit charity? It would never occur to them.
The Open Source Alternative
Partly because of companies like Microsoft, things like the Open Source and Free Software movements have grown dramatically. In order to combat the strangle-hold of the corporate giant, people who want to do away with the hassle and actually get something done are turning to Free software. By their own desire to maintain the cathedral of proprietary software and profit at all cost to the consumer, Microsoft has sent the human race on a path that will make proprietary software largely obsolete.
The definition of property in our capitalist society is changing. Some have suggested that Free Software is socialistic, but that is quite contrary to the truth. Free Software has changed the definition of ownership, but it has all of the qualities that define a capitalistic approach. Rather than competing to gain money, many Free Software developers compete to gain fame. That is an even more valuable commodity. A developer is revered not because he has the greatest market share, but because he has shared the greatest amount with the market. Everyone competes to create the the best software on merit, not profit, and the competition is sometimes vicious. But at the same time, everyone has a chance to play and compete.
I think it is clear that there are benefits to middleware and how Microsoft is right in wanting to provide it. It is also clear that Microsoft has already solved the problem of providing that middleware without forcing it on people who have no need for it. Microsoft's only salvation is to change their fundamental approach to the software industry, but I fear that they cannot bring themselves to do it, and that will spell doom for them and many of the things they produce that are good for us. It is my sincerest hope that those involved in the Microsoft antitrust trial will learn to understand that Microsoft is not entirely lying, but not entirely telling the truth about what they can do technically. I hope they do the right thing. The backlash against commercial software that is growing as a result of Microsoft's behavior is unfortunate because much software would never be developed and many developers would not have jobs without some software being proprietary. A software industry that is entirely closed is as unbalanced as one which is entirely open, and we need to strive to maintain that balance.