It’s my computer, dagnabbit, not yours!


I’ve been wanting to write this one for a while, but continually got sidetracked, but there’s no time like the present…

Many others (I’m too lazy to chase down references) have commented on the phenomenon known as “bloatware” (also known as “craplets” or “shovelware“). 

I’m not going to talk about them, too much has been written about them by others already.

Instead I want to talk about applets in general.  These are the “little” helper processes that software seems to leave lying around after installation.  These are a particular pet peeve of mine, I’m well known inside MS (or at least within the Windows division) as being rather fanatical about them, and fighting tooth and nail (sometimes successfully) to get them removed.  I don’t know how many times I’ve asked: “Why does your product (or feature) have all this crap running (where ‘crap’ is defined as ‘stuff I don’t want running on my machine’)?”

Applets come in lots of sizes and shapes – they can be services waiting on an app to use them; they can be processes that handle systray icons; they can be helper applications.  But they share one common: they all consume resources, sometimes LOTs of resources.  And I would rather that these applets NOT consume resources.

Nowadays, machines come with a fair amount of resources – my current dev machine is a dual 2.4g Core2Duo 6600 with 2G of RAM and a reasonable amount of disk space (750G on 3 drives), but Vsta runs on machines that are far less capable (before it died, my laptop was a P2 with 512M of RAM and it ran Vista Ultimate just fine (no glass, but other than that it worked well)).  On such a machine, every single unnecessary process can be painful.

The Windows team has known that this has been an issue for years, and has built in a ton of features into the operating system to help alleviate the pain and suffering associated with applets (some of which have been there since NT 3.1), but the reality is that nobody takes advantage of this functionality, and that’s a real shame.

In a potentially futile attempt at trying to inspire people to improve our customers’ experiences, I’m going to dedicate this week to writing posts about applets and how developers can fix them.

Btw: I want to be totally clear here: Microsoft is just as guilty as others in this arena.

Tomorrow: Why do people write applets?

Comments (31)

  1. Norman Diamond says:

    > my current dev machine is a dual 2.4g Core2Duo 6600 with 2G of RAM

    Oh, just one step away from being prohibited to hibernate (by design[*]).

    Maybe you consider this off-topic because hibernation isn’t bloatware or shovelware, but it is your computer, dagnabbit, not your someone else’s.  It would be nice to improve customers’ experiences in this area.

    [* This means not being prohibited by bug, in the case of 2GB, for which there is a hotfix which is actually downloadable and I appreciate that very much.  The case of 4GB has been posted publicly by Microsoft:  Microsoft’s policy is that the length of time it takes to hibernate and restore 4GB is unfriendly to the user, i.e. it’s more user friendly to force them to shut down all applications and then newly start up all applications again after rebooting.  Why did Microsoft neglect to post publicly their reason for neglecting to impose the same user friendliness at the level of 512MB, they didn’t say.]

  2. Cheong says:

    That’s good. I can’t wait to hear about them.

    I always wonder why WinXP always auto-runs "new phonetic" and "new changjei" IME even if I’ve not chosen to install them. (I always use "Quick" as my input method… and hardly anyone I know about use the "new changjei" IME, almost all of them prefer the origional one.)

  3. Anony Moose says:

    Because noone had invented Vista’s sidebar "Gadgets" yet.  😉

    (Of course, bloatware is different to genuinely useful tiny applications, so not all gadgets will be craplets, but some craplets will be inevitably be implemented as gadgets.)

  4. Marc says:

    This sounds interesting.  Let’s rid the world of craplets once and for all!  😉  I’m looking forward to hearing your ideas.

  5. Actually, I want to be clear: I have absolutely no problems with craplets (ok, I do, but not that much).

    What I have issues with is poorly architected craplets.  IOW, craplets where the author didn’t follow the #1 principle of applet design: It’s not your computer, it’s your customer’s computer.

    I’m hoping to write up some basic rules that help to make applets less intrusive.

  6. Skip says:

    It’s not vista, but on my dev box basically 100% of the time after I’ve had a crash due to a bluescreen or losing power, on the next boot the various craplets will hang.  Something’s deadlocked, and I’ve never exactly figured out what.

    The only clue I’ve got is that when it happens I get a warning in the eventlog that the TCP connect limit has been reached.   But whenever this happens I can’t actually launch something like TCPView to see what’s got all the connections going because it will never launch.

    But my system’s taught me that in this case, if I wait "enough" time, being something more than a minute, but I’m not sure how much more, and then tell the system to restart, on the next reboot it boots cleanly.

    When I look at things, there are a ton of craplets running.  Do I really need 3 copies of the ATI utility CLI.exe running?  I don’t know, and killing them in task manager doesn’t seem to hurt anything.   The info in the VERSIONINFO resource just says that it’s the "Command Line Interface application for all ACE Components" which isn’t really helpful.   They have a VM size of about 60mb between them.

  7. I’m all behind you Larry. I also get on my soap box about this topic as well.

  8. JimmyB says:

    The Windows operating systems and associate automatic updates seem to be the cause of the majoriy of craplets and unwanted software installed on my machine.  I need automatic updates to patch security updates in the OS, but that’s not all that gets downloaded in high priority updates is it?  (e.g. that "insulting" font nonsense recently)

  9. Phaeron says:

    The new annoying trend in applets seems to be to write them in .NET, which is worrying to say the least. It is really irritating to see a video card control panel launch on startup that eventually consumes 60MB+ of private heap and takes FOREVER to page back in when activated.

    I also love it when applets steal focus to a hidden window on startup.

  10. Mike Dimmick says:

    Windows needs a central update scheduler.

    I don’t mean that third-party applications would have to upload their updates to Windows Update – I think that’s a leap too far. But it does need a way for third-parties to register with a central update service, so we don’t get a different one (which runs on startup) for each damn vendor’s products. It should be a delay-start service on Vista, and it shouldn’t have any UI unless there are actually updates available. It should also not require use of Windows Installer.

  11. Rob says:

    "It should also not require use of Windows Installer"

    But, but, but, that’d mean that we’d be back in the "bad old days" where installations were an uncontrolled pop-luck experience. Any centralised install/update service that doesn’t use Windows Installer is absolute insanity.

    Back on the "applets" note, I’ve just ran msconfig on my (newly built and provisioned work PC) and the list in there is truly shocking! Time for a cleanse me thinks.

  12. Thomas says:

    Heh, software comes with far too much random applets nowadays, and just about every program assumes that it’s the best program of all best programs and hence should be running constantly and splattered all over the GUI.

    I’d be interested in how applets are meant to be programmed under Windows (pre-Vista).

  13. Jim Howard says:

    I’m a dinasoar who still writes desktop apps, the kind you double click and they run even if you’re not on the net.

    What with Vista it sure is tempting to load all of my functionality into a service, with my exe just being a gui that talks to the service.  

    With a service my app will pop up and be working very quickly, and I can bypass most of the security issues and just do whatever I want.

  14. JimmyB: I’m not aware of ANY applets that are pushed via WU.  It’s possible that you picked up a driver update that included an applet via WU, but Microsoft doesn’t push any updates with new applets.

    Mike: I 100% agree.  It’d be cool if MS opened up WU for 3rd parties – the WU folks know how to do updates in an unobtrusive manner.

  15. AndyC says:

    Ooh, really looking forward to this. Resource hogging craplets are a pet peeve of mine too. Hopefully this will give me plenty to link to next time somebody asks about writing one.

  16. Dave says:

    > Windows needs a central update scheduler.

    I second this motion. At the moment I have different background software from Apple, Sun, HP, and Microsoft all doing the same thing–pinging servers and looking for updates. Add to that all the apps like Firefox and Fiddler that try to poll for updates while they are running. None of that activity is coordinated.

    The Linux package managers have a really good way of doing this; very few apps on Linux feel compelled to roll their own update scheme.

  17. Bob says:

    Thirded. A centralized update system for third-party software would be wonderful.

    One thing I do actually like about Vista is the way Windows Update seems to have been folded back into the OS where it belongs. I hate having to install a new update control just to find out I need to reboot as part of a Windows Update Update. Barring major bugs or security holes, these things should be well-understood enough to not require constant updates just to list the available updates.

  18. Peter Ritchie says:

    Looking forward to more information!  My favourite bloatware: Java and everything from Adobe.

  19. Igor says:

    Larry let me help you a bit 🙂

    My rules for writing craplets:

    1. DON’T WRITE THEM

    2. SEE RULE #1

    My rules for writing applets:

    1. THE COMPUTER IS MINE, NEVER FORGET THAT

    2. NEVER STEAL THE FOCUS FROM THE FOREGROUND APP

    3. NEVER USE MORE THAN 5% OF (CPU|RAM|HDD|NET|GPU) BANDWIDTH WITHOUT ASKING

    4. NEVER RESTART WITHOUT ASKING

    5. DO NOT POLL, REGISTER FOR NOTIFICATIONS

    That would be it, mostly.

  20. JimmyB says:

    Perhaps a definition of craplets is required?

  21. Norman Diamond says:

    > the WU folks know how to do updates in an unobtrusive manner.

    Does that mean they know how to not pop up every 5 minutes reminding you that 5 minutes have passed since the previous time that you said you’re not ready yet to close all your apps and reboot?  Do you mean they know how to not steal focus every 5 minutes?  Do you mean they know how to not steal a keystroke that you thought you were typing into Visual Studio or Outlook Express?  And if the keystroke tells WU to do a reboot without saving your source code or e-mail message then they know how to not do that reboot and they know how to not lose your work?

    Yes?  Good, that is excellent news, thank you.  The WU folks know how to do updates in an unobtrusive manner.

    Now please, pretty please, can you persuade the WU folks to USE their knowledge?

  22. As I’ve mentioned , applets can be a plague on your system. The annoying thing is that it’s possible

  23. Bikedude says:

    I hope some of the big names will listen to you.

    My current pet peeve crapware is Acrobat Reader:

    – it seems to run some "fast load" startup application (removed manually)

    – I had to explicitly tell it to not show up inside Internet Explorer (why on Earth would I want to embedd it?)

    – …an action which has rewarded me with "ok, then that means you want me to maximize the reader window when IE launches a .pdf file!" (I have a 30" monitor, a maximized Acrobat Reader does not put me into a good mood)

    – upgrade Acrobat and repeat above procedures again and again

    I am also impressed by ATI’s crapalyst control center that can be launched from the notification bar. …except it takes an eternity for the poor bugger to launch! (on a core2duo with a reasonably fast SATA drive)

    You know the CIAs, KGBs and MI5s of this world are underfounded when the guys (and they are mostly guys) producing such software hasn’t been taken out in the desert and shot a long time ago.

  24. Igor says:

    "You know the CIAs, KGBs and MI5s of this world are underfounded when the guys (and they are mostly guys) producing such software hasn’t been taken out in the desert and shot a long time ago."

    Quoted For Truth.

    Norman, I recently run WU in Vista, it downloaded 50MB of NVIDIA drivers (which I told him to do because it was optional). It was non-intrusive except that the screen has gone blank for a few seconds after the download completed. Video driver got installed without a reboot. You can postpone installation for 4 hours if I remember correctly.

  25. Miral says:

    Modern PCs don’t have all that many spare resources.  32 bit OSes are limited to 3GB max RAM, and my Vista box was regularly swapping (to the point of unusability) with only 2GB RAM.  And even now it frequently hits the ~40000 max handle limit.

  26. Marc K says:

    > I’m not aware of ANY applets that are pushed via WU.

    WGA was a pretty bad one.  It consumed resources, did absolutely nothing for the benefit of the user and used techniques commonly used by spyware to ensure that the user did not successfully terminate the wgatray.exe process.

  27. I’ve never seen WGA install a WGATray program, are you sure about it?  Possibly this is because I don’t run pirated versions of Windows (or machines with false positives).

  28. Norman Diamond says:

    You can get false positives from MSDN (with WGA on XP).  Hmm wait, you’re in Microsoft, so maybe this needs correction.  Outside of Microsoft, one can get false positives from MSDN.

    Somewhere I took a screenshot of a false half-positive in Vista too.

  29. mrk says:

    Norm:

    sc stop wuaserv

    When you reboot at a timing of your choice, wuaserv will run again.  But I prefer to install updates just before I reboot since when running with things half installed I sometimes get strange behaviour that goes away after reboot and install finishes.

    The thing that I find annoying about WGA is that if you go to windows update and say don’t install WGA and never show it again, it comes back into the list of critical updates the next time a change is made.  If I said I don’t want WGA craplet installed, and I don’t want to see it in the list again ever.  With the current behaviour I would never set the ‘automatically install updates’ option (even if there wasn’t the issue of strange behaviour between install and reboot).  The ‘critical updates’ list that gets installed automatically should ONLY be bugfixes for security, not craplets or other things being pushed down.  Someone was complaining in another blog entry about itunes’ update trying to foist quicktime on people during update — I consider installing new programs/applets in the list of critical updates to be almost exactly the same thing (and therefor also extremely annoying!)

  30. Mark Sowul says:

    > the WU folks know how to do updates in an unobtrusive manner.

    I’m with Norman on this one (for once).  I can guarantee that I have the best "WU screwed me over" story: new XP install, overnight partitioning operation of existing data, automatic updates turned on (oops)…

    Yeah, so evidently, WU decided, "hey if the user doesn’t answer me when I bug them whether or not to restart the computer, I guess any open apps are irrelevant so I will just do it anyway."  Hooray, my partition became totally scrambled!  

    Thanks a lot for nearly causing 200 GB of data to be lost, thanks for causing me to need to spend $50 for a data recovery program that could actually successfully untangle the mess that was created – it was a partition move operation, moving the 200 gb partition down 10 gb, and so there were 2 partition entries now, the original and the new one, but the move was not completed (that the "resume" functionality of the partitioning software didn’t work is another bit of grief, btw).  Two copies of every file, but one of each was corrupt and the other not.  That was fun to sift through.  

    Thanks a lot WU team!  I hate your guts.  IMO the machine should NEVER be restarted without explicit confirmation.  And as Norman pointed out, thanks for nagging me without giving me the option "I’ll restart when I’m good and ready, dammit."  

    Needless to say I never keep AU on anymore (notify only).

  31. kane says:

    Excellent rant!  I’m listening for the next installment!