"Things should be made as simple as possible, but not any simpler" - Albert Einstein
"DOS 4 is a mess to discuss -- bugs, too big, strange shell interface, who wrote it? DOS 4 has a terrible reputation." - Bill Gates, October 31, 1988
"While DOS continues to be our most important and most profitable product over the last four years we have done very little with it technically." - Bill Gates, November 29, 1989
Bill Gates has testified in federal court that Microsoft® can't modularize their operating system or document all of its APIs because it's written by groups of developers haphazardly binding software together without any clear overall design.
All well educated software developers know that modular design is important for large projects. It's important not to confuse "modular" with "object oriented." Object oriented design typically fosters modular work, but simple procedural code can be modularized. If Windows is created as a mesh of work and continual patch-work as bad as Gates described it to the court, it's an admission of very poor software design and bad software development procedures by his company. Only a monopoly would be able to claim this without fear of losing customers.
If Windows' 40,000,000 lines of code are written without documentation, as Gates testified in court, then how do all of his developers work together to create a complete operating system and applications? We can't possibly assume that as each developer needs to know how another piece of software in the company works that he or she calls up the other group. Besides that simple inefficiency created by the thousands of developers in the company, the problem is compounded by the software not being designed in a modular fashion. There must be enough documentation in existence which would make it feasible to complete documenting the rest of the operating system. A claim was made by Gates that there are too many APIs exposed to be documented. How is it then conceivable that a large suite of applications such as Microsoft Office can be written to use many of those undocumented APIs without using all of the time of the people who created the APIs? Either Microsoft is guilty of extremely poor management or Bill Gates is guilty of perjury in federal court.
From an interview with Rob Short, the vice-president of Windows Core Technology, regarding Microsoft® Windows™ Server 2003:
Why is there no command line only version?
We're looking longer term to see what can be done, looking at the layers and what's available at each layer and how do we make it much closer to the thing the Linux guys have -- having only the pieces you want running. That's something Linux has that's ahead of us, but we're looking at it. We will have a command line-only version, but whether it'll have all the features in is another matter. A lot of the tools depend on having the graphical interface. Printing, for example, requires all the graphics subsystems because we have the "what you see is what you get" model. You need to have the whole of the display stuff to render it. It's a very tangled subsystem.
"Having only the pieces you want running." "It's a very tangled subsystem." From a security, stability, and performance view a system should always only run the "pieces you want." When running a file server no one wants an internet browser running. Yet that's what Windows does. This admittedly poor design leads to wasted system resources, potential instability, insecurity, and the need to install patches for software which is never actually used. Having such a "tangled subsystem" shows it was designed poorly from the start. The design of the core of Windows, as explained by the vice-president of the department, is fundamentally flawed.