Why Windows is not ready for general usage

There's this new Windows thing that people keep talking about, and which attempts to replace Linux as the major operating system. I've given it a look, but there's a wide range of problems with using it:

  • When you buy some hardware for your Windows machine, it hardly ever works out of the box: you first have to fiddle with some CD-ROM or manually (as opposed to through your software manager) download something from the Internet, or any number of other things (and in some cases even all of the above), before it'll even do anything useful. This is even true for keyboards and mice: the first time you plug in a USB keyboard to a Windows machine, it'll take about 30 seconds before they will work. It's much easier to have drivers for everything shipped with the operating system, so that things become really plug-and-play.
  • According to Microsoft, faulty hardware drivers are the main cause for Windows crashes. It would be better if Microsoft were to develop all (or almost all) hardware drivers for Windows themselves, like the Linux kernel people do; by doing this, the quality assurance for the drivers could be guaranteed as is the case for Linux drivers, and Windows users would have much a more stable system.
  • There is no public bug tracking system for Windows. What this means is that if you've got a problem with Windows that you'd like the developers to take a look at, you're out of luck.
  • Many Windows programs and drivers come with an "updater" which every so often checks online for newer versions of the software. While this is something Linux distributions also do, in Linux distributions this is done through a central updater; in contrast, Windows applications all have their own updater. The result is a situation where you have something like 5 to 10 updaters running in the background, eating memory and other resources, and slowing your system down.
  • Every major update of Windows since Windows 2000 has seen a complete overhaul of the user interface. As a result, everything you've learned goes out the door, and you have to relearn how to use the system all over again. This is about things like "where in the control panel is <foo>" or "what does my desktop look like"
  • Windows does not support focus-follows-mouse without manually calculating bit masks in a registry key.
  • Windows does not support virtual desktops without extra software.
  • If you don't like the Windows interface, it's almost impossible to swap it out entirely for something else, like you can switch from Gnome to KDE and back under Linux. Different people have different preferences, so should be able to swap the user interface for something that better suits them. This is child's play under Linux, and impossible under Windows.
  • While much of the Windows interface can be controlled without the use of a mouse, parts of it cannot be. If you're doing the same tasks every day, then using the mouse will slow you down; a keyboard is so much faster. Under Linux, it's perfectly possible to use the system without the use of a mouse, and without losing any functionality (except if you want to play games, but this list is about Desktop usage, not about game console stuff)
  • It is impossible to try out the new Windows without investing large amounts of money into a recent computer. In contrast, this blog post is being typed on a 7-year-old Macintosh PowerBook running a recent version of Linux.
  • It is very difficult to use a single Windows application (i.e., not an entire desktop) over the network. In Linux, you can just use SSH to log in to a server and start the GUI administration console there, but run your desktop environment (and whatever else) on your local machine. Windows doesn't have that, so you need to add large amounts of memory to Windows servers just so they can run a full (unneeded) desktop just so that you can maintain them.
  • Windows doesn't have mandatory access control subsystems like SELinux or AppArmor. What this means is that anyone who knows of a bug in a part of the system that runs with administrator or system privileges, has the ability to take over your entire system. With mandatory access control, this isn't possible. There is "Mandatory Integrity Control", but it uses a simplistic level-based system, and is only supported on the desktop; so on servers, where it would be most needed, this isn't available.
  • Windows cooperates very badly with other operating systems. If your company has a hybrid environment, you'll always need to special-case the Windows systems in the environment for one reason or another. What this means is that if you're the first user in your company to use this Windows, you'll probably not get much work done.
  • The new Windows only runs on the x86 processor family. If you have invested in, say, a mainframe, or in a rack full of PowerPC or MIPS processors, you're out of luck and had better stuck with Linux instead.
  • Windows has bad backwards compatibility. When I have this old Linux application that I still need to run for one reason or another and which doesn't run on a recent Linux installation (which is very rare in and of itself), I can install an older version of Linux in a chroot without having to run a full emulated machine, and the older application can then run in that chroot. Windows has a "compatibility mode" for older applications, but it doesn't work in all cases; when it doesn't, you would need to run a full virtual machine in which you run the older Windows just so you can run the older application. That's just a terrible waste of resources. It's also not possible to do this without installing extra sofware.
  • The standard Windows installation doesn't contain a lot of software. there is a basic word processor, but it doesn't have many features. There are almost no games, other than a few boring card games. There is a graphics editing program, but its feature set is fairly limited.
  • Unbelievably, you need to pay for most Windows software. This is just strange; you can do many useful things on a Linux system without ever having to pay anything for off-the-shelf software. While some of the tried and true Linux software that we all know is now also available for Windows, if you want to use, e.g., Microsoft's productivity suite, you'll have to pay for it.
  • Speaking of that productivity suite: there's a well-designed and widely accepted open standard, called ODF, describing the file formats that productivity suites should use. Yet, Microsoft chose to design their own; their description of this file format encompasses more than 5000 pages, and is in general fairly badly documented. What this means is that once you start using Microsoft's productivity suite, you'll have a very hard time moving away from it again. I recommend against ever starting to use it in the first place
  • And last but not least, Windows doesn't come with the source code. What this means is that you can't just look at the code and learn how things are done, or develop your own extensions, or audit the code for bugs, or any of a number of other things that you'd want to do with a regular operating system. Instead, you'll have to trust that Microsoft did the right thing, and beg, hope, and pray that they'll fix your bugs if you ever need to. I'm not sure what the hell they were thinking when they decided that.

In short, while this Windows thing has some promise, the above list shows that there's clearly still quite some work to be done before anyone can even think about starting to use it seriously. Hopefully the Windows developers will understand that and work on the above list of serious issues; otherwise, I'm afraid Windows will not be used by many people.

Update: before you go all berserk and start commenting on this list, please read my followup to this post, which explains the point I was trying to make.