Monday, April 6, 2009

A Windows Moment and the Bigger Picture

Many people criticize Windows for its bugs. But sometimes there are deeper issues; design flaws. Follow along with this story and try to identify them.

I have windows XP also on my server (hegemon) as it is sometimes used for gaming.

I haven't booted it in a while. I plug in my wireless keyboard/mouse which I don't think I ever used on it.

So sure enough when I boot it up and it automatically logs in, it detects the new hardware and begins the long process of installing it. Were it to simply go to the login screen, it would have installed the wireless keyboard/mouse drivers automatically at that point. But because I automatically log in (like most home users do, although I have a password that will come up with the screensaver,) it wants to install all the hardware. It wants to install the PSC (printer) driver before the keyboard/mouse driver. However, the printer driver installation requires you to use a menu! It will not install the keyboard/mouse driver until you use the menu, but you need the keyboard/mouse driver to use the menu. I decide to go into safe mode as that will properly install the USB keyboard/mouse drivers if they are plugged in beforehand.
So I press the power button. It won't power off because Windows is waiting for an HP printer application to respond. So I do a hard reset. GRUB loads up fine and I can control it using my wireless keyboard. I choose windows and repeatedly hit F8, in order to bring it into safe mode. Doing that doesn't work. I then come up with another idea, use remote desktop.
That doesn't work. I believe it is becauase of a bug in the older nvidia drivers.
Finally I try one last thing. I plug in my old USB keyboard. It doesn't work. I tried the other unused USB port, and it finally works. I can control my computer with this keyboard only, which is enough to manipulate menus (alt + tab and tab are your friends) and cancel out of the printer installs. The wireless keyboard and mouse are then install.

So these are the design flaws I was able to identify:
1. A keyboard and mouse should not require a complex install. And if they do for some reason, it plugging them into a different USB port should not require a reinstall. On linux, installation of keyboards and mice are seemless and near instantaneous.
2. Windows should either install the essential hardware (keyboard/mouse drivers) before it gets to the graphical prompt or before the less essential hardware (printers). Linux does the former and probably the latter.
3. An application should not be able to prevent a power button from doing it's job. Or at least pressing it twice should override that app. You often need to power off your computer quickly if you hear a fan hitting something or if theres a thunderstorm. In Ubuntu 9.04, pressing the power button opens up the power off menu, which defaults to shutting off after 60 seconds.

The only thing I can say in Windows' defense is that XP originally came out in 2001 and design, and USB only started to become common around then. Design needs time to evolve. It's too bad Vista took design in a worse direction.