Saturday, January 28, 2006

Hasta la Vista, Windows

There is a lot of speculation about the coming of Microsoft's Vista. I want to contribute some speculations of my own to the pool:

Vista is not going to be a smash such as Windows 95 was, but something that markets will grow used to, such as happened with XP, because of similar reasons. It can't be any other way, because Vista is going to be a complicated, buggy and unstable Operating System at the beginning. As long as enough early adopters and Microsoft junkies are able to catch the bugs and Microsoft to employ legions of programmers to patch them, it will be improving until becoming mainstream usable, emulating what happened with Windows XP, Me, 2000, 98SE, and 98. Windows 95 was also very-very buggy at the beginning, until Windows 95 950B, but it was such a huge improvement over Windows 3.11 that it became an instant success.

The problem of Bugs and Microsoft has its roots in their oblivious disregard of good software engineering practices. If you look at DOS you would see a bad design of an extension for CP/M. Windows was an awfully preposterous bad copy of ideas that were circulating in the mid 80's, and substantially was a tower of patches over patches on top of DOS. Windows 95 and the Windows 32 Bit API was certainly an improvement, a serious attemp at simplification, but first, they inherited too much from the 16 Bit API; and the whole thing went the path of inconsistency because of the fundamental design problems of Windows 95 that didn't allow it to well-behave as an API for Windows NT would have demanded, so there was this fork between the Windows 32 API for Windows 95/98/Me and NT3.51/4/2000/Xp. As a matter of fact, that's what prevented Windows 2000 to be the real convergence between the branch of 95 and the branch of NT. Windows XP wasn't either, but by 2001 the stentch of Me was so bad that Microsoft allowed the branch to die.

Since the Operating System is so badly designed, so inadequate, some applications have to implement Operating System services themselves, and that lead to the problem of inconsistencies and mesmerizing bugs. For instance, where I work, six months ago we set up 100 recycled computers with a fresh install of Windows 2000 and Office Xp to serve as Internet/Word Processing/Presentation/Spreadsheet computers. For those computers we installed everything, Windows, updates, antivirus, anti spyware, etc. But soon enough the users began to report that the computers froze whenever they tried to save a file to diskette directly from one of the MS Office applications. We lost an inordinate amount of time trying to identify what seemed to be a virus, or spyware, until we realized in dismay that it was a bug the Windows Update Rollout 1 of Service Pack 4 for Windows 2000 introduced. It seems that Office doesn't use the operating system to deal with diskettes, but assumes directly the diskette management. That's preposterous, but very Windows-Style.

So, there are zillions of applications that misbehave in that fashion, thus, it will take months and years to make them work in an improved Operating System at 64 bits. It is not simply a matter of developing the Operating System and supporting all of the old API, but of getting the bugs reports to open new holes in the new OS so that the old applications can plug into those holes and run. Of course, some years down the road, the holes are still there, but it is malware what plugs into them, and the system is a nightmare of insecurity, until Microsoft decides that enough is enough and releases a Service Pack that cures some of those holes (while opening others, of course). That's what Microsoft has been doing ever since DOS 3.0.

What is the end result? -- Bloatware.

To use an analogy with cars, to carry all that bloatware, it would be needed an engine as powerful as a train, but in the envelope of a sports car. Only an AMD64 would be able to pull that trick off.