Checking out the 37 Signals website, I came across this little gem:
We believe software is too complex. Too many features, too many buttons, too much to learn. We build web-based products that do less, work smarter, feel better, and are easier to use.
I was immediately reminded of Dan Winship’s post from earlier this month about Novell Linux Desktop 10 and the software design process…. and of course about the GNOME Human Interface Guidelines, and how they begin with “Design for People.”
And that brings me all the way back to what I think are the origins of GNOME’s successful focus on simplicity and ease of use: the sad, cautionary tale of GNOME window management systems. The story, as I remember it, is as follows:
There is an individual program which controls the size and placement of windows in an operating system, and it obviously needs to interact with other processes: the ones running the applications themselves of course, but also the ones controlling menus, help systems, screensavers, desktop backgrounds, and so forth. For quite some time, it was believed (don’t ask me by whom) that Linux users would appreciate the ability to select different window management applications based on their preferences. Linux users are, after all, quite sophisticated and particular in their preferences. Some want to be able to drag windows to the edge of the screen and have an entirely new expanse of screen pop in to greet them; others demand obedience to what is known as Fitts’ Law. Some want only the barest edges to their windows, others the flashiest possible. Some wanted windows to wait for a click before appearing.
So, the GNOME desktop was designed to allow users to pick from a variety of window management systems. The most popular seemed to be Enlightenment, and as it added users it also added features. With each feature, it got more users, many of whom offered suggestions for new features. With each feature Enlightenment also got larger and slower and more complicated. Ultimately, it split off from GNOME to become its own ultra-customizable desktop.
In the mean time, someone wrote a new window management tool, called Sawfish. Sawfish was fast and simple and rapidly supplanted Enlightenment. The thing was, it really needed just one more feature. Or two. Just a couple options. A year or so later, Sawfish was became the same morass of dialog boxes and performance-sapping gewgaws that Enlightenment had been, although it did have a lot of the features individual people wanted.
Eventually, the code became so complex that only one or two people were capable of dealing with it, and even they had trouble. Bugs were incredibly difficult to track down, since they often appeared only with certain combinations of options. At one point, someone found a bug in the way that Sawfish interacted with the Linux kernel when using certain models of IBM Thinkpad– and only when the computers had been turned on while plugged in, but then unplugged (or was it the other way around?)
Finally, Havoc Pennington and a few other good people put their feet down, and built what everyone hopes is the last window manager for GNOME: Metacity. One key advantage is that it has fewer preferences. It is clean, fast, and effective, and Havoc and the rest of the people who work on it aim to keep it that way.
The moral of the story can apply to a lot of problems inside and outside of software: too many options can be as bad as too few; simplicity can be as desirable a feature as complexity.
Some people, of course, will always demand the maximum number of options. That’s fine. They know where to go.