I bet somebody is looking to get a really nice bonus for that feature: Attention


"I bet somebody is looking to get a really nice bonus for that feature."

A customer was having trouble with one of their features that scans for resources that their program can use, and, well, the details aren't important. What's important is that their feature ran in the Startup group, and as soon as it found a suitable resource, it displayed a balloon tip: "Resource XYZ has been found. Click here to add it to your resource portfolio."

We interrupted them right there.

— Why are you doing this?

"Oh, it's a great feature. That way, when users run our program, they don't have to go looking for the resources they want to operate with. We already found the resources for them."

— But why are you doing it even when your program isn't running? The user is busy editing a document or working on a spreadsheet or playing a game. The message you're displaying is out of context: You're telling users about a program they aren't even using.

"Yeah, but this feature is really important to us. It's crucial in order to remain competitive in our market."

— The message is not urgent. It's a disruption. Why don't you wait until they launch your program to tell them about the resources you found? That way, the information appears in context: They're using your program, and the program tells them about these new resources.

"We can't do that! That would be annoying!"

Comments (73)
  1. Anonymous says:

    "You have unused icons on your desktop!"

  2. Peter Ritchie says:

    A case of losing the plot.  They don’t have enough of a grasp on designing software to know what they are doing is "wrong".  Inter-operate with the rest of the system?  Why would their users do that?

    I wish stuff like that were not common, but it is.

  3. Anonymous says:

    Almost seems like the same kick I wish the Outlook team received on the mail notifications. I can think of numerous times that I have been playing a game fullscreen and suddenly I get a ding and a slowly inflating miscolored help balloon dragging itself into an odd location in my game screen and since that portion of the screen doesn’t refresh, I get stuck with an email from buymeds telling me that they think my manliness is at stake for the next hour I am playing.

    Maybe this feature will work better in Vista since there is more compatibility on the graphics layer between apps or something included in DX10? Actually, it already is possible as the application Decal shows of shimming itself into a DX application, but that was a specific application in a specific application.

  4. Anonymous says:

    "It’s crucial in order to remain competitive in our market."

    It’s true. Competitive applications in this market ship with a small USB peripheral that shoots you in the eye with a laser beam to get your attention when a new resource is found. This is benign by comparison.

  5. Anonymous says:

    This attention problem has its contemporary in the traffic sign pollution. And it is a success to remove traffic signs! See http://www.sciencedaily.com/upi/index.php?feed=Quirks&article=UPI-1-20061116-14245600-bc-europe-traffic.xml

    If popups where used much less frequent then they would be more useful because the user hopefully would actually read them then. I sometimes make mistakes myself due to clicking away popup dialogs too soon before realizing that I should’ve actually read what it said. "Where is the undo key to redisplay this popup dialog? Hilfe!"

  6. Anonymous says:

    It’s too bad MSFT would be considered anticompetitive if they just detected these applications were installed and uninstalled them.

    I agree about the unused icons btw, but MSFT is a big company, and Raymond didn’t write all of Windows… (at least, I think he didn’t.)  The point still stands.

  7. Anonymous says:

    Well you can’t really blame 3rd parties for following the example set by the OS and 1st party applications, can you?

  8. Anonymous says:

    That story is pretty typical.  Someone gets an idea, but there is no one to tell them it’s a bad idea and there is a more elegant solution.  There might have been as well a programmer that wanted an opportunity to write a startup group app.   In any case, if that conversation did indeed take place, there is no way the person would back off the idea – the last thing they want to discuss is the reason for their question.  Probably changed it afterwards though.  People aren’t malicious, they just need to debate a bit the ideas, in my experience, which they don’t in smaller companies.  

    p.s. : I do get pretty angry when I’m told there are unused icons on my desktop :D

  9. Anonymous says:

    Sorry, but…

    “You have to activate Windows!” (The pirates don’t)

    “Can I send this or that information to Microsoft to improve our products?” (Please? Pretty please?)

    “Updates installed. Your machine is going to reboot. Now. Click
    Cancel to be reminded with a always-on-top dialog in 5 minutes again.”
    (Resistance is futile)

    “Did that program install correctly? It installed too fast… Shall
    I launch it again in XP compatibility mode?” (I didn’t see it. I’m slow
    and dumb. Or your computer is too fast. Or the program is actually well
    designed. Or it isn’t an installer.)

    “Can I send every URL you type to Microsoft to protect you from
    obvious scams and look like somebody cares?” (Because, you know, the
    only way do do this is to send the whole URL to MS…)

    “We will spend the next few minutes configuring Media Center /
    Windows Media Player. What kind of evil deeds I’m allowed to do?”
    (Where’s the option I have to disable so that all the other third party
    media players, when used in Vista, don’t take 40% more CPU that they
    did on XP, or that WMP does in Vista?)

    “Internet Explorer is no longer your default browser. Re-assimilate
    the machine?” (No, I installed other browser and made it the default
    just so you could ask to get back)

    Complaining against this kind of behavior makes Microsoft products
    easy targets. So easy that one often forgets that useless comments are,
    well, useless.

    [I knew you were going to do this and I wrote an entry trying to forestall it but apparently wasn’t successful.
    Not all of the above are examples of
    attention-stealing. The phishing filter dialog doesn’t appear until you
    actually start using Internet Explorer to navigate. The “Did that
    program install correctly?” dialog doesn’t appear until you try to
    install something and it appears to have failed. The Media Center
    dialog doesn’t appear until you run Media Center. The default browser
    dialog doesn’t appear until you run Internet Explorer. Yes, they are
    annoying dialogs, but they are also off-topic. If you’re going to say
    “gotcha” just to be annoying, at least make it a valid gotcha. -Raymond
    ]
  10. Anonymous says:

    Me (playing game/reading dailies/doing work): laaaa deeeee deeee

    SP (stupid program):  "New resource has been found.  Do you want to stop everything you’re doing to deal with this now?"

    Me: "DIAF, program."

    Start->Control Panel->Add/Remove Programs->DIAF stupid goddamn POS->Do you really want the programmers who made this software to DIAF?->Yes->Confirm DIAF->Yes->Programmers have DIAF.->Apply

  11. Anonymous says:

    "A Java(tm) update is available!"

    "You have one new message in your Real mailbox!"

    "Would you like to upgrade to Quicktime Pro?"

    "A new wireless network has been detected!"

    :)

  12. Anonymous says:

    Why is this more the developers’ problem than the OS’?

    I mean, I understand why developers shouldn’t do it.  But they CAN do it, and by doing it, they boost their own fortunes at no cost to themselves. Given that, there’s going to be some percentage of developers who abuse the system, no matter how many stern “this is bad” warnings are offered.

    In other words: we tell everybody that stealing is bad, too, but we make sure to lock our doors anyway. We don’t depend on everybody voluntarily doing The Right Thing all the time, because human nature makes that highly unlikely.

    So why doesn’t Windows lock its doors?

    [Because Windows isn’t psychic. There are good reasons for showing a balloon tip and there are bad reasons. Windows doesn’t know why a program is displaying a balloon. Or are you saying that there exists an algorithm for determining which balloons are good and which are bad? That’d be awesome. -Raymond]
  13. Anonymous says:

    <blockquote>Because Windows isn’t psychic.</blockquote>

    No, but it could surely limit balloon-tips so that they can only display if the executable is running, no?  Since that’s the rule that you recommended developers follow.

    I’m not a Win32 developer myself, so apologies if there is some compelling reason for allowing those folks to do Bad Things that I’m not aware of.  My point is just that, if the possibility to do Bad Things exists, people will do it, and we probably shouldn’t be surprised when that happens.

  14. Anonymous says:

    Jason– just how do you think the balloon-tip gets displayed? Obviously an executable has to be already running to display it; that’s why Raymond mentions, "their feature ran in the Startup group"!

  15. Anonymous says:

    Jason,

    Balloons are spawned by processes. Unless a process is running to spawn that balloon tip, it won’t appear, since there’s nothing in the shell to simply cause an annoyance at set intervals. Often these annoyances come from applications that are designed to run in the background, with the unfortunate problem of "Which process is being useful vs Which Process is trying to annoy me?" now rearing its head.

    In short, if you see a balloon tip, it came from a program thats running on your system. If you can’t take the time to identify the offending application and/or disable the balloon tips via the configuration if possible (or even uninstall the application, if you are sufficiently peturbed) then why not just fire up tweakui, disable the balloon tips entirely and take your chances.

    There are plenty of useful messages, such as hardware installation success/fail notifications, hardware fault warnings (always useful for spotting a dead hard drive in the making). Personally, I’d just uninstall Acrobat and be done with it :)

  16. Anonymous says:

    "Jason– just how do you think the balloon-tip gets displayed?"

    I have no idea — as I noted above, I’m not a Win32 developer.

    I was taking my cue from Raymond’s statement:

    "Why are you doing it even when your program isn’t running?"

    So perhaps this is a matter of semantic distinctions between "the program" (i.e. its primary executable) running, and processes-related-to-the-program-but-not-themselves-The-Program running; the latter being things like the updater process that every app I install these days seems to want to throw in, most of the time without bothering to ask me.

    So perhaps the problem is not balloon tips; it’s that developers can load processes up to run on startup without user consent, and without warning the user what they will do (i.e. "Hey!  I’d like to pester you periodically.  Is that ok?").

    "There are plenty of useful messages, such as hardware installation success/fail notifications, hardware fault warnings (always useful for spotting a dead hard drive in the making)."

    Agreed — but it’s worth noting that all those examples are notifications that should be coming from Windows, not from some third party app.  Right?

  17. Anonymous says:

    First off, I’ve rarely seen a ballon tip which is truly useful, especially among those displayed by the OS itself. I think the way it is used by default rather resembles an UI hack. There would be better solutions for these problems (altought the solutions would mostly need deeper thinking; more work).

    So, IMO Windows should not include such a feature at all. It’s pretty predictable that it will be abused by developers: It’s a common UI resource designed to get the user’s attention.

    How other OSes are solving this task?

    OSX: There is Growl, a nicely written 3rd party (OSS) app, which can be freely installed, and if installed several popular apps will register themselves to use it. Growl can be disabled or uninstalled anytime, distinct apps and messages can be disabled/enabled anytime.

    AFAIK a similar solution exists for Linux, unfortunately I don’t know the name.

  18. Aaron Fischer says:

    You need to remember its not the developer that wanted to do this but some marketing/business person, who can barley turn a computer on.  They are the ones that think its not the most annoying thing in the world but rather a god send to the user.

  19. Anonymous says:

    "To provide a concrete example: how is Windows supposed to determine that jucheck.exe or jusched.exe can only display a pop-up when java.exe or javaw.exe is running?"

    How about this: don’t require the developer to write their own update check at all.

    Developers are human beings and will take the easy path in most cases, all other things being equal.  They don’t write their own updaters because they want to, they write them because they have to.

    So why not open up Windows Update (or a similar service) to third party developers to manage their updates?  

    This would make it easier to enforce best practices like "don’t annoy unnecessarily", since the OS vendor would have some control over how participating apps behave; make life easier for developers, and cut development costs, which makes PHBs happy; and remove the need for every app to have its own little process running in the background, which would make users happy (less UI clutter, less wasted system resources).

    Of course, the bad/stupid developers might choose to write their own updater anyway, but then you have more justification for throwing up scary sounding warnings when they try, because the fact that they’re trying implies that they might not have the user’s best interests in mind.

    This only accounts for one balloon-help use case (software updates), but it illustrates a suggestion: instead of asking developers to do the right thing, it might be more fruitful to instead make it easier and more lucrative for most developers to do the right thing than to do the wrong one.

    "Basically these complaints boil down to "why did the hardware store sell me this hammer when they knew someone might break into my house and hit me in the head with it, surely they could make a hammer that works on nails but doesn’t split my skull open"."

    A better analogy would be a hammer that jumps up on its own volition and whacks me in the head once a day because the guy who made the hammer thought I was too dumb to remember where I left it.

    The issue is not programs behaving as advertised; it is programs behaving in ways that aren’t advertised, and that violate well established principles of usability.

  20. Anonymous says:

    > A better analogy would be a hammer that jumps up on its own volition and whacks me in the head once a day because the guy who made the hammer thought I was too dumb to remember where I left it <<

    So Windows is supposed to somehow know that you don’t want the auto-reminding hammer program?  Then why did you get it in the first place?

    If your answer is that you didn’t know it would have the annoying behavior, then Windows has the same excuse.

  21. Anonymous says:

    Joel Spolsky writes about DNA replication, I mean, elegance. Go read it &ndash; it&rsquo;s entertaining

  22. Anonymous says:

    What might be nice is a way to get rid of the icons completely. XP and Vista try to do it by "hidding" them behind an expander. But why not have a virtual task bar (and virtual desktop to pop up onto) the icons can sit in instead of the real one and give the user a choice to send unwanted icons (and all their behavior) there?

    Seems a good way to permanently get rid of the annoying icons/popups while leaving the useful ones.

  23. Anonymous says:

    The guy who complained about Outlook alerts needs to turn them off. Perhaps there should be a second balloon comining up saying, "Did the last balloon irritate you? If it did click here to turn the feature off"

  24. Anonymous says:

    Can something be done about balloon popups that come up repeatedly, even after you close them again and again (e.g. unused icons on desktop)?  What about the common practice in dialogs of having a checkbox for “i don’t want to see this again”.

    [I already discussed this. -Raymond]
  25. Anonymous says:

    I think that a variant of <http://daringfireball.net/2004/06/broken_windows&gt; applies here: the way to get rid of annoying programs is by, as a group, not buying them.

    When that were to happen, developers that do not get the message that annoying users is not good for business would die out fast.

    Unfortunately, there are way too many users that have incredibly low expectations of the software they use.

  26. Anonymous says:

    Yes, people abuse the balloon tip feature. Heck, in my opinion balloon tips are flat-out rude and designed specifically to host the abuse. They are incredibly in-your-face.

    Compare the "you have mail" envelope to the "you have mail here’s a windows showing you some of the details whether this message matters to you or not" popup. True, the OS and software running the balloon tips are not psychic, but neither are they flexible.

    To be more accomodating there should be the equivalent of the "you have mail" envelope mode. A simple icon in the system tray that queues up all balloon alerts and notifications that various applications care to send to the user. Then, at the user’s convenience he or she can click on the icon to bring up the list of messages to browse or dismiss.

  27. Anonymous says:

    Oh, I hate the Java update balloon, and just because of it annoying me, I don’t run Java on my PC anymore.  So what if I can’t see a couple of programs on a couple of websites.

    The choices are install now or remind me in (some amount of time less than 3 days).

    I wish there was a "never ask me anything again" option.

  28. Anonymous says:

    Why is everybody complaining about balloon tips? The alternative isn’t "don’t annoy the user", it’s "annoy the user with a modal dialog"! Before balloon tips were available every program just popped a window in the middle of your screen that you had to click on to get back to work.

    I was just commenting about this "feature bonus" thing to my brother yesterday.

    We were installing a new printer for my mother, and its instructions explicitly said to install the software on the CD before plugging in the printer. If you had already plugged in the printer, you were to unplug it first. There was a sticker over the printer’s USB port warning not to plug it in before installing the software, along with various warning icons in manual.

    Needless to say, I plugged in the printer, PnP found the drivers (on the Internet probably), and the printer worked the first time I tried it without inserting the CD. So of course my brother wanted to know why there were such dire warnings about letting Windows discover the printer itself.

    I told him that it had to be some great "value added" feature (or as I called it "value subtracted") that popped up a window every time you printed something to tell you the status of the job, how much ink/toner is left, etc. Odds are it includes a system service, a user app that connects to that service, and a tray icon to let you know how that printer’s doing 24/7.

    My brother couldn’t understand why some printer manufacturer could ship such crap. I had to tell him that nobody ever got promoted for not implementing a feature.

  29. Anonymous says:

    "Since the update came from Microsoft, they’re held responsible."

    Create a separate site without MS branding.  "Software update" instead of "Windows update".  Users will use it because their apps prompt them to.

    If you’re concerned about liability from hosting the updates on an MS server, just make the site a front-end for a distributed system like Debian’s apt.

    "This causes a big burden on their labs, so they have to charge a substantial fee for this certification/approval."

    It would have to be pretty substantial to outweigh the costs involved in rolling your own update scheme. Especially since MS would be able to spread the costs across a huge ecosystem of developers.

  30. Anonymous says:

    Raymond said: Because Windows isn’t psychic.

    Why not? Maybe The Psynet will be the Next Big Thing to follow The Internet. Now that’d be a fun project to work on…

    (Futurama fans, add Hypnotoad here)

  31. Anonymous says:

    Meanwhile, tech supporters (maybe for the same company) can’t understand why users ignore key notifications and reflexively dismiss error message boxes without reading them, saying if users *read* them, they’d understand the problem and not have to call us. More than annoying, popup pollution undermines the usability of all apps.

  32. Anonymous says:

    Jason’s spot on there: no need for it to run through “Microsoft Update”, just put a registry entry somewhere (akin to Add/Remove Programs) which says ‘check for updates to Placebo Pro at http://example.com/placebopro/v1.11; if that returns a 200, invoke this .exe’. Now, instead of a constantly running updater service for each program, you have one registry key and one TCP connection each day. Much more efficient – and nobody can complain about “Microsoft Update” installing anything: it’s the Placebo Pro updater which is installing whatever gets installed. Any vulnerability there would be just as great in the permanently-running version they’d use now, if not more so!

    [Suppose there are three patches for Placebo Pro v1.11, one critical, one important, and one optional, and the user accepts the critical one, postpones the important one, and declines the optional one. What do you set the ping URL to? Or does the updater simply run unconditionally from this point onward until the user upgrades to v1.12? Expressing these complicated patch scenarios is probably more than one can expect to pack into a single URL, which means that the updater is always running – and you’re back where you started. -Raymond]
  33. Anonymous says:

    I’m sorry I can’t remember the source, but early in Vista MS planned to open up MS Update to third-party developers (probably without MS itself holding any information about the programs – i.e. the MS updating program would visit websites for every application to check for updates).

    It would probably be restricted to MSI (of course ;-) ) and people who had a domain name (of course :-) ).

    I guess they ran out of time or just didn’t see the payoff – for the record, I have Apple, Installshield, and Sonic "update manager"s on various machines in the house, and Adobe Reader, Winamp, Firefox, Realplayer, Quicktime, MSN Messenger, AIM, SmartFTP and Java all have update checkers, some of which run in the background. Laptops also usually have their own update checker (HP, Dell etc).

    There’s some serious developer time being wasted here. The only one on the list which really needs to be separate is Firefox.

  34. Anonymous says:

    The most damning argument against third-party update frameworks is that apparently no one even seems to know they already exist, because developers generally shun them! Installshield offers a central online update control panel, to consolidate the experience for the users, and it’s often included in recent OEM systems. Relatively few use it; the installer market is too fragmented for that kind of cooperation at this point.

    It would take something like Windows Installer to get everyone on board. Who knows, maybe Windows Installer v4 will include something similar. Although if Vista doesn’t have it, it’s a bit doubtful.

    Also people should realize that the alternative is not "rolling your own updater" – the majority of autoupdate systems come as ready-made plugins by the major installer makers. So what I take from all this is that a lot of people are taking their time to ruminate and armchair coach something they know nothing about. Is it so hard to research a topic before making comments based on nothing more than a blog entry and personal experience?

  35. Anonymous says:

    "If popups where used much less frequent then they would be more useful because the user hopefully would actually read them then."

    I think this is analogous to the Tragedy Of The Commons.  If pop-ups were less frequent, they would mean more.  But there would be nothing stopping *my* application from adding *just* one more pop-up that *I* think is important.  After all, one more pop-up won’t add too much clutter.  But when everyone else thinks that way, you end up with a really cluttered situation.

    fyi- http://en.wikipedia.org/wiki/Tragedy_of_the_commons

  36. Anonymous says:

    Re: Lance Fisher  

    Go to Control Panel > Java > Update. Turn off the "Check for updates automatically" checkbox.

    Please, no threads saying "this checkbox is too hard to find", "this is why MS should open up Windows Update" or "Uri Geller should be hired to make Psychic Windows".

  37. war59312 says:

    Hi,

    “[Suppose there are three patches for Placebo Pro v1.11, one critical, one important, and one optional, and the user accepts the critical one, postpones the important one, and declines the optional one.

    What do you set the ping URL to? Or does the updater simply run unconditionally from this point onward until the user upgrades to v1.12?

    Expressing these complicated patch scenarios is probably more than one can expect to pack into a single URL, which means that the updater is always running – and you’re back where you started. -Raymond]”

    Well, why not something like yum updater in Linux? The application displays updates for all applications. But only at times the user specifies. You can set which applications you wish to notify you by balloon tips or none at all. It is up to the user, not the developer. By default, all balloon tips are disabled. Windows only allows this one application to display balloon tips.

    Applications do not have to be modified in anyway since this application controls them all. Therefore if you allow a program that uses balloon tips to display them then it does, otherwise it can not.

    Also the application does not have to be running all the time. It only launches when it knows you wish to check for updates. Much like how you specify Windows Updates when to check for updates at a certain time in the day via the Windows Update service.

    Now of course what about when you run applications that use balloon tips but are not about program updates and our program updater is not running. Well, the service is always running and it is notified by Windows when a balloon tip wants to be displayed and it checks to see what type of balloon tip it is and if it is allowed to display or not. So would this not solve the problem?

    And for your example…

    The user can just pick which updates to install. And can also choose which type of balloon tips (types could be like you said: critical, important, and optional) to display and how frequently on a per application basest.

    Sorry if I have confused anyone… Not a professional developer…

    Take Care,

    Will

    [Okay, so you’re agreeing that the original plan was flawed. I’m not going to try to design Windows Update in blog comments. (I’m again baffled by people who assume that Windows has psychic powers. How does it determine “what type of balloon tip it is”? No, don’t tell me. I don’t want to know.) -Raymond]
  38. Anonymous says:

    "<blockquote>Because Windows isn’t psychic.</blockquote>

    No, but it could surely limit balloon-tips so that they can only display if the executable is running, no?  Since that’s the rule that you recommended developers follow."

    You *DO* realize that your proposed algorithm is: [programs whose code is not executing should not be allowed to display pop-ups]… Ponder that for a moment. If a program’s code isn’t executing, it *can’t* display a pop-up.

    Oh, did you mean Windows should ensure that the pop-up from this vendor’s notification application (the one running from the Startup group) shouldn’t be allowed to display a pop-up if some other application written by this vendor (the one that depends on these resources) isn’t running?

    And how do you propose that Windows should figure out the relationship between the notification application (the one running from Startup) and the main application (the one that depends on the resources)?

    To provide a concrete example: how is Windows supposed to determine that jucheck.exe or jusched.exe can only display a pop-up when java.exe or javaw.exe is running?

    Basically these complaints boil down to "why did the hardware store sell me this hammer when they knew someone might break into my house and hit me in the head with it, surely they could make a hammer that works on nails but doesn’t split my skull open".

  39. Anonymous says:

    Suppose there are three patches for Placebo Pro

    I’m guessing that the ping returns a boolean, and if there are any updates at all you run the updater. You’re right that the URL will get ugly over time as extra bits are tacked on the end to show the complete update path followed (I make it two bits per update, for installed/ deferred/ ignored/ unseen), but even if you add two bits per week for a year that’s 100 bits/15 characters. After ten years of that you’ll be nearly as big as a basic search query. And you’ll be doing that every day! But I’d hope that there would be a major version release that reset things before that point.

    I think it could work. The problem is that it doesn’t help the software makers that I can see. It especially doesn’t give them an incentive to remove their multitudinous harrassment of the user. What advantage would BollixWare gain from removing their advertisements from their software?

  40. Anonymous says:

    [Because Windows isn’t psychic. There are good reasons for showing a balloon tip and there are bad reasons. Windows doesn’t know why a program is displaying a balloon. Or are you saying that there exists an algorithm for determining which balloons are good and which are bad? That’d be awesome. -Raymond]

    How about adding a “Supress popup until this program terminates” option to the “compatability” tab of program’s properties dialog.

    When this option is turned on, all popups generated by other applications are redirected to another “virtual” desktop and never be allowed to steal focus.(Perheps if the application isn’t in full-screen, we can make those popup appear in 30-50% opacity that cannot be topmost and steal focus so the user can still be alerted but won’t get distracted unless he wants to). When the program closed, the popups are brought back to the default desktop for the user to read.

    It’s cool to allow users to set this to all full-screen games.

    [Um, Windows already suppresses balloons when a program is full-screen. -Raymond]
  41. Anonymous says:

    Jason: "So why not open up Windows Update (or a similar service) to third party developers to manage their updates?"

    Right. This would cause a couple of problems that I can see:

    1. Microsoft Update downloads a product update that contains malware or a virus, or a bug that formats the user’s hard drive and wipes out all of their critical data. Since the update came from Microsoft, they’re held responsible.

    2. In order to prevent #1 above, Microsoft has to certify/approve all software distributed through Update. This causes a big burden on their labs, so they have to charge a substantial fee for this certification/approval. Small shops (smaller than IBM/Oracle/etc.) can’t afford this substantial fee, so they either stop providing updates for their software, charge a big fee for each update (users like paying lots of money for a bug fix, right?), or *don’t* use Windows Update to distribute their updates; they write their own updater instead. Hmmm… Progress?

  42. Anonymous says:

    "[Um, Windows already suppresses balloons when a program is full-screen. -Raymond]"

    I think he’s talking about the fade-in toast-like notifications that Outlook 2003 creates when new mail arrives. These aren’t Windows ballon notifications at all.

  43. Anonymous says:

    "Or are you saying that there exists an algorithm for determining which balloons are good and which are bad?"

    Sure. If it’s from *my* code, it’s good. If it’s from someone else’s code, it’s bad. Easy.

    (Unfortunately, other people seem to be copying this approach).

  44. Anonymous says:

    Brian: Exactly. Thanks for helping me to clarify. :)

  45. Anonymous says:

    Actually, I wish the feature I suggested to be applied to all kinds of messagebox/balloon/notifications or even child-windows that’s out of current context. "Unless it is going to fail what I’m doing, don’t disturb me until I’m prepared to be disturbed."

    Perheps it’d be also good to create a "print queue viewer" style "popup manager" that’ll allow me to select  and dismiss the popups one by one, or multi-select the popups and dismiss them all at once(by time and/or title)

  46. Anonymous says:

    The most annoying balloons in Windows are the ones I get everytime when I start XP which tell me that some partitions are full.

    That feature might be useful for the system partition or if an application writes to such an paritition, but not for my data partitions. Yes, drive X is full of MP3s and will be full forever. And no, I don’t have any intention to free up 200 megs just to satisfy Windows.

    And often I hit the balloon instead of the X and Windows starts to calculate how much space I can free up (nothing) and even Cancel doesn’t work.

    Keep my drives alone and don’t waste my startup time.

    Win95 was the best Windows ever, not technically, but simple and clean.

  47. Anonymous says:

    For games, there is a DirectX exclusive mode, that will prevent
    other applications from using the screen while the game is running.
    Unfortunately, it was only introduced in DX 8, there is no equivalent
    for OpenGL games (eg. Quake series/Doom 3) and many games do not use it
    when they should.

    How about making it the default for full-screen games? Or putting an
    option in the compatibility tab to force exclusive mode, even for
    OpenGL-based games?

    [It’s already the default for full-screen
    anything, DirectX or no DirectX. Notice that balloon tips don’t
    interrupt your PowerPoint presentation. -Raymond
    ]
  48. Anonymous says:

    Oh yes, the "Drive X is full" notification, with corresponding disc cleanup program.

    Back when it was introduced, in Windows 98, you could turn it off per-drive using the drive’s properties in My Computer.

    When it was ported over to the NT line for Windows 2000, that ability was lost. The only way to get rid of it now is a registry setting that turns it off for all drives.

    I guess the person/persons who ported it either didn’t know about that feature, or were feeling lazy. Either way, I don’t expect that feature will re-appear anytime soon.

  49. Anonymous says:

    [Suppose there are three patches for Placebo Pro v1.11, one critical, one important, and one optional, and the user accepts the critical one, postpones the important one, and declines the optional one. What do you set the ping URL to?]

    The timestamp of the last update the user has accepted/rejected. Next time, the updater will be invoked again (because there’s an update to consider: the ‘important’ one). The acceptance/rejection can be kept in the app’s own registry area: all the meta-updater needs to track is whether or not to invoke this updater.

    [Or does the updater simply run unconditionally from this point onward until the user upgrades to v1.12?]

    Until there is no longer an update to which the user selected ‘ask again later’.

    [Expressing these complicated patch scenarios is probably more than one can expect to pack into a single URL, which means that the updater is always running – and you’re back where you started. -Raymond]

    Well, using second-resolution timestamps you’ll want more than 32 bits to avoid wrapping in 2038; 64 bits in hex, 16 characters. I doubt anything will choke on a URL with that in. Or use If-Modified-Since requests for the update list itself, killing two birds with one stone: the URL gives a list of available updates, which is only transferred when necessary.

  50. Anonymous says:

    Andre, you can turn off that check (for all drives only) using TweakUI.

  51. Anonymous says:

    I just turned off ALL balloon tips.  Works great.  Sorry, can’t remember the name of the setting, it was in one the administrative tools.

  52. Anonymous says:

    That setting is also in TweakUI.

  53. Anonymous says:

    [How does it determine "what type of balloon tip it is"? No, don’t tell me. I’ll figure it out with my psychic powers.) -Raymond]

    Fixed.

  54. Anonymous says:

    Thanks Bob, great tip.

  55. war59312 says:

    “[Okay, so you’re agreeing that the original plan was flawed. I’m not going to try to design Windows Update in blog comments. (I’m again baffled by people who assume that Windows has psychic powers. How does it determine “what type of balloon tip it is”? No, don’t tell me. I don’t want to know.) -Raymond]”

    I meant in the next version of windows. The balloon tip system would have to change. Too late now of course. It would know based on a per application base. Right, the user has to tell it what each balloon tip is. Yeah no way to do it automatically, as of now. But hey at least it gets rid of the annoying ones. Since you have to manually allow them the first time. :)

    I suppose though that could be fixed too but yeah the entire system would have to be re-written. And yeah it would kill all current balloon tips, I’d suppose. That or just add them all to a category by default in which all balloon tips are not allowed.

    The new system is different now. Now in the OS there are different ways to categorize balloon tips. An author must use one of them or their balloon tip will not be allowed at all. This forces all developer who wish to use balloon tips to comply with standards. They can not just use them all. Each category has different rules which are controlled by the OS which in turn control how and when applications are allowed to display balloon tips.

    That or just disable balloon tips all together by default and make it a non issue. :) lol

    [I expect that developers will intentionally mis-categorize their balloons to get them to show up. -Raymond]
  56. Anonymous says:

    Raymond had a really good post yesterday about programs that grab your attention inappropriately . I

  57. Anonymous says:

    [I expect that developers will intentionally mis-categorize their balloons to get them to show up. -Raymond]

    He meant the user who sits at the machine has to select select “Don’t ask me again.” for each balloon tip.  In other words, all balloons would then have a “Don’t ask me again.” option added by default and Windows would need to remember that program A makes a balloon that the user doesn’t want to see anymore.  I think Windows doesn’t currently have that kind of power to determine whether this balloon that the program wants to show is the same as the last balloon the program showed.

    [You’re asking for psychic powers again. Are “The document X is ready” and “The document Y is ready” the same message? -Raymond]
  58. Anonymous says:

    As usual, the solution is amazingly simple:

    For programs that pop balloons, catch the pop and instead do a very subtly animated “!” icon in the tray. Hovering over or clicking it will show all the “balloons” and allow you to dismiss them by one click or right click and select not to activate the “!” icon animation again when this particular message from this program comes.

    Easy to implement, much less annoying. The animation could have a setting to adjust the strength of the animation.

    [Programs will just embed a timestamp in their message so each message is treated as a new message never seen before. -Raymond]
  59. Anonymous says:

    This blog entry is about a funny story about something some software did, not windows update or a design discussion about balloon help.  

    But anyway, please people : stop the insanity with wanting to hook into Windows Update.  

    You DO NOT need to push updates to applications to users machines.  This invariably results, like it does for Apple apps on OSX, on a list of updates and nagging for downloads for applications the user doesn’t even use.  OSX updates is particularly stupid about this, nagging you to download iPods updates when you don’t even own one, or iLife updates.

    Users do not want this, they don’t want you to install crap on their computer when nothing is broken and needs fixing.  At least in Apple’s case it’s only from one vendor.

    If you want to check in your app’s startup if an update is available, sure, do that.  Do not install something that runs when the app is not running, this is EXACTLY what the blog entry decried!!

    The problem with Quicktime, Real and Java update is that IE doesn’t have an update check for plug-ins, that’s what the problem is : they’re plug ins seemlessly embedded inside web pages and not applications.

  60. Anonymous says:

    This attention problem has its contemporary in the traffic sign pollution.

    And it is a success to remove traffic signs!

    Europe is a a special case here, I’ve never seen so many (pointless) traffic signs as I have in some European countries (Germany springs to mind).  Driving down German roads, you’re bombarded with such a blizzard of signs that it’s a wonder German drivers can concentrate on the road ahead.  I was driving there with a US friend recently and we did an informal estimate that at least two thirds of all the road signs we saw could be removed with no loss of functionality.  So it’s really a matter of determining what the base rate is, if the S/N ratio is 1:3 then you can do some pruning; if it’s 1:1 then you’re fine.

  61. Anonymous says:

    The only one on the list which really needs to be separate is Firefox.

    That one’s actually quite easy to implement.  Here’s the pseudocode:

    Display( "Firefox is download background updates" );

    Sleep( 600 );

    Display( "The background update could not be applied successfully. Downloading full update" );

    DownloadUpdate();

    Sleep( 300 );

    Display( "The full update could not be applied successfully. You will need to exit Firefox and run the update manually" );

    Oh, and it disables any means of stopping it once it’s started.  At least Windows update gives you the option of bailing out, with Firefox once it sees there’s an update, it’s going to (try to) install it come hell or high water.

  62. war59312 says:

    “[I expect that developers will intentionally mis-categorize their balloons to get them to show up. -Raymond]”

    Right, that is why the user must first validate them. That is why all are disabled by default. :) So the good guys will be allowed and the bad ones wont be… It’s up to the user to first say which are which. :)

    How easy or how difficult that is to create something like that is beyond me at the moment.

    “[You’re asking for psychic powers again. Are “The document X is ready” and “The document Y is ready” the same message? -Raymond]” Both questions would fit in the same category, so the user either chooses to block the entire category or not. So yeah it does not really work on a per ballon tip basis but rather per application which fits into one or more of the categories. But yes the entire system would need to be re-written but again the applications themselves would not have to individually be, as the user can still enable them as usual. The point of the categories though is to simply make it easier for the user.

    So say the developer lies about the category, well that application’s balloon tips will still be disabled until the user gives permission. And when the user goes to give the permission the category chosen by the developer acts as a recommended category not the real thing. It is always up to the user. But the reason why the developer would want to comply is because more users would be more inclined to enable their application’s balloon tips if it correctly identifies itself. In the very least at least the user knows about every application that wishes to. No more guessing as to which application is displaying what balloon tip anymore.

    [The developer will just display the balloons from a shell extension. Now every balloon’s application is reported as “Explorer”. The user is now back to guessing. -Raymond]
  63. war59312 says:

    Well ulric, something like yum on Linux would be great for program updates.

    Nothing is installed or downloaded automatically and even no nagging. The user runs the program when the user wishes to check for updates. Only shows updates for programs which they have installed and only the type of updates (sources in Linux, such as extras) they wish to receive.

    Though it could run in the background. But still no nagging. Instead much like how WOC does it. The icon changes different colors. So when its green you know all your selected applications are up to date. When its yellow it means there are some low priority updates for your selected applications. And when it is red it means there are critical updates for your selected applications. No balloon tips ever. :)

  64. Anonymous says:

    Gabe:

    Before balloon tips were available every program just popped a window in the middle of your screen that you had to click on to get back to work.

    Speaking of which, I’d like a switch that I can throw that makes all system modal stuff non-modal. Should be pretty straightforward.

    [The developer will just display the balloons from a shell extension. Now every balloon’s application is reported as “Explorer”. The user is now back to guessing. -Raymond]

    how hard is it for explorer to correctly report which extension it is?

    [You mean trusting the return address? (Look, any steps you take to make it harder for programs to display balloons will just drive them to use those even more annoying mechanisms that existed before balloons.) -Raymond]
  65. Anonymous says:

    [It’s already the default for full-screen anything, DirectX or no DirectX. Notice that balloon tips don’t interrupt your PowerPoint presentation. -Raymond]

    But i do notice MSN “toast”s, dialog boxes and other windows flickering, mis-coloured through games.

    I have a Media-Centre-like TV program, which has an option to use “DirectX exclusive mode” in its preferences. With it on, I see nothing but still hear MSN’s sound effects, with it off, I get flickering “toast” windows.

    Are you telling me that games developers explicitly turn off this mode?

    [Those “toast” windows are not taskbar notification balloons. Explorer has no control over those. -Raymond]
  66. KJK::Hyperion says:

    Stu: Explorer, since it has to maintain a list of visible windows (for the taskbar), is notified every time a window goes in the foreground. It has heuristics to detect full-screen windows, and when one goes in the foreground, it goes "out of its way" – hides the taskbar, hides deskbars, holds pop-up notifications. DirectX applications that display in full-screen create a "fake" window so they can be properly activated/deactivated and detected as full-screen by regular applications – the application actually ignores the window and paints directly on the screen. "Exclusive mode" is just a way of "hijacking" the screen so that it won’t be shared with GDI, but it isn’t necessary to hide notifications

    Unfortunately, very few developers who write replacements for taskbars, deskbars and pop-up notifications bother with these "subtleties"

  67. war59312 says:

    "[You mean trusting the return address? (Look, any steps you take to make it harder for programs to display balloons will just drive them to use those even more annoying mechanisms that existed before balloons.) -Raymond]"

    I agree with that 100%!!!

  68. Anonymous says:

    I meant that [I think Windows doesn’t currently have that kind of power to determine whether this balloon that the program wants to show is the same as the last balloon the program showed.] == [You’re asking for psychic powers again. Are "The document X is ready" and "The document Y is ready" the same message? -Raymond]

  69. Anonymous says:

    I only have one big problem with the balloon tips, they cast a shadow and ATI’s drivers slow video down to 1 fps when there is such on screen, really annoying…

  70. JamesNT says:

    I’m going to ask the question that Mr. Chen, for whatever reason, can’t ask:

    Do some of you really consider yourselves to be professional developers?  All the ideas were you require Windows to be psychic are just plain stupid.  Surely professional developers can think through these scenarios to their logical conclusion and know the answer upfront.  

    Oh, wait, you guys are just trying to find ways to hammer Mr. Chen and make Microsoft look stupid.  Nevermind.

    Have any of you considered the fact that in your quest to make Microsoft look stupid the only thing you have done is make YOURSELF look stupid?

    I would never hire some of you.

    JamesNT

  71. Anonymous says:

    I attended Microsoft’s launch of their new operating system (Vista) and their new version of their Office suite (Office 2007), in the LA Convention Center. Both products look shiny. I had participated in the Office beta, and like what they…

Comments are closed.