Less Config: notes towards a nonmanifesto
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.
Definition
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 unusable and usable period.)
A rant
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.
The Problem
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.
Definition
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 unusable and usable period.)A rant
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.The Problem
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.

