Desktops: why bother?
In the past couple of issues I've talked about project dynamics, which has been rather one-sided, since I'm a member of the FreeBSD project. That's not the real thrust of this series, though: I want to talk about things that relate to all BSDs, not just to FreeBSD. Let's get back on track...

Losing the battle

A week or two ago, in an interview, Rasterman, the author of the Enlightenment window manager, gave the following answer to the question ``Where do you think the future lies for desktop Linux?'':

``Not on the desktop.  Not on the PC.  Not on anything that resembles what you call the desktop.  Windows has won.  Face it.  The market is not driven by a technically superior kernel, or an OS that avoids its crashes a few times a day.  Users don't (mostly) care.  They just reboot and get on with it.  They want apps.  If the apps they want and like aren't there, it's a lose-lose.  Windows has the apps.  Linux does not.  Its life on the desktop is limited to nice areas (video production, though Mac is very strong and with a UNIX core now will probably end up ruling the roost).  The only place you are likely to see Linux is the embedded space.  Purpose-built devices to do a few things well.  There is no encumbent app space to catch up with as a lot of the apps are custom written.  It's still a mostly level playing field.  This is where the strengths of Linux can help make it shine.''

Is it true?

I disagree completely with Rasterman. I've been using UNIX as my only operating system for over ten years now, as I was reminded a couple of days ago: I got a message from Norbert Weissbach enclosing a clipping referring to an article I wrote about configuring X11 in the German magazine iX in August 1992. That article was quite successful, and you can find variations on the theme (all in English) in my book ``The Complete FreeBSD'', here in Dæmon News (1999), elsewhere in the Open Group's The UNIX® System Today (2000), and even in Linux Journal (1995).

I did use Microsoft before I had a viable UNIX system, but those were the days before Microsoft's ``Windows'' had taken over. From time to time, in the course of my job, I need to run ``Windows''. I really hate it, and I have great difficulty understanding how people who understand computers can stand using it. Of course, a large number of people disagree with me, but that's what I can't understand.

But does it apply to BSD?

This was about Linux, of course. Does anybody think that this answer applies any differently to BSD? I certainly don't. Admittedly, some people claim that BSD is even less suited to the desktop than Linux, but I don't agree with that either. The issues that Linux has on the desktop are the same issues that BSD on the desktop has. Let's consider them:

Don't confuse ``complete'' installation with ease of installation. While writing this article, I installed a copy of Microsoft 98 on a spare 8 GB IDE disk. It was painful. If you're interested, it's in my diary for 29 July. I discovered that the installation wasn't even ``complete'': it didn't recognize my Ethernet card, and it didn't recognize the monitor or display card correctly.

What to do about it

Still, Microsoft does give a relatively complete desktop. We don't. We need to find a solution to that problem.

We have a number of options here. We can be like Rasterman and capitulate. Microsoft has over 90% of the world's desktops. But that still leaves a large number that don't run Microsoft. You can be pretty sure that the people who use them are, on average, more experienced users of computers than Microsoft users. A number of things are happening at the moment:

We continually see people who try out BSD or Linux, but far too frequently they go back to Microsoft. Some are people who are just unable to come to terms with computers at all. They come to UNIX because they can't understand Microsoft. They go again because they can't understand UNIX either. We shouldn't worry too much about losing these people: in a community where people help each other, they're just a drain on resources, and occasionally they become frustrated enough to cause a flame war.

Others, though, find they have difficulty understanding how to use the software. In many cases, you can't blame them. For the past few months I've been writing another column in Dæmon News, Trawling the Ports Collection, intended to show some of the highlights of the software available for BSD. In the course of investigating the products, though, I came across something surprising: I had great difficulty finding out how the products worked, in finding documentation for them, or in using them. If I can't use the programs, how do newcomers handle them? It's not surprising, under those circumstances, that people tend to go back to Microsoft.

Clearly we can learn from these differences. The installation process doesn't go far enough. It helps to identify four levels of installation:

It's this last step where we slip up. The BSD projects neatly differentiate between the operating system and the desktop, which is a good idea in principle. It's nice to be able to replace desktop components at will. But one of the results is that installing any kind of desktop becomes a problem.

For my book ``The Complete FreeBSD'' I have come up with a meta-port called instant-workstation, which installs a lot of other ports and does some minimal configuration. It's not going to cause Microsoft to go broke overnight, but it does install a lot of software. It still needs a lot of work, though.

The real problem

With only a little bit of work, then, it's possible to install something comparable with Microsoft, which can read and process files produced by Microsoft Word and Microsoft Excel. They won't do it as well, though: Microsoft doesn't document their formats, and the substitute software available for free operating systems, such as Abiword and OpenOffice, frequently make extraordinary messes of the documents.

But let's get back to why I hate Microsoft. No, it has nothing to do with their commercial background, not even with their unreliability or insecurity. In fact, I haven't had many reliability problems with Microsoft.

The real issue is that I think their whole paradigm is wrong. It goes back to what I was talking about in my very first Daemon's Advocate article nearly four years ago: the whole approach is illiterate. I never learnt to use ``Windows'' properly, so it seems clumsy and inadequate.

Another problem is that when migrating from one operating system to another, you need to relearn everything. This is even the case within relatively closely related systems, such as BSD. Occasionally I make a fool of myself by assuming that a particular feature in NetBSD or OpenBSD works in the same way as in FreeBSD. In the past couple of years I have done a lot of work with Linux, but I still find it extremely hard to adapt to. Microsoft drives me crazy.

People who come to BSD from Microsoft have the opposite problem: BSD drives them crazy. Many complain simply because it's different, of course. But others complain about things that we should have done something about. One of the problems goes back to earlier articles, of course: it's the developers who determine the direction of the projects. marketeers. While this has some advantages, it's also self-limiting. We need product managers who understand what less technical people need (but not necessarily what they think they want).

Part of BSD advocacy should be to teach better ways to do things. It should be a strength of BSD that you can introduce beginners to it using Microsoft-like tools and then allow them to migrate to more powerful tools. Unfortunately, things aren't quite that simple: many of the powerful tools don't exist. That doesn't mean we don't know how to make them, just that nobody has gone to the trouble.

Making better tools

UNIX was originally successful because it had a number of simple, straightforward paradigms. The file system is still unparalleled in any other operating system: thirty years ago it came across as a stroke of genius. Plenty of other people had tried other representations of files, but somehow they didn't quite make the grade. Modern office tools are similar: in particular, they have extended the menu paradigm to a point where it no longer works. If you use GUI-based software, how much time do you spend looking for specific submenus in a package you don't use very often? Parallel to this article, I also wrote one about web browsers. I tried Microsoft's ``Internet Explorer'' for comparison, and I couldn't find a way to set the default font size. It seemed to be hidden somewhere in a menu entitled ``Internet Options''. This is a rather extreme example of a place where you would not normally look, but it's typical of the kind of problem that the nested menu paradigm causes, and it's by no means limited to Microsoft: many of the GUI-based software packages for BSD have similar problems.

What should these better tools be like? They should be easy for beginners to use, for the obvious reason that they won't use them otherwise. On the other hand, they should not restrict experienced users the way the current crop of GUI software does.

What the desktop world needs is a couple of people of the calibre of Ken Thompson and Dennis Ritchie who will come up with a simple, clean, elegant and (in retrospect) obvious solution for the desktop. I don't expect it to happen soon, but in ten years' time something will have had to change. It's my bet that the current trend to integrate everything in one monolithic package, lucrative as it is for the vendors, will gradually go away and be replaced by smaller, interchangeable software packages. And isn't that exactly what BSD has been doing all along?