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.
Windows usability: followup.
Yesterday, I posted a blog post containing a list of issues with Windows, in response to a similar list for Linux, which has received quite some response; I've seen people +1 it on google+, and I've received a number of replies on the blog post itself. One of these replies was by the author of the original list; and as expected, he totally and utterly failed to see the point. He also has the audacity to claim I haven't installed Linux yet—what?!? The last time I used anything other than Linux on my personal machine for any real work was on Windows 98. And no, that was not because I was too cheap to buy the latest and greatest. I have used Windows in some cases since then, but never on my own hardware.
First of all, I should note that the list which I posted was only semi-serious (with tongue in cheek); the fact that it refers to Windows as the operating system which "attempts to replace Linux as the major operating system" should have been a pretty big clue to that effect. Like the original list that it was a reply to, my list contains things that are only true in a particular context (e.g., the one about requiring recent hardware), it contains things that don't matter for the large majority of Windows users (e.g., the point about focus-follows-mouse) but that are major arguments for why I don't use Windows, it contains things that are so alien to what most of us are used to that even most Linux users don't use it, while on the other hand some swear by it (like the SELinux argument), and it contains some things that a seasoned Windows user will call bullshit on but that are real actual problems for the non-seasoned Windows user that I am (such as the mouse argument). It also contains some actual facts, like the statement about most crashes being a direct result of faulty drivers—that's pulled directly from a scientific study on the subject conducted by Microsoft, together with some independent researchers. Like the original list, I don't expect this list to change anything for the better, precisely because it is flawed in exactly the same way.
But whether the items on that list were right or wrong isn't the point. This is:
Nobody (except nutcases) ever said Linux is perfect, or that it's useful for everyone; and while the issues Artem lists may be bugs or may be design flaws or any of a number of other things that could be real problems, the fact is that creating a long "list of issues" isn't going to solve anything.
If you find that there are problems with Linux, you basically have three options: fix the problem, get someone to fix it for you, or stop using Linux. Really.
Rather than better or worse, Linux is different. It will have its own set of problems, and it will have its own set of advantages. Some of the design decisions cause problems, but also have serious advantages, and focussing on only these problems (the existence of which I'm not denying) isn't very helpful.
A good example is the library model: under Linux, libraries are typically installed in a system-wide location, and use a SONAME which is (part of) the filename of that library and which defines the binary interface exported by that library. In contrary to the situation under Windows, Linux libraries also must use position-independent code.
The result is a more robust library model. The downside to that model, however, is that when you install older applications that require older SONAME versions of a particular library, getting those older versions may be a challenge. While in theory, installing an older version of a library is not going to cause any problem if the SONAME is different, in practice you'll often find that you'll need to go to (unsupported) older packages from older versions of the distribution, which may not install due to missing or conflicting dependencies, or which may expect data files in a different format in the same location that newer versions of the same library do, or which may have any number of other issues. When that happens, the solution is to either use an older version of the distribution in a chroot or some such, or to patch and/or compile the needed libraries yourself, and install them alongside the newer version of the same library. That's perfectly possible, after all, precisely because of the SONAME.
Another good example is the development model: where Windows has a central authority (Microsoft) which defines what it is to be "Windows" and what is and isn't part of that, the same simply isn't true about Linux. Yes, Linus defines what the official Linux kernel has, but he doesn't have any say about the user interface, the boot process, or any number of other things; other people make decisions there. As a result, in effect, who decides what it means to be a "Linux system" is, really, you, the user. If you believe that the Linux user space is completely wrong, you can just change it to something else entirely; and that's precisely what Google did when they created Android.
Since there's no central authority making decisions about what will and won't go into the system, this means that inevitably, at any given time, there will be many competing options for many subsystems. Usually this will be an advantage; e.g., the competition between KDE and Gnome benefits both. Sometimes, however, the competing options are so confusingly interwoven that even those who should know the system inside out can't make heads or tails of it, and debugging issues then becomes quite a challenge. Unfortunately, the Linux sound subsystem is currently an example of the latter.
I'm not saying that all the items in Artem's list are invalid; a minority are, in fact, actual problems for a majority of Linux users. Most however, are personal opinions, issues affecting only a small minority of Linux users, or, as above, things where he only talks about the downsides of a design decision that also has major advantages. As an example of something in the second category: it's easy, for example, to list hundreds if not thousands of issues relating to particular pieces of hardware that don't work under Linux, simply because the manufacturer doesn't provide any information, and the people developing drivers for Linux have to reverse engineer how everything works. If you're a bit careful in what you buy, however—much like MacOS users need to be careful, too—then using Linux isn't an issue. My Lenovo Thinkpad X220, for instance, has no parts that don't work; and this includes things like a docking station, and the fact that my (9-cell) battery life is over fourteen hours, which (I believe) is more than on the same laptop with the same battery under Windows.
So how is making a list of issues useful? The answer to that is simply, not at all. If you want to help, don't look for other people's problems; we can all do that. Instead, try to look for solutions to these problems. That's not always easy, and in many cases requires that you first understand why something is done in a particular way. If you don't want to spend time doing that, that's perfectly fine; but then don't expect that open source developers (who are already strapped for time, usually) will suddenly jump up and fix the problems you think are most important, as opposed to what they think should be worked on most urgently.
After all, most Open Source developers have their own sets of priorities what they think requires most work, and that's what they'll work on—not what's shown in a particular list by someone they don't know and have no reason to respect, somewhere on the Internet.
Finally, I'd like to note that any statement which claims that Linux isn't "ready" to be used on the desktop, when hundreds of thousands (if not millions) of people are using it in exactly that way for their day-to-day work, is insulting these people's intelligence. Since that includes me, it's also insulting my intelligence. And I don't like to have my intelligence insulted...
HELMo talk about Debian
About a month and a half ago, I got an email from someone studying at the HELMo institute for higher eduction in Liège, Belgium, inviting me to talk at their conference which was held today. In the email, they asked me to talk about "Debian and Open Source", which is such a wide subject that I could talk about it all day; and then they gave me 20 minutes to do it. So I picked "Debian", and focused a bit more on that, only to find out when I saw their schedule that they'd put "Open Source" there instead. Hrm. Oh well.
The talk itself went pretty good. I believe I managed a good balance between introducing Debian to those who've not heard of it before, and explaining to those who have, how this Debian thing works (or is supposed to work). The fact that the audience consisted of first- and second-year IT students made this easier (in case you were wondering: the third-year students, who're supposed to graduate at the end of this eyar, organized the thing). I got some interesting questions afterwards (which is always a good sign), and only positive comments as well (which is even better).
After me, Lionel Dricot held a talk which was titled "Pirate Party", but which could be summarized as his personal history into the open source world, followed by some parallels between the open source world and the pirate party.That, too, was an interesting talk, even if I'm not sure I'd vote for the pirate party (which isn't even possible in Mechelen, but ignoring that).
All in all, a nice use of my time.