Tuesday, December 11, 2007

The many panes of Windows Pt 3

Microsoft used to sell a client windows and a server windows, but they gave up the client version. (Client is personal computer, Server offers disk, print, and other services to other computers) Back at the beginning of the '90's the first Windows to hit the big time was Windows 3.1. The hardware was less powerful back then, and just getting the simpler client OS to run was a real trick. For better speed and smaller code size, important parts of Windows 3.1 were coded in assembly language. Coding in assembler is a pleasant pastime (I have done a lot of it), the resulting code is very fast and very small, but it is very tricky to understand. Even the original programmer may forget how his code works after a year or two. If the original programmer leaves the company, the secret of the assembler code may be lost forever. The company can keep shipping it, but no one knows how to modify or fix it. Windows 3.1 begat Windows 95, Windows 98, and finally Windows Millennium Edition (ME) .
Given the howling success of the client Windows, Microsoft started a project to create an all new from the ground up server operating system that would do all the client things and offer services to other computers too. This product would sweep away the last of the mini computers still running company networks. Microsoft hired a bunch of experienced systems guys recently laid off from Digital Equipment Corp (DEC) to pull this off. The DEC guys wanted to do it right, the DEC way, and in one way the succeeded. The new Windows NT was written all in C, was modular and readable. Unfortunately it was also slow and fat. Windows NT begat Windows 2000, Windows XP, and finally Windows Vista, the slowest and fattest of them all.
For some years Microsoft was shipping and supporting both the client Windows 9X and the server Windows NT. Support is a crew of programmers fixing Windows bugs. Microsoft had two such crews, a 9X crew and an NT crew. Since NT could do everything 9X could do, and NT was easier to understand and fix bugs in, Microsoft decided to cut support costs in half by dropping 9x Windows. That is why we all are stuck with slow, vulnerable, bug ridden and fat old Windows NT and it's descendants.
Many of the vulnerabilities of Windows would go away if the server features were removed. The viruses do much of their dirty work by asking a server to perform some service (such as loading and running them). Pure client operating systems don't offer services, which blocks a lot of viruses, and contain far less code than servers, 'cause they don't do as much. The number of bugs is proportional the the number of lines of code, so smaller operating systems have fewer bugs than big ones. Small is beautiful in the software world.
There is a market for a good client only operating system out there. Maybe some company will take advantage of the opening one day.

No comments: