No matter where you put an advanced setting, somebody will tell you that you are an idiot


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.

  1. It's okay if the setting is hidden behind a registry key. I know how to set it myself.
  2. I don't want to mess with the registry. Put the setting in a configuration file that I pass to the installer.
  3. 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.
  4. Every setting must be exposed in the user interface.
  5. Every setting must be exposed in the user interface by default. Don't make me call up the extended context menu.
  6. 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.

Sidebar

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.

Comments (127)
  1. Gabe says:

    I guess it’s hard to come up with a design that all 1,000,000,000 of your users are satisfied with.

  2. Karellen says:

    ‘Joel’s count of "fifteen ways to shut down Windows" is a bit disingenuous, since he’s counting six hardware affordances’

    Hmmm….he’s accounting for affordances that map to different Windows options. The laptop mfrs only put them there in the first place because Windows has those concepts.

    If Windows got rid of the differences between lock/sleep/hibernate/poweroff then laptop mfrs wouldn’t need the 4 different key combinations to service them. You’d just have the lid-close mechanism, a single fn-key or power-button style ‘bye’ button for if you want to quickly switch users (closing the lid and reopening it to switch users would be a bit clunky) and the Windows ‘bye’ button to hit with the mouse.

    But yes, people will still ask how to log off. :)

  3. Bryan says:

    Karellen:

    The issue is that there is a difference between Lock, Sleep, Hibernate, and Poweroff.  Really, how are you going to minimize them?

  4. anon says:

    @Bryan: I think Joel’s point is that there is NO difference between these options. For a typical user, all they know is "Bye". What Bye does internally is a black box, and it is a leaky abstraction that you have all these terms that are basically incomprehensible.

  5. Triangle says:

    Obviously the solution to this is to add a setting to select what method the advanced option is enabled by.

  6. James Schend says:

    If PC laptop makers could make their laptops sleep worth a damn, you wouldn’t need any of those. It could do what Apples do, go into sleep by default and save hibernate for when the battery’s low. Then again, Apple laptops can sleep for something like 5 days before they even come close to running out of battery juice.

    On my HP convertible laptop, sleep mode only uses a little less power than On, and runs the battery down in no time at all. It’s pathetic. And if you call them to complain, they blame the chipset maker (AMD), then they blame the video maker (ATI), then they blame the BIOS (Phoenix)… tell you what, HP, if you’re selling the damned machine why not take a little responsibility for your work and just get it fixed?!

    On a well-designed laptop, you’d need three shutdown options:

    1) Logout

    2) Sleep/Hibernate

    3) Shut Down (with restart maybe as an option, maybe)

    Sorry for the rant.

  7. David Walker says:

    If I remember correctly, in the early days after Windows 95 went public, Microsoft’s position on the Registry was that user modifications to the Registry were not supported.  Period.  And shouldn’t even be attempted.  

    There was no official documentation on how to modify any of the Registry settings.

    Nowadays, the relevant KB articles say “back it up, and modify it at your own risk”.

    As for sleep/hibernate, I don’t know the difference, and I don’t think I should have to.  It does seem like a leaky abstraction.

    In the animal kingdom, hibernation is a long, deep sleep.  Is that analogous?  (I hate analogies.  Analogies are like feathers on a snake.)

    [Unfortunately, physics is an abstraction you sort of have to leak. You don’t want a user unplugging hardware while it’s still receiving power! (Oops, bumped my mouse, oh crap, I just fried my $200 video card.) -Raymond]
  8. Keith Bertelsen says:

    Personally, I would rather it stay around stages 2 or 3. Having to edit a configuration file can be annoying, but is an adequate solution, since I can transfer those settings to another computer easily (not the case with registry keys).

    Having it exposed somewhere in the UI, even if in an "Advanced Options" dialog, would really be my preferred way of doing it, but I can appreciate the cost/benefit analysis.

    However, in either case, I as a user would like documentation (especially with the configuration file) on what that option is and what it does. After all, .htaccess files work for most people, but they do no good if there’s not the documentation on what you can do with them.

  9. Csaboka says:

    David: There is a difference between sleep and hibernation that’s important to the user, too. Going to and waking up from sleep is a very fast thing, it usually takes the time needed to spin up your hard drive(s). Hibernation is much slower because it dumps all your RAM to the hard drive, then does a full power off, which means that you need to read all that back to memory when waking up. Sleeping takes more power than hibernation, too, because it has to keep the RAM powered to keep its contents valid.

    You could of course merge these two options like "sleep for N minutes, then hibernate", but then the wakeup process will seem arbitrary (sometimes fast, sometimes slow, depending on how long your computer has been in the new, merged mode).

  10. Rich says:

    My XP system fails to shut down about one in three times (hangs on saving settings).  It also fails to login about the same (login dialog reappears, message is logged).  These both appeared in the last couple months after Windows updates – having run two years with no problems. One, maybe both, have hotfixes listed but what a pain that I’d actually have to call Microsoft support to be told how to download them…

    Anyway, regarding the first, I can always enter standby without error – and fast too – so that’s what I do rather than shutting down.  Then I turn the power off at the power strip.  It avoids the frustration of dealing with the lockup and the end result is close enough to the same.  Of course I don’t do this with apps/documents open.

  11. Bryan says:

    Karellen:

    I actually read that blog entry a long time ago when it was originally posted and disagreed then.

    Firstly, Sleep mode is not guaranteed.  If your system goes down for whatever reason, there’s no guarantee of the data that was in-memory.  Hibernation does not have that issue.

    Typically, you can trust it, but the point of that option dialog is to give advanced options.  Why in the heck would you hide the advanced options?

    Joel is effectively complaining because the Advanced option isn’t simple and thus goes on  a rant about he’d like to have a 1-size-fits-all button.  Sure, I wouldn’t mind it either, but the point still remains:  what do you put there?

    Unlike Macs, PCs cannot guarantee the architecture or specifications of their systems.  Therefore, it’s near impossible to put a 1-size-fits-all button on the dialog.  An OEM could customize that I’m sure.

    For example:  What do you do when the PC doesn’t support Hibernate?

  12. interested bystander says:

    To David Walker – Animal hibernation is quite a good analogy.

    In normal CPU sleep mode, everything is basically in a low power mode waiting to be woken (hence why its also called stand-by).  This uses some power but hopefully not much (if the hardware and bios and OS can all co-operate nicely).

    Hibernation takes longer to get into and longer to get out of, plus it uses no power while you’re in there.  Your machine state is suspended to local storage and then powered off completely.

    When you power on again, the stored system state will be loaded.  This can be quite a lot of data and so resume times from hibernation are often as long as a full boot, however you do retain your workspace context.

    For my money, there are 2 options at most for power control:

    1. I want to stop using this computer.
    2. I want to turn this computer off.

    You may need to log out and back in for example if you have an expired password and want to refresh your user tokens (or whatever they’re called).  This is completely separate (IMO) from power control and is about user sessions.  Fine, put the button next to the power control button in the gui if you want to, but don’t conflate the concepts.

    When I want to stop using the computer, I don’t care if it goes into sleep or hibernates, so long as it’s silent and produces no heat while it’s notionally off.  I think apple’s solution here is great  – go to sleep, then hibernate when power gets low.  The main thing is that the user context should be maintained.

    Rebooting could be considered a special case of turn the power off – it’s merely a shortcut to indicate that you intend to turn it back on again.  There are millions of ways you could choose to indicate this to the computer.

    I only ever restart due to a bad driver or a patch. (and because sleep never wakes on my desktop :-). The patch installer can tell me it wants to reboot and give me a button to click once I’ve saved everything I need to.  For instability, I can just turn off and back on again.

    It would be simpler, but I’m sure a lot of people would whine.

  13. interested bystander says:

    damn, forgot a bit in my haste to go home tonight.

    I have no objection to an advanced options page for this or anything else, so long as the function is clear to ‘advanced’ users.

    My point is just that if the defaults can be carefully chosen to fit into a reasonable abstraction which can be explained easily, then most people will ‘get it’, even a lot of the terrifying cases we all see daily.

  14. David Walker says:

    [Unfortunately, physics is an abstraction you sort of have to leak. You don’t want a user unplugging hardware while it’s still receiving power! (Oops, bumped my mouse, oh crap, I just fried my $200 video card.) -Raymond]

    Well, then I need to learn whether devices are receiving power when the computer is sleeping or hibernating.  I would think devices are not receiving power in either state.

    I could be wrong, though.

  15. David Walker says:

    Csaboka:  I can never remember the details; that’s my point.

  16. Joshua says:

    @James Schend: Vista has a new sleep feature, Hybrid Sleep, which preforms a hibernate (saving the RAM to disk) and then entering sleep. If you wake it up, it comes back instantly (as fast as sleep did) but if it looses power, it’ll restore from the hibernation file.

    Sort of takes care of both don’t you think?

    [Unless you’re on an airplane, in which case you have to go to a fully-powered-off state; Suspend is not good enough according to some airlines. -Raymond]
  17. David Walker says:

    Oh, it’s how Sleep and Hibernate differ from Stand By that confuses me.  I forgot what it was that I couldn’t remember.  I have no idea what Stand By does.

  18. AdamT says:

    @David Walker:

    The devices receiving power depend on which sleep/hibernate mode the computer is in, and what support the devices have for ACPI:

    http://en.wikipedia.org/wiki/Advanced_Configuration_and_Power_Interface

  19. William says:

    I think sleep should be called nod-off, daydream, nap, or workus-interruptus.  Hibernate should be called "I may be back" or "When I get around to it" mode.

  20. J says:

    I guess I’m in camp 3, where I like to see advanced stuff in extra dialogs.  Ironically, I usually leave advanced settings unexposed in my own software and you have to edit a config file.

    And I’ve always disliked and disagreed with that JoS article.  First, as Raymond eluded to, Joel is complaining about the "advanced" button, which is next to the magical "goodbye" button.  If you want to tell your grandma how to shut down the PC, tell her to click on the basic button.  Since I’m not going to pick apart his argument on Raymond’s blog (and I didn’t on Joel’s when he posted it, so oh well), I’ll part with this:

    "iPods don’t even have an on/off switch."

    No, but they certainly do expose an advanced option for users who want to power off the device immediately!  They understand that sometimes you just want to use zero power (and no, Joel, power management software is not smarter than me).

  21. Thom says:

    With solid state and flash based drives on the horizon, perhaps this will be a moot point soon.  Or maybe motherboard manufacturers will start to include a small (system memory sized) flash device on-board that can be used just for this purpose – near instantaneous and zero-power storage = no more need to differentiate modes.

    More on subject.  I like the policy editors, though many could use more descriptive text, and I love TweakUI.  If I could have my wish it’d be that one or the other of these would be made extendable where we could catalog and manage the advanced settings we find and choose to use.  Give me the option to add a group of "descriptive texts, registry keys, and default settings" for each tweak.  Even better make these available for download from KB pages or from .reg files.

  22. Yuhong Bao says:

    As an example, there are many features in Product X Version Y that are in all Product X products, but have no UI in Version Y!

  23. Bryan says:

    I really liked the concept of TweakUI.  Something that exposed Advanced Options that wasn’t part of the main OS redist.

    Definitely a good concept for altering your system since it’s completely opt-in.

    On the other side, though, it’s hard to find information about Tweak UI without knowing about Tweak UI.

  24. Peter Ritchie says:

    "No matter where you put an advanced setting, somebody will tell you that you are an idiot", I think this is a corollary of "you can please some of the people some of the time but not all of the people all of the time."  When it comes to Windows, the people who aren’t please seem to be more vocal about it :-)

  25. There’s one other level of settings: those that need a kernel rebuild to get picked up. Unix used to swear by these; there’d be a useless version of CC on every sysv box just so that after changing the header value of MAX_OPEN_FILES you could build the static file table with a bigger array.

    I don’t know how many bits of windows have such a design, though linux definitely requires you to rebuild the kernel if you want some fancy feature (say 1394 or Wifi). I think they’ve taken the view that because you have the right to build a new kernel, you have a duty.

  26. Cooney says:

    However, the key underlying issue is the Registry, or specifically that companies use the Registry to store application settings, which is sickening.  It leads to a gigantic registry which is a central point of failure for the entire system.

    You mean like the filesystem? The problem with the registry was that the win95 version was crap and that backing the registry up is a royal PITA. I’d like app or perhaps specific registry hives so I could easily move my settings to a new computer, but I’m not holding my breath.

    it’s hard to find information about Tweak UI without knowing about Tweak UI.

    This avoids the problem of people who shouldn’t use it using it (mostly).

    Well, then I need to learn whether devices are receiving power when the computer is sleeping or hibernating.  I would think devices are not receiving power in either state.

    DAvid, that’s why we have different buttons. Lock/sleep or hibernate/Power off is about as simple as you could reasonably make it.

  27. Joel Eidsath says:

    Speaking as a system administrator, the well-known user hostility of the registry isn’t actually much of a Windows feature. It’s a legacy issue that will hopefully be fixed one day.

    And for my job, the most important part of advanced (or any) configuration options is that they be easy to modify with a batch or perl or powershell script.

  28. Cooney says:

    Unix used to swear by these; there’d be a useless version of CC on every sysv box just so that after changing the header value of MAX_OPEN_FILES you could build the static file table with a bigger array.

    Modern unixes don’t require a cc for this – they have a /proc setting for it instead. I believe the reasn that cc you refer to was so useless was so Sun could charge $$ for the full version.

  29. SuperKoko says:

    I don’t care whether it’s at level 1 or 5.

    I think that level 6 and higher should only be reserved to options the average user is likely to care of (and I know that beta-testers know better than me), as they’re user-hostile.

    However, I like that options at level 1-2 be exhaustively documented somewhere on vendor’s website.

    For "testing" features that may not appear in future versions of the software, I understand that Microsoft don’t document them, because, whathever huge "UNSTABLE, may not be supported in future" warning they put, people will complain when Microsoft "breaks" backwards compatibility.

    About the ways to "shut down" Windows. Please, don’t remove any option (putting them deeply hidden in menus isn’t a problem for me).

    Administrators and advanced users DO need them. Windows isn’t only an OS for dumb users. At least the "Professional" and "Server" versions.

    The "fast user switching" of Windows XP is a very clever thing, in my opinion, to make session management easy for grandma.

    BTW, dumb users don’t use sessions at all. They use "automatic logon as admin".

  30. Chris says:

    I dont mind the popup menu for shutdown options, I just dislike that the colored power button next to the lock isn’t shutdown. A power button, to me, doesn’t mean (from tooltip) "Saves your session and puts the computer in a low-power state so that you can quickly resume working."… it means "off".

  31. ulric says:

    Actually, the power button on most electoric devices, for example tuners and tvs, do put the device in Standby and not completely off.

  32. Cooney says:

    I just dislike that the colored power button next to the lock isn’t shutdown

    Do you mean the red (candy-like) button or the yellow one?

  33. MS says:

    I would say the design for the power options works better than people are making it out to be.  If you want simple, you’ve got a Power button and a Lock button.  There’s your two idiot proof choices, and over here is your semi-advanced user drop down.  If you’re the entry level user just hit the big red shiny button and you’re good.

    I don’t know if this is true for all installations, but Windows’ power settings means you can get the phased shutdown/hibernate.  My XP laptop on battery power doesn’t even bother with a screensaver and goes right into sleeping and then into hibernate shortly thereafter.  

  34. wtroost says:

    As for sleep/hibernate, I don’t know the difference, and I don’t think I should have to.

    Hibernate works in the winter, and sleep when it’s night.

  35. Davide says:

    100% right!

    People always has to complaint, and in this case I think that’s not good for innovation!

  36. Stephen Spence says:

    What about the strange key combinations needed to activate hidden features? Shift and control when deleting offline files to re-cache the CSC under XP’s offline files is a great example. There are too many places to look, surely some simplification is possible?

  37. Xepol says:

    Anyone remember early Macs?  

    I seem to recall that everyone hated trying to get floppy out of drives on the mac because there was a single way to do it, and if the power was off, there were zero ways?  (unless you bought what was essentially a slimjim for your floppy drive to pry that sucker out of there…)

    I don’t recall people, not even the fanatical apple hoards, being very happy with their lack of options in that regard…

  38. Evan says:

    @interested bystander: "When I want to stop using the computer, I don’t care if it goes into sleep or hibernates, so long as it’s silent and produces no heat while it’s notionally off."

    And noise. It always bugs me that my computer leaves my fans on when I put it to sleep. Makes it completely worthless.

    @david walker: "Well, then I need to learn whether devices are receiving power when the computer is sleeping or hibernating.  I would think devices are not receiving power in either state."

    Hibernating: no. This is powered completely off. Sleeping? Yes. At least RAM and your motherboard. (Hopefully that is all.)

    (Or are you saying you would think it’s unpowered if you were an average user and you knew this?)

    @J: "(and no, Joel, power management software is not smarter than me)."

    Exactly. Power management software is going to have a hard time knowing the future. I often do.

  39. AC says:

    I think I’d hate Joel’s one-size-fits-all Bye button as much as I hate Apple’s one button mouse.

    I do want to control if the laptop still consumes power. Even if Mac can sleep for 5 days before draing the battery, I’d rather have it simply hibernate.

  40. GRiNSER says:

    Product ABC programs are a horror sometimes: everywhere you can press alt or ctrl to get something you didn’t even know of!

  41. Cooney says:

    Product ABC programs are a horror sometimes

    Heh, I can think of 4 or 5 apps that this could fit :)

  42. MS says:

    "Product ABC programs are a horror sometimes: everywhere you can press alt or ctrl to get something you didn’t even know of!"

    There is a *nix text editor that does this by design even!

  43. chrismcb says:

    Great blog Raymond.

    One problem though is there are different levels of advanceness. I think the more advanced a feature is, or the fewer people that will use the advance feature, the less support you need to provide. Throw it into a reg key.

    But a less advanced feature, that many people might use after learning a thing or to, should have it surfaced more.

    And NO not everything should be on the top level menus.

    As for all the ways to shutdown a computer, there is only ONE that doesn’t use power. Shutdown. Sleep and hibernate both use power. Sleep will drain a laptop’s battery in a day or two. Hibernate in about a month.  While I agree with Joel’s concept, I disagree that there should be one option.

  44. Matthew says:

    > Firstly, Sleep mode is not guaranteed.  If your system goes down for whatever reason, there’s no guarantee of the data that was in-memory.  Hibernation does not have that issue.

    The new low power mode in Vista (where it both Sleeps and Hibernates at the same time) is quite a clever idea.

  45. Matthew says:

    > As for all the ways to shutdown a computer, there is only ONE that doesn’t use power. Shutdown. Sleep and hibernate both use power.

    You are mistaken. Hibernate uses no power. You may want to read up on what Hibernate actually does.

    (Don’t believe me – hibernate your laptop. Then remove the battery. Then put it back. Then boot up again.)

    For most users they should be using Hibernate over Shutdown since you get faster boot times with Hibernate – and you don’t need to worry about saving documents etc.

  46. Csaboka says:

    chrismcb: Now I’m getting interested. How does the hibernate function use power? As far as I know, it’s just a memory dump combined by a power off, so it shouldn’t need any more power than power off…

  47. Evan says:

    @chrismcb: "Sleep and hibernate both use power. Sleep will drain a laptop’s battery in a day or two. Hibernate in about a month."

    If hibernate uses power on your computer, I suggest you ask for your money back.

    (BTW, ever notice how being completely off depletes your battery? Remarkably, it’s at about the same rate that being in hibernate does.)

  48. Stephen Jones says:

    Two separate points here. Firstly there is a difference between standby (sleep) and hibernate. You would use standby on  battery power if you leave the laptop for a few minutes but don’t want to waste five minutes whilst it restores from disk. Hibernation is what you would use for a longer period of time, particularly if your BIOS is set to S1 standby instead of S3 (it’s surprising how rarely people are informed of the difference  or the fact it can mean up to a hundred dollars a year in saved electricity bills).

    Lock is what you do when you go out of the room for a minute.

    I think Joel has chosen a bad example here. People who don’t know the difference don’t care; they click one setting at random and that’s fine for them; stressful indecision it ain’t.

    Going back to the main point about configuration, leaving settings to the registry is fine if it is a piece of software with a very limited user base which does not provide enough income to do it properly, but the fact is that most software doesn’t have a description of registry settings to change. Even the about:config you get on firefox is highly user unfriendly.

    The answer is nearly always a decent interface on Tools|Options|Advanced. Not having the money to build it is a reasonable excuse. Pretending it is not the best solution is not.

  49. Peter says:

    @Steve: "linux definitely requires you to rebuild the kernel if you want some fancy feature (say 1394 or Wifi)."

    Maybe if you’re using some distribution that doesn’t include support for either of those; but it’s normally pretty clear what you’re getting into with one of those…

    On the other hand, heaps of stuff can be built as modules and loaded on the fly. Not sure if you can do that with those examples, but you could certainly do a particular wifi driver without a reboot, assuming you already had wireless support in there.

  50. Gabe says:

    I think Joel has come up with a great design which sounds good on paper, but would never work very well in real life.

  51. Cooney says:

    Steve> linux definitely requires you to rebuild the kernel if you want some fancy feature (say 1394 or Wifi).

    Not really. Linux requires that the drivers be present, and most of those are distributed with the kernel. ‘make modules and make modules_install’ will get you the drivers, at which point you can use the fancy new hardware. Don’t even have to reboot.

    Of course, a binary driver interface would help a lot, but that’s a different discussion.

  52. Karellen says:

    Bryan > Did you /read/ Joel’s essay? The point of the essay is there should not *need* to be a difference from the user’s point of view on a laptop (and possibly desktop) system.

  53. AK Wong says:

    I also disagreed with the JoS article when I read it. Clearly, Microsoft knew that a long list of shutdown options was confusing for the user, so they simplified it down to TWO: one locks the computer, the other is basically Joel’s "b’bye" button. But they also needed to provide a way for advanced users to access the other options if necessary, so they put it in an advanced menu. If it’s confusing, use the two buttons and don’t open the advanced options menu. If you need a specific command, they’re all right there, in one place. What is so hard about that?

    The many choices for shutting down aren’t for "making everybody happy". The simple fact is that turning a PC off is far from straightforward. Just look at the discussion on this page about all the different methods! It’s just the way PC hardware works. If all computers could turn off and on instantly like Palm handhelds, there would be no problem, but they don’t. And that’s not Microsoft’s fault.

  54. MS says:

    If you want confusing power options, try Linux.  For a certain GUI shell, you have to select "Log Off" to get the option to power the machine down.  If you’re trying this from the command line, good luck.  shutdown won’t actually turn you computer off without the -h flag which is so easy to forget.  So I’d certainly give credit to Windows for making it, you know, sane.  But I’m digressing.

    I am so glad Windows got rid of the intermediate "select session/power action" dialog that came up.  (Not to mention how much faster shutting down is!)  Vista is such an improvement in the UI here.  Of course, the invuluntary WinKey, U, enter combination was so hardwired into my brain that I tried it on Vista quite a few times.

  55. slab says:

    @Xepol: Yeah, but that’s true of CD drives nowadays on both Mac and PC hardware– you can’t eject the disc without power. Or a paperclip.

  56. Will Hughes says:

    Joel’s complaints about having the "advanced" power/session options menu really bugged me when I read the article some time ago.

    I notice people reiterating the call for just one or two buttons. Vista already provides this – a "Lock" option (locking the screen) and a "Power" option (the hybrid suspend/hibernate).

    If you’re someone who needs to specify "No, turn off" – you’ve also got that option with the advanced menu. There are legitimate reasons why you’d need to specify that it must shut down. As Raymond mentioned – boarding an aircraft, but also when modifying hardware configurations/etc. (Whilst hardware might be "Plug ‘n’ Play", you still don’t want to be yanking a video card/ram/etc whilst it’s powered on)

    There are also reasons why you need a "Lock" option – every time I walk away from any work PC, I lock the screen. It prevents anyone unauthorised from potentially seeing confidential, or making modifications/sending email on my behalf/etc.  In these situations, putting my machine into a sleep state isn’t satisfactory – I quite often have things running in the background which I want to continue (file transfers, report generation, encoding, stress/volume testing, etc etc)

    So, please, just because you don’t need all the options, doesn’t mean that noone else does either.

  57. Mike Baz says:

    I read Joel’s post as well when he first posted it.  Every post he does is in one of two categories, dead on or mind-numbingly idiotic.  There really is no middle ground for him.  This is an example of the latter.

    Vista has two main buttons, as someone said earlier.

    The idea that I couldn’t choose what to do if I want to is crazy.  Right now my current video driver borks hibernate on my machine.  Luckily I can control the result and not hibernate.

    And Raymond’s point about airlines is absolutely right.  If some of them see a light even, they go apeshoot on you.  I’ve been there.  Sleep is not sufficient or appropriate in those cases.

    But back from the sideline to the main point.  It’s a valid point and unfortunately there is no good answer – just answers that make n% unhappy where n is enough to cause pain to Microsoft no matter what they do.  Having a product people really care about is hard.

  58. Chris says:

    The question I wish someone would ask is this:

    Why should it be orders of magnitude harder to implement dialog boxes (or a parser)? There are thousands in Windows. There may be perfectly valid reasons why each word must go by legal/i8/management, but it seems like this is exactly the sort of repeatable process that needs streamlining the most (especially if the design is prone to change).

    [Try it yourself. Write a dialog box. Now write a line of code that does RegQueryValue. Compare. Even with the legal/i8/management overhead down to zero, it’s still an order of magnitude more work. -Raymond]
  59. Thom says:

    > Why should it be orders of magnitude harder to implement dialog boxes (or a parser)?

    Localization is probably a big reason.  All those languages, all the translations, all the possibilities for errors that could confuse or offend…

  60. James Schend says:

    @James Schend: Vista has a new sleep feature,

    Hybrid Sleep, which preforms a hibernate (saving

    the RAM to disk) and then entering sleep. If you

    wake it up, it comes back instantly (as fast as

    sleep did) but if it looses power, it’ll restore

    from the hibernation file.

    >

    Sort of takes care of both don’t you think?

    That’s brilliant, but why go through the effort of telling me this without telling the number one most important thing: How to activate/use it!?

    Hybrid Sleep definitely isn’t in the menu of my brand new HP convertible running Vista, so if it’s there, how do I work it? If Vista has that feature, it should be on by default. But I’d still rather HP fix their damned hardware so it can sleep longer than a couple of hours.

  61. Alexey says:

    You may laugh, but removal of the intermediate shutdown dialog is most definetely my favourite usability inhancement in Vista. I love the new advanced menu.

  62. Jon Canady says:

    I understand this is an article about user-preferences, and it’s spot-on relating to that.

    However, the key underlying issue is the Registry, or specifically that companies use the Registry to store application settings, which is sickening.  It leads to a gigantic registry which is a central point of failure for the entire system.  It’s akin to running an extension cord directly into the chamber of a nuclear reactor.  Sure, you’ll get all the power you want — and you might just blow things up while you’re trying.

    Why MS never developed a better API to store application settings with and deprecated their Registry calls is beyond me.  (Perhaps they did, I haven’t been keeping up.)  

    Also, as a side-note, *yes* application-specific config files are better.  Alternatively, plist files like OS X uses.  But if one application doing something wrong can bork the whole system, then something’s wrong.

    [Try reading the archives from the past month. Hint: Applications like to modify other applications’ settings. -Raymond]
  63. Yes, and its very easy to remove stuff and dumb everthing down and MS will stay ahead on this front…….keep it up MS.

    And of course you forgot to update TweakUI. XP has it, now even Ubuntu has an "Ubuntu Tweak" utility, but no Vista will not get it. "According to us, Windows Vista exceeds our expectations and does not require anything bullshit like TweakUI." Maybe you’ll offer it as an Ultimate Extra then?

  64. Craig says:

    Raymond, great post…I didn’t realize how much went into making a dialog box, among other things. But still, you seem poised to commit the perfectionist fallacy. Just because people will always complain does not mean there is no right answer, or that your (or Microsoft’s) answer is no worse than alternatives. The constant clamor of complaints should probably be seen as some kind of objective function; it may not go to zero, but at least you can find a local minimum or something.

    [I’m hoping that people who post comments saying that “obviously you should have done this; anything else is idiotic” will realize that a perfectly reasonable person may believe otherwise, and that’s doesn’t mean that that perfectly reasonable person is an idiot. -Raymond]
  65. Another bad thing in Vista is they made the Classic start menu bad to "enhance" the Vista Start menu. E.g. they removed the confirmation whether you want to log off from the Classic start menu. And Log off is so adjacent to Shut down or Run that many times users can end up hitting it and bam logs off the system even when there are apps running.

  66. For those ignorant folks who’re still confused or don’t know what’s happening with Vista, see http://en.wikipedia.org/wiki/Features_new_to_Windows_Vista#Power_management where it’s nicely explained.

  67. Gabe says:

    Xepol: There were 3 ways to get a floppy disk out of a Mac. You could select "Eject" from the Finder menu, drag the disk’s icon to the trash, or unfold a paperclip to push the button in the little hole.

    The problem is that dragging the icon to the trash is not very intuitive (why would I want to throw away my disk?), and it means you have to find the icon through all the clutter on the desktop. Unfortunately, that’s the only way to dismount the disk.

    Pushing the hidden button and using the "Eject" menu item will both eject a disk, but they also leave it mounted. This means that you can eject a disk that has files open on it and such, and the OS would just put up a modal dialog asking you to reinsert it. What happens if you don’t have the disk anymore or can’t figure out which of your disks named "Untitled" it wants? Bad Things(tm).

    You might think it’s unusual to eject a disk and not have it anymore, but the Mac’s design made it fairly common. There’s some sort of serial number that gets written to the disk when mounted, which is required to recognize it upon reinsertion. If you ejected a disk to insert into another Mac, the second Mac wrote something that would prevent the first one from ever recognizing it again. You probably lost whatever work you had done on the files you had open on that disk.

    I don’t know if things have improved since then because it’s been many years since Macs have shipped with floppy drives. However, I do know that some Macs ship with multiple tray-based optical drives and no way to open the tray on any but the first drive. Google says there’s a magic keystroke, but it requires a keyboard with an eject key.

    Anyway, my point is that at least somebody determined that allowing you to open your CD drive only warrants level 3 or 4 (you have to add Eject to the Finder’s toolbar manually), and letting you use your second CD drive is so advanced that it only warrants level 2 at best (there’s no UI for it whatsoever).

  68. Mike says:

    For the mac way of suspend, then hibernate when it’s flat – first I’ve heard of that (i tend to avoid anything apple even getting near to the end of a 50ft barge pole). While I agree that does sound like a useful compromise for a laptop, it still has a major problem where I’d still want a power off option –

    what about when I go away, turn it off for 6 days, then want to use it without having to plug it in? thanks apple for flattening the battery for me by suspending for 5 days!

    i certainly hope that they have an option to power off, and don’t force you to use their "flatten the battery, then hibernate" mode!

    for the record, A simple power button that turns it off (doesn’t sleep, like every vista laptop i’ve seen so far seems to default to on the POWER icon) with a log off icon (perhaps vanishing for single user systems), then a separate "advanced" menu is probably the most optimal way of doing it for a PC. For a laptop the tendency to default to sleep instead of power (having to use advanced to turn the damn thing off) is just a pain, close the lid if you want to go in to standby and click the power off icon if you want to power off seems much more intuitive (at least for existing users, and new users i doubt would find the close lid intuitive, but it would be better than clicking the power icon to find it didn’t power off)

  69. Marc K says:

    I was quite disappointed when I read Joel’s article.  The UI changes in Vista for shutting down are a great improvement.  

    Raymond’s title for this post was aptly named…

  70. Miral says:

    Point of fact: *all* methods of shutdown typically use power, including both Hibernate and Power Off.

    Hibernate and Power Off use the equivalent bare-minimum power; usually just enough to power the power button itself, some of the RAM, and the network card (if you have Wake on LAN enabled).

    Standby/Sleep typically switch off the graphics card and drives, but leave almost everything else on (though some in a reduced-power state).

    The only way to make a computer use no power at all is to unplug it.  (Or flick the switch on the power supply.)

    Regarding Vista’s power options, I think it’s really silly that "restart" and "turn off" (ie. ending the session) are now considered to be "advanced" options, especially since Vista still needs to be rebooted periodically to recover from resource leaks.  But meh.  As long as they don’t remove the options entirely, I’ll deal.

  71. Johan Appelgren says:

    Somewhat off-topic, but in the swedish version of Vista Microsoft has apparently tried to reduce the number of shutdown commands. Both hibernate and sleep are called "Viloläge". ;)

    (And I know this is simply a localization mistake, but it’s still funny. )

  72. Bob says:

    I think Vista’s sleep/hibernate hybrid sounds better than the Mac’s. If I’ve put a laptop into standby, I don’t want it waking up on it’s own later on and writing to it’s hard disk. Maybe I’m just paranoid but what if I’m carrying the laptop somewhere and it’s getting a bit of a knocking?

  73. KS says:

    @Matthew:

    [For most users they should be using Hibernate over Shutdown since you get faster boot times with Hibernate – and you don’t need to worry about saving documents etc.]

    NEVER EVER DO THAT! Took me few lost documents to learn from my mistakes, don’t repeat them.

    Sleep is 0% safe without UPS, hibernate is 50% safe, they both are not a replacements to save function.

    Concerning power off, I personally hate the way it’s done in Vista. There is a red button that did something weird the first time I clicked on it, so I always use advanced menu just to avoid the situation where my PC does something for me. I do think that new sleep+hibernate is a nice option though.

    Then again, if I use my PC then all I need is ‘lock’ and ‘shut-down’, all those sleep modes are only a fancy way to burn your house down because of some shiny add-in card. Hibernate with 4GB RAM gets unpractical pretty soon as well, and it sometimes used to come back weird after power-on.

  74. f0dder says:

    I think I’ll just call Joel an idiot – imho he has a much higher count of "omfg I’m an idiot but I’m too full of myself to notice" than stuff that’s actually credible.

    Oh, btw, power consumption for non-laptops in "off" mode is probably higher than you expect. ~6W for my box… I went on a measuring spree a while back: http://www.donationcoder.com/Forums/bb/index.php?topic=11248.0

  75. SuperKoko says:

    You cannot please everybody.

    See "The Miller, His Son, and Their Donkey".

    http://www.rickwalton.com/folktale/50fabl46.htm

  76. Triangle says:

    "I don’t want to write a configuration file"

    That remark was a about something unrelated to this topic. You can’t just take comments about something and apply them to something entirely different.

  77. Puckdropper says:

    I decided having a dead battery when I wanted to use the laptop was a bad thing, so I used Windows XP’s power options to put the laptop in standby after 10 minutes of no activity, and hibernate after 30.

    This is an example of an advanced setting that’s just advanced enough to give me the control I wanted, but not so advanced I leave everything at the defaults.

  78. ender says:

    Speaking of sleep and hibernate, I’m currently using XP x64 with 4GB RAM, and apparently this means I can’t use hibernation. Would Vista allow me to hibernate with this configuration, or do I have too much RAM for it, too?

  79. Bryan says:

    Matthew:

    You might consider purchasing a new motherboard or PC.  Sounds like your’s has pretty crappy power support.  I sleep & hibernate my PC all the time.  It’s literally noiseless in S3 & S4, which I can say is probably one of the most awesome things :)

    I usually like Joel on a lot of things.  I think he’s a pretty smart guy with good ideas; however, in this particular regard I just think he is way off base.  Not everyone is going to write great things all the time, hehe.

  80. cjm says:

    Yeah, I think Joel definitely had his head up his you-know-what when he wrote that article.

    I have my power button configured to hibernate, and closing the lid goes to standby.  I never use the start menu power options unless I want to reboot, log off or shutdown for real every 170 hrs (I use dial-up and after about 170 hrs uptime the dial-up network icon in the notification area won’t appear when I dial in).  

    While people may criticise Microsoft for having both hibernate and standby, I think this criticism is unfair.  It is simply a reflection of the limitations of technology.  In an ideal world, saving the state of the machine to non-volatile memory should be instantaneous.  In that case, one could probably replace standby with hibernation in simple cases.

  81. David Walker says:

    "… leads to a gigantic registry which is a central point of failure for the entire system"

    Huh?  My Registry has never "failed".  My file system has never failed either, except when the hard drive fails.

  82. David Walker says:

    All of the comments about Sleep/Hibernate/StandBy, and which ones do and don’t use power, prove my point that the options are confusing, even to expert users, and are not very intuitive.

    Although the linked-to Wikipedia articles are a good read and explain things pretty well.

  83. Triangle says:

    "Tuesday, January 15, 2008 11:20 AM by Peter

    But holy cow!  There exist enough people (and they’re motivated to write into the forums!) that demand to have their %PROGRAMFILES% directory on the C: drive but need* to have games on a D: drive."

    Did you tell them about the step during the installation program where you select which directory the game is intalled to ?

  84. cjm says:

    Peter: "It would sure be nice if people just accepted that when you install a game, it gets installed into the %PROGRAMFILES%gamename directory and be done with it."

    […]

    "They’ve just made up, in their own mind, some kind of "standard" that makes no measurable difference to their lives, and causes me work.  And QA.  And the translation department."

    This is the mark of a bad attitude.  Programming is about give and take.  Sure, not all end-user requests are sensible, but when a programmer refuses to consider the point of view of end users, it signals a mental disconnect which is likely to create problems for end users in other aspects of the program/game.

    And "causes me work"?  Give me a break.  All that QA stuff is in place to produce GOOD software.  It is not supposed to be made into an excuse for NOT MAKING good software.

  85. Will says:

    >Did you tell them about the step during the installation program where you select which directory the game is intalled to ?

    Haha, I think the problem is Peter doesn’t consider that an option that his game installers should support.  Users are stupid you know.  They think they should be able to install software someplace other than the default program files location.  They don’t realize that no one ever has a legitmate reason to install a program elsewhere.  They don’t realize that it requires a few minutes to an hour of extra work for him to support that option in his installers.  Yeah, stupid users they are.

  86. Will says:

    Hibernation has issues with dual-booting.  Suppose you hibernate while using OS A.  When you resume, you’ll be presented with the bootloader (or series of bootloaders) which require you to choose an OS to boot into.  If you choose the wrong OS to boot into, guess what?  You could get a blue screen, file system corruption, or at worst – partition table corruption.

    I have seen the blue-screen issue at work, with co-workers dual-booting between Vista and other Windows OS’s.  Vista would go into hybrid sleep mode after a period of non-activity, which would eventually slip into full hibernation.  When the user resumes, they might choose a different OS to boot.  Instant blue screen.

    Think this would never happen to ordinary users?  Lots of Dell laptops come with a "MediaDirect" button which lets you play movies and music without "booting into Windows".  In reality, pressing the MediaDirect button when the laptop is off will boot you into a stripped down version of Windows XP.  When you turn off this application, it hibernates.

    Guess what happens if you do the following:

    1) Boot into MediaDirect.

    2) Turn off laptop (thus sending the MediaDirect OS into hibernation).

    3) Boot into Windows

    4) Edit the partition table in Windows (e.g. resize existing partitions to make way for another OS)

    5) Boot into MediaDirect – boom! – your new partition table is toast.

    The worst part is there doesn’t seem to be a way to NOT hibernate in MediaDirect.  Basically you would have boot into Windows, unhide the hidden MediaDirect partition, and delete the hibernation file (hiberfil.sys) to avoid this scenario.

  87. Rob says:

    Just my 2p worth – it’s not actually, really, a choice to be made. Whenever I go to that little pop-out menu on the Start Menu, I know exactly which option I want to use anyway. Calling it a choice infers that when viewing the menu you *then* have to decide which option you want.

    It’s an utterly made up statistic, but probably near the mark, but I’d hypothesise that 99% of people who click that button (other than in a "I wonder what’s under this button" context) already know exactly which option they want.

    Back on the topic of where to put advanced settings, maybe there could be settings to control where the advanced settings are exposed? Would that make them (meta)Advanced Settings? I think I need a lie down now.

  88. SuperKoko says:

    Mike wrote:

    "

    For the mac way of suspend, then hibernate when it’s flat – first I’ve heard of that (i tend to avoid anything apple even getting near to the end of a 50ft barge pole). While I agree that does sound like a useful compromise for a laptop, it still has a major problem where I’d still want a power off option –

    "

    A much better option would be to stand by, and then, hibernate as Puckdropper described.

    With that option, the battery isn’t flattened.

  89. SuperKoko says:

    Peter wrote:

    "

    Bleah!  What a pain!  And for no good actual reason.

    "

    Have you ever heard of people buying a NEW hard disk and wanting to USE it without dropping the old hard disk?

    *NIX systems have great options to make the file system transparently work with several disks such as mounting disks where you want or symbolic links from one disk to the other.

    But Windows is quite poor for that. Windows 9x/Me gave absolutely no option to manage that. For NT-based Windows, I’m not sure, but I guess junction point tools aren’t available in "Home" editions.

    Also, software that don’t give the choice of the install directories usually have MAJOR versionning issues: It’s not possible to install two differents versions of the same software at the same time.

    For example, as a web designer, I cannot easily test my pages in two different versions of a browser which don’t support multiple setups.

    It’s also annoying to find utilities that cannot be installed for a single non-admin user when using university computers.

  90. Bryan says:

    Peter,

    As a fellow individual that works with installations, I find that disturbing you don’t understand why people install to specific locations that aren’t your arbitrary destination.

    Not everyone enjoys C:Program FilesCompany NameSub Product NameGame Name :-)

  91. Aaron says:

    I remember that Joel post.  I think somebody must have spiked his coke that day, because each successive "solution" to this utter non-problem gets progressively more insane, up until that final beautiful moment where I can picture him alternating between rubbing his hands together and pumping his fists, muttering "and then… we just have to put a solid-state disk in everybody’s PC!  Yes, YEEESSSS, and then we’ll construct a vast neural-network so Power Management software can predict the future!  And then all of our problems will be solved!  YEEESSSSSS!!"

    If that had been written by anyone other than Joel, I would have read it as a parody of the prototypical UI Commando or Mac hipster, with nary an inkling of a clue about what’s under the hood.  Forget about pleasing these people all of the time; you can’t please these people *ever*, because their thinking is not grounded in reality.

    Don’t get me wrong, I like a lot of Joel’s writing, but whenever he posts about UI, he always manages to start with the assumption that computers can read human minds (usually hand-waved as something like "it’s smarter than us anyway" or "it was designed for this sort of stuff").  I’d assume (and hope) that nobody on the Windows team is seriously considering taking his advice.

  92. more is less says:

    I want more sleep-levels. Maybe 20-30 should be enough. But it’s important that their name and meaning changes between all windows versions, and SPs.

    "Today I want to semi-suspend to shallow hibernation"

  93. SRS says:

    I want a Mac Book Air. I don’t care if it hibernates, sleeps, suspends or just goes a bit antisocial. I just want to look at it.

  94. Miral says:

    Back to the original "settings" topic: in one of our apps we’ve got quite a large group of miscellaneous settings we’ve thrown in to handle corner cases and one-off client requests.  They’re basically at level 5 in the original list, but with the effort of level 1.  (A bit more effort up-front, but the incremental effort is minimal.)

    See, they’re stored in a configuration file, and that file has a dialog-based UI showing the name, description, suggested values, etc for each one, arranged into categories and with a search function to make it easy to locate the setting you want to tweak.

    But all we need to do in the software to add a new setting is to define a property (which we need to do anyway in order to use it) and write up some quick help text attached to the property via attributes (which only takes a minute or so).  Everything else happens automatically.

    The result: it’s easy to add an advanced setting, yet all those settings are documented and discoverable.  (Fortunately we don’t have to worry about localisation — the advanced users are required to know English since only non-advanced screens are translated anyway.)

    I think lack of discoverability of these advanced settings is the biggest reason why people are clamouring to move down the chain that Raymond posted.  You’ll note that each step is more discoverable than the last (although #6 does go too far in most cases).

    I have no doubt that there are lots of Windows options that I would love to enable if I knew about them — but I don’t know what to look for, so I don’t know that they’re even there.  They’re not discoverable.

  95. Peter says:

    Getting back to Raymond’s original comment — I agree.  Amongst other things, I work with installers for games.  It would sure be nice if people just accepted that when you install a game, it gets installed into the %PROGRAMFILES%gamename directory and be done with it.

    And most people agree.

    But holy cow!  There exist enough people (and they’re motivated to write into the forums!) that demand to have their %PROGRAMFILES% directory on the C: drive but need* to have games on a D: drive.

    Bleah!  What a pain!  And for no good actual reason.  They’ve just made up, in their own mind, some kind of "standard" that makes no measurable difference to their lives, and causes me work.  And QA.  And the translation department.

    *In their mind it’s a need.  As in, "what a great game!  I’d spend a hundred dollars just to smell the box it came in!  I’ll personally wire thousands of dollars to each of the developers!  Oh, except that it installs to the  %PROGRAMFILES% directory, so in reality all of the developers are horrible, awful people who should be sent to a yucky place.

    PS — Joel’s right.  If it weren’t for hardware and drivers not working, his solutions are the best.

  96. James Schend says:

    Gabe: You’re missing one very, very important detail in your description of how Mac OS Classic treated floppy disks. You’re entirely neglecting Put Away.

    Mac OS Classic had two UI options for dealing with floppies:

    1) Put Away (which is the action performed when dragging a disk to the trash can)

    2) Eject

    These translate roughly as "I’m done using this disk and I don’t need anything on it anymore" and "I need to put another disk in, but I’m not done with this one yet so please keep track of it" respectively.

    What’s amazing to me is how many Mac users/so-called UI experts don’t know about the Put Away command or what it does. I do agree that dragging the disk icon to the trash can was a bad idea for a shortcut (BTW, Put Away also had the shortcut Command-Y) but the concept of "putting a disk away" opposed to "ejecting it from the drive" is perfectly valid. Eject is necessary, of course, for copying data from one disk to another.

    The Put Away menu item also would put files you dragged onto the desktop back to the folder they came from. Which was also a nice feature that hardly anybody knew about.

    I hate this myth that dragging a disk icon to the trash was the *only* way to Put Away a disk on Mac. It’s just a handy shortcut somebody made for the actual Put Away menu item.

    Also this:

    > There’s some sort of serial number

    > that gets written to the disk when

    > mounted, which is required to

    > recognize it upon reinsertion. If

    > you ejected a disk to insert into

    > another Mac, the second Mac wrote

    > something that would prevent the

    > first one from ever recognizing it

    > again.

    Is complete, absolute bunk. It’s true that Mac OS put a hash/unique identifier on each disk, but another Mac wouldn’t change that unless it formatted the disk. And yes, if you format the disk, then you’ll lose documents that were on it– duh.

    Believe me, I used every version of Mac OS from 6.0.4 to the latest OS X. I know how Mac OS deals with floppy disks.

  97. Gabe says:

    James Schend: You know, I always thought "Put Away" just sent files from the trash back to their original location. It never occurred to me that "Put Away" on a floppy disk would actually have the effect of performing the same action as dragging *to* the trash.

    And I can’t tell you why it happens, but I have had many instances of a disk no longer being recognized as itself after being ejected and used in another Mac. It could even be application-specific, but I know it’s definitely happened.

  98. I think sleep should be called nod-off.  Hibernate should be called "When I get around to it" mode.

  99. Will says:

    Superkoko wrote: "For NT-based Windows, I’m not sure, but I guess junction point tools aren’t available in "Home" editions."


    Here’s a couple of free extensions that integrate junction point (and hard link) functionality into Explorer:

    http://sourceforge.net/projects/ntfslinkext

    http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html

    (I use both, because one has a slightly better UI, while the other has slightly more features.)

    Of course, Vista has added (true) symlink functionality, but it doesn’t work over the network if your client is not also Vista (IIRC).

  100. James Schend says:

    Gabe: You’re over-thinking it. Put Away does whatever operation is necessarily to put the selected item back where it belongs. For a disk item, that’s "back on your sheld." For a file on the desktop, that’s "back to the folder this came from." (Same for a file in the trash.)

  101. GrofLuigi says:

    And 13 years later I still can’t get over the whole StartMenu shutdown concept. Hibernation and other drugging of the computer aside, what’s wrong with powering off with the power button? Especally with NTFS and its much touted atomic commits? Of course, by now much of the hardware wants to retain power, but that’s just because of lack of discipline (they’re spoiled).

    And of the software side, there’s no reason EVER to have to prepare the software for shutting down. Of course, shutting down a text processor with unsaved document results in data loss, but that’s user’s responsibility. If I’m in a middle of configuring some important OS setting, there are two states to remember: before and after I hit the apply button.

    Yeah, you could conclude two things from this:

    1. I’m not a programmer.

    2. God I miss my Amiga!

  102. SuperKoko says:

    "

    And of the software side, there’s no reason EVER to have to prepare the software for shutting down.

    "

    Flushing disk caches (by unmounting drives), shutting down network connections properly, and, of course, everything related to loging out such as uploading remote profiles, sync’ing offline files, notifying a logout. This cannot be done by hardware alone.

    (With ACPI, it’s possible to map this feature to the power button).

    "

    Of course, shutting down a text processor with unsaved document results in data loss

    "

    So, that’s why there’s a difference between shutting down the computer and hibernating it. With hibernation, you don’t loose any data. RAM is saved by the OS.

    Would you set your laptop to automatically shut down, without saving any data, after 10 minutes of user inactivity?

  103. Igor Levicki says:

    About log off/sleep/hibernate/power off choices — aren’t you again passing the choice up to the user because you don’t know what to do?

    Lets stick to laptops — how could user know what he wants to do? He may decide to put the laptop to sleep but if he doesn’t check battery state, he may lose work. OS on the other hand is aware of battery state and can prevent sleep and perform hibernate instead if battery is low, or do a fast shutdown in case the baterry is so dangerously low that there is no time to write out 2GB of RAM to HDD.

    As for desktop, some users might not be aware that they could lose data if they put the computer to sleep and there is a mains failure. On the other hand, OS is aware (or can be made aware) of UPS and decide what action to perform.

    So, in my opinion those three options could have been hidden behind a single "Power off" button because they (apart from the time it takes to come back online) look identical to the user. Of course there should be a Help and Support entry titled "Why my computer sometimes  powers on or powers off slower?".

  104. Igor Levicki says:

    @Peter:

    You obviously haven’t given it much thought.

    1. What if user has a 20GB OS partition (C:) and 180GB data partition (D:)? With today’s games nearing 8GB per game how fast would those 20GB fill up?

    2. What if user has fast, small capacity HDD (like those older 36GB Raptors or SCSI drives) for the system parition (C:) and another large drive (or perhaps RAID0) for the data (D:)?

    3. With a lot of games working without the need for the reinstallation why not install the game somewhere where it won’t get zapped if you format C: / reinstall Windows?

    4. Finally, it is my system, my HDD, I should decide where the stuff goes, not you the lousy (and lazy) programmer.

  105. Alexey says:

    Peter, so many games attempt to write to their installation folders, that the user has to install all games into a different folder than Program Files or bother granting rights on a case-by-case basis.

  106. Will says:

    Peter wrote: "It would sure be nice if people just accepted that when you install a game, it gets installed into the %PROGRAMFILES%gamename directory and be done with it."

    Hmm, extending your idea to all applications, I guess every installer should write to:

    "%PROGRAMFILES%appname"

    I’m sure there’s no way 2 unrelated applications could ever have the same name….

  107. Evan says:

    @Igor: "Lets stick to laptops — how could user know what he wants to do?"

    What you say is true. But on the other hand:

    How can the software predict the future? Does the software know that you’re just going to grab a quick meal in the kitchen, and it shouldn’t shut completely down? Or does it know that you are going to be away for a couple hours, and so it should hibernate immediately?

    Or, as another person pointed out, how should it know that it’s getting on an airplane and needs to turn full off?

    OS-managed power options are nice when plans change — the user thinks he’s gonna be AFK for a few minutes only, but it turns out to be an hour. But in general, the user is much better at predicting the future than the OS is.

  108. Peter says:

    As Raymond says — if you want to write your own stuff, go write on your own blog.  Everyone who thinks that picking a game installation directory is a good thing — I’ve written up a little bit about it on my own (occasional) blog.

    http://sunriseprogrammer.blogspot.com/2008/01/game-installers-picking-directory.html

  109. Jeff says:

    Peter, I read your blog post (sorry Raymond, this discussion is mostly here) and aren’t you trying to take something specific that applies to what you’re developing and generalize it?

    It’s fine if your company mandates a particular constraint, but that doesn’t invalidate the fact that users can and do install to different places. Installation directory is something users are used to customizing, and it makes sense they can do this for reasons already mentioned (size of disks, users may want a logical separation of programs, etc.)

    I hate it when programs mandate an installation directory because I tend to have to delete files or move something I’d rather have handy. Granted, I’m a technical user, but I’ve seen non-technical users follow their own organization scheme also.

    [Hey guys, if you want to respond to Peter’s blog post, how about posting a comment to Peter’s blog? Just a thought. -Raymond]
  110. Evan says:

    @SuperKoKo: "*NIX systems have great options to make the file system transparently work with several disks such as mounting disks where you want or symbolic links from one disk to the other.

    But Windows is quite poor for that. Windows 9x/Me gave absolutely no option to manage that. For NT-based Windows, I’m not sure, but I guess junction point tools aren’t available in "Home" editions."

    Actually since at least Win2K, Windows can do the same thing Unix can, it’s just that no one seems to know about it.

    Go to control panel, administrative tools, computer management, disk management, right click on a partition, something about mount points, add, and you can mount the partition at a directory, the exact same way it works on Unix. (I’m not on a computer I have convenient admin rights to, so I can’t verify the last steps there.)

    If you want, you can set up your Windows box the same way you would a Unix system, except that:

    • The root is "C:" instead of "/"

    • Other drives (CD, USB, network drives) are still referred to as drive letters. (You can, at least for the CD drive, mount it at a directory as well. But from my "can this be done" tests a while ago, it doesn’t behave particularly well.)

    • You may have to mount onto an NTFS partition. (In other words, it may be a file system feature rather than at a layer above.)

  111. SuperKoko says:

    Igor Levicki wrote:

    "

    About log off/sleep/hibernate/power off choices — aren’t you again passing the choice up to the user because you don’t know what to do?

    "

    The OS makes choices for the user, by default. Things like going to sleep after 5 minutes.

    However, many users reasonably want more control. Computers may be smart, but computers aren’t as smart as (some) human people.

    Manual power management can still be useful. You’re free to rely on automatic power management if it fits your needs.

    "

    Lets stick to laptops — how could user know what he wants to do?

    "

    I’m not prescient, but I usually know what work I’m currently doing, and what work I’ll do in the next hours. I know how long I’ll be on batteries before ending the journey where I can charge my batteries. I know when I quit my computer five minutes to go to toilets, and when I quit it for hours or days. I know better than my computer.

    "

    So, in my opinion those three options could have been hidden behind a single "Power off" button because they (apart from the time it takes to come back online) look identical to the user.

    "

    Windows Vista uses the "Hybrid Sleep" by default AFAIK. However, Microsoft has been kind enough to KEEP the old options for users who need control. Does it harm?

  112. GrofLuigi says:

    "

    Flushing disk caches (by unmounting drives), shutting down network connections properly, and, of course, everything related to loging out such as uploading remote profiles, sync’ing offline files, notifying a logout. This cannot be done by hardware alone.

    "

    All that are artifical limitations that built up after the ‘ShutDown’ mantra was invented. They were encouraged by it. I’m aware that the opposite is impossible today, but I am just imaging how it could be with careful planning from the grounds up…

    Unmounting drives – why? Write down what you have to write and goodbye. Make your filesystem prepared for power loss. I’m not aware of any hardware component that is emotional and needs to be persuaded to something you want (although many act like it). Why do I have to announce my intentions to the network card? It’s either on or off – connected or disconnected.

    Can’t remote profile be treated like the filesystem? What’s so special about it? If you save your changes, ok, if not – they’re lost. Additionaly, let the remote computer deal with it.

    Loging on/off and notifications – that’s a matter of corporate restrictions, not something that brings value to the user. :)

  113. Evan says:

    @GrofLugi: "Make your filesystem prepared for power loss."

    I’m sorry, did you say "slow your file system down because you can’t do write caching," or did I mishear you?

  114. Cooney says:

    Actually since at least Win2K, Windows can do the same thing Unix can, it’s just that no one seems to know about it.

    certainly not game devs. Try installing an 8G game under c:data (a separate volume) when c: has 5G free. Won’t work. At All.

  115. GrofLugi: DOS was the last OS shipped without a write cache – one was added in MS-DOS 3.3  (called smartdrv IIRC) and it cause so many issues with customers machines that the write caching behavior was removed.

    Back when I started using *nix (1981) it required a command to be run before shutdown (sync), it still does.

  116. LarryOsterman: That was too broad – DOS was the last MICROSOFT OS shipped without a write cache.  I’m sure that there are mobile OS’s that don’t have write caches.

  117. SuperKoko says:

    "

    Why do I have to announce my intentions to the network card? It’s either on or off – connected or disconnected.

    "

    You’ve to close network sessions if you hold a lock on a network file, otherwise, people will be prevented from using it before the server judge that the session has been unexpectedly shut down. That may be several minutes.

    Shutting down the computer abruptly is usually dangerous, even WITHOUT any OS disk cache (or even with a journaling filesystem).

    Suppose you shut down when your application is saving a document but has only saved 50% of the document!

    You’ll loose data!

    You may say that, you just have to shut down when applications aren’t saving any files, but:

    1) The shut down button would become especially dangerous. Just imagine: Holy cow! I’ve shut down 1 second too early after exiting Opera (this application sometimes quit and eat 100% of the CPU during several seconds before writing down all its setting files), my settings are destroyed!

    2) You don’t always know what all of your applications are doing: There’re background services that may write files at any time, such as the task scheluder, registring that an event has passed.

    "

    Can’t remote profile be treated like the filesystem?

    "

    No.

    This is the difference between a network drive and a roaming profile. A network drive will use much bandwidth, and will be slow to access files. With roaming profiles, data is downloaded locally, for optimal performances.

  118. Igor Levicki says:

    >How can the software predict the future?<<

    With the same certainity the user can.

    For example, if you are playing with your dog and you suddenly get up and go to toilet the dog will stand for a while then sit down. If you receive a phone call and get distracted dog will lay down. If you then go outside to meet the person who called you, the dog will turn to its side and doze off.

    Dog can’t predict when you will get back to him. You don’t know it either, he does the best he can do — preserves power. So should your computer.

  119. SuperKoko says:

    "

    Evan: Transactional file systems (such as NTFS in Vista/2008) should be reistant to unexpected power loss even with a write cache.

    "

    Only if all programs of the system properly use transactions.

  120. Shannon says:

    Please don’t use config files!  Argh! Can’t easily do an enterprise-wide setting of a particular value in an ini file – have to write a whole ini parser, editor, writer etc.  Easy to set a registry value enterprise-wide.  Can never find where the setting is if I have to manually edit (HKCRSoftware is easy to find).

    (People that are pro config files usually think five computers is a big network.  MS cannot, of course, satisfy me while appeasing those that think text files are the one true solution.)  Besides, nobody complains that the root directory is a single point of failure.

    My advice: Leave the advanced settings in the registry.  If they turn out to be necessary or commonly used, migrate them to the U/I (or preferably into the Group Policy system if they’re likely to be settings only a corporate would use.)  Consider making them automatically tuning instead (where possible) – I’d much rather the computer just figured out the correct value than me have to fiddle with a setting, no matter *where* the setting is.

    Evan: Transactional file systems (such as NTFS in Vista/2008) should be reistant to unexpected power loss even with a write cache.  Give or take hdd behaviour – but then, with NCQ or SCSI you should be able to disable write caching on the drive with no performance loss.

    LarryOsterman: My recollection is that (at least in MS DOS 6.21) SmartDrive would by default do a write cache, but would synch to disk before the command prompt appeared.

  121. GreaseMonkey says:

    Selecting your preferred shutdown method and leaving it as default should not be an "advanced" feature.

    Although I don’t like that too automated; countless times I’ve accidentally restarted my machine when I wanted to shut it down (which is why I like KDE 3.5’s way of using buttons instead of radio items or a dropdown menu).

    But heck, if it requires a registry key to change the default, I’d be willing to.

    My idea though (I haven’t actually seen the menu, and it’s most likely too late to suggest):

    – Sleep

    – Hybrid sleep

    – Hibernate

    – Shutdown

    – Restart

    – Play with self

    ————-

    – Select default (submenu with above items)

    One of my pet hates: "This program requires you to restart your computer. Click OK to restart." It’s tempting to write a virus which says, after about 30 minutes, "This virus requires you to restart your computer, click Restart Now or wait 15 seconds to restart", and send it to the guys at Z***L***. (IIRC, DirectX 9 setup did that too, although it didn’t force you to restart every time it auto-updated.)

    One of the reasons why I program stuff in ASM (that’s machine-code, for those of you who are uninformed) is because I know it’s doing what I want it to, and the code hasn’t been miscompiled so I know it’s my own stupid fault if I get a bug.

  122. Igor Levicki says:

    >Click OK to restart<<

    Usually clicking that little red x in the top right corner can help avoid that problem. Another way is to End Task on setup.exe.

  123. I just have to do it in a more subtle way.

  124. The ProfilesDirectory setting.

Comments are closed.