There are advanced settings in Windows, settings which normal users not only shouldn't be messing with, but which they arguably shouldn't even know about, because that would give them just enough knowledge to be dangerous. And no matter where you put that advanced setting, somebody will tell you that you are an idiot.
Here they are on an approximate scale. If you dig through the comments on this blog, you can probably find every single position represented somewhere.
- It's okay if the setting is hidden behind a registry key. I know how to set it myself.
- I don't want to mess with the registry. Put the setting in a configuration file that I pass to the installer.
- I don't want to write a configuration file. The program should have an Advanced button that calls up a dialog which lets the user change the advanced setting.
- Every setting must be exposed in the user interface.
- Every setting must be exposed in the user interface by default. Don't make me call up the extended context menu.
- The first time the user does X, show users a dialog asking if they want to change the advanced setting.
If you implement level N, people will demand that you implement level N+1. It doesn't stop until you reach the last step, which is aggressively user-hostile. (And then there will also be people who complain that you went too far.)
From a technical standpoint, each of the above steps is about ten to a hundred times harder than the previous one. If you put it in a configuration file, you have to write code to load a parser and extract the value. If you want an Advanced button, now you have to write a dialog box (which is already a lot of work), consult with the usability and user assistance to come up with the correct wording for the setting, write help text, provide guidance to the translators, and now since it is exposed in the user interface, you need to write automated tests and add the setting to the test matrices. It's a huge amount of work to add a dialog box, work that could be spent on something that benefits a much larger set of customers in a more direct manner.
That's why most advanced settings hang out at level 1 or, in the case of configuring program installation, level 2. If you're so much of a geek that you want to change these advanced settings, it probably won't kill you to fire up a text editor and write a little configuration file.
Joel's count of "fifteen ways to shut down Windows" is a bit disingenuous, since he's counting six hardware affordances: "Four FN+key combinations... an on-off button... you can close the lid." Okay, fine, Joel, we'll play it your way. Your proposal to narrow it down to one "Bye" button, still leaves seven ways to shut down Windows.
And then people will ask how to log off.