A great many Linux/Mac/BSD enthusiasts declaim what is wrong with Windows and how their OS of choice addresses these issues. I, obviously, share something in common with these people because my system of choice is, for now, Gentoo Linux. What I fail to hear from any of them is this: what can be done to make Windows a good system. No, base it off of BSD is not a valid answer. Because that is not making Windows a good system, that is rebranding BSD. So, as someone who rides both sides of the fence, here is my list of things that would make Windows a much more comfortable system to use.

  1. Stability. "Windows XP is pretty good!" is the cry I typically hear right about now and it is correct. It is pretty good, but it still falls far short of what it could and should be. When a program hangs in Linux, I run kill -9 on it and it's dead. Under KDE, if you try to close an unresponsive program you will get a popup asking whether you want to terminate the program. If you do, the program dies--immediately. Under Windows, the computer still locks up as a whole (whereas it doesn't on Linux) and you have to try pretty hard to end a runaway process. "Do you wish to end this process?" Yes. "Are you sure?" YES. "Do you wish to end this process?" YES! YES! YES! PLEASE KILL THE DARN PROCESS!
  2. Shell. "It's the 20th century. Who wants to use the shell?" Well, I for one still like the shell. It has been pretty well proven that if you know the keys that the keyboard is still faster and, for those repetitive tasks, nothing beats the shell for scripting. Various attempts have been made at GUI scripting (Apple's pre-OSX AppleScript, Windows "offers" a little with VBA, and KDE offers DCOP), but none of them offer the ease and flexibility of shell scripting. The closest Windows has come to a shell interface is offering a DOS shell (before the killing of DOS) and a DOS emulator (after the DoDOS). I have taken to installing bash and Cygwin on every Windows box that I use consistently to handle this deficiency. The Windows PowerShell is mostly a bash clone (with some neat .NET interop features which are wickedly cool, going so far as to allow command line scripting with business objects stored in DLLs) and would do quite well. I would like to have seen PowerShell about ten years ago and packaged with the system by default. The existence of the DOS shell doesn't hurt Windows usability and I don't see why packaging PowerShell in its place should.
  3. Virtual Desktops. This handy dandy little tool comes on virtually every Linux desktop system and it is something that quickly integrated itself in my workflow. I use four desktops and usually sort my windows into them by task. I would really like to see genuine virtual desktops available in Windows. Even Mac has only provided half-hearted support for this feature and both have "borrowed" from the Linux/UNIX tradition. "What kind of crooks are you? If you're gonna steal, steal!" (unsourced; you'll have to figure out where it came from).
  4. Package management. Apt, Portage, Ports, and RPMs all offer an integrated way to manage software. With Windows, you see a plethora of installment packages each of which functions in its own special little way and uninstalls in its own special little way. It would be nice to coalesce these functions into one API and one stop. As a side note, it would also be nice to be able to grab Microsoft's free downloads from within this system by default. For example, as a developer I require (yes, require) .NET 2.0 and 1.1 and I plan to install the 3.0 SDK soon. When installing SQL Server Express 2005, I had to go out and manually fetch MSXML 6. Why on earth isn't it packaged with SQL Server or, at least, grabbed and installed automagically? Speaking of user friendliness...

My point here is explicitly not that Windows should morph into Linux or Mac. Rather, it should at least learn some real lessons about what is good in those systems and incorporate it into Windows.