Coté replied to my comment.
The more I think about it, the more I think there's room here for a position statement -- if not a manifesto -- on the subject of configuration and configurability.
Configuration is what you have to do to get the thing you have to work the way you want. Examples: telling your newly installed Unix box what its hostname is and where its name servers are. Setting HTTP proxies for your browser. Entering account information into your mail client. Adusting the seat and mirrors in your rental car. Configuration takes a system from a state where it's less usable to a state where it's more usable. (Sometimes, the difference is between un
usable and usable period.)
Before we get any further, a rant: I hate configuration. Every time I have to distract myself from my actual goal for the day to twiddle a setting so things work, a little piece of me dies. Every time I have to think about my tools rather than thinking about the problem I'm trying to use them to solve, I get peeved. When I finally get everything working, there is
a sense of triumph -- but it's bittersweet, since it came as a result of things Not Just Working. I want things to Just Work. I hate it when things get in my way, and I hate it even more when it's for no good reason.
And that's the meat of my position: There's at least 3 kinds of configuration. (I'm open to suggestions on what the others are.) There's the configuration that's necessary for identity and security -- there's no way Thunderbird or Gaim can know how to act on my behalf if I don't tell them who I am. There's the configuration that results from there being more than one good way to do something -- situations where your user community is split about what the best way is. And there's configuration that results from developers being unwilling to make decisions about what the best way is.
The first kind is a necessary evil. Security and usability are almost always diametrically opposed, since after all the whole point of security, and its siamese twin authentication, is preventing people from doing things. Don't get me wrong, though; it is an evil
. That's why people who know how to do it set up certs so they don't have to type their passwords in to start ssh sessions, and the rest of us security-ignorant masses set our mail clients and IM clients and browsers to remember our passwords. I'm just checking my bank balance, get out of my way with this password crap!
The second kind is debatable. Sometimes it's ok; most designed things should afford some sort of personalization, since human beings aren't all the same. It doesn't affect the function of my computer, but the ability to make my taskbar and window borders silver instead of blue makes me happy. However, sometimes it's not:
Windows and OSX let you move the taskbar/dock around, with the end result that on some people's computers, that basic piece of UI infrastructure is not where I expect it to be. Which means that it might as well not be there at all. And don't even get me started on the ridiculous state of affairs in GNOME and KDE.
The third kind is inexcusable. Luckily, it's mostly avoidable -- in desktop software. But for some reason, Enterprise Software has all sorts of bells and whistles and knobs and frobs and controls that you have to set just exactly right
or nothing works, and the factory defaults are useful to nobody
. Sometimes it goes away as products mature, if the development staff gets -- and uses -- advice from the field about what the correct ways to set things up are. Sometimes it doesn't, and the company makes its money in two phasees: first it sells you its unusably complex software, then it sells you person-years of consulting time from one of the twelve people on the planet who understand the software well enough to configure it properly. In fact, I'd go so far as to say that's one of the defining (mis)features of Enterprise software, much to all our detriment. For some reason, large customers feel better
about their purchase when it's difficult to implement.
It doesn't have to be that way. Unix is finally escaping its high-configuration heritage with Linux distributions like Gentoo and Ubuntu that don't require 40 hours of grovelling around in config files and newsgroups to get sound and accelerated video working; Windows and OSX are now easy enough that most people can do their day-to-day jobs without ever having to care about the operating system they're running on. Google and the rest of the Web 2.0 scene understand, almost at a subconscious level, that things that Just Work are better, even if they have a more limited feature set to start with. Sun's learning this too; we're trying, with things like the Network Auto-Magic project
in the approachability community of OpenSolaris
and some upcoming services
from my group (among many other things!). But we're nowhere near there yet. Luckily for us, neither is our competition
-- but that just means we have a chance to get a real leg up.