Drivers: a new kind of bloat

Over the weekend I bought an HP LaserJet 1012, the first printer I've had in years. Good printer at a great deal this week at Staples ($150).

I let the driver install with all of the default options. After rebooting (sigh...) I was prompted with the new XP SP2 Firewall dialog, asking me if I wanted to let “javaw / Unknown Publisher” open a port... No. On further investigation I found that the printer driver installed a set of tools that included:

  • Java Runtime Environment 1.3

  • Apache Tomcat

Instead of a lightweight client side app, the printer tools worked by installing a web server on my machine that runs at startup! In Task Manager the memory usage was reported as ~25MB Mem Usage / ~25MB VM size. Sure, the OS should be able to keep most of that paged out and minimize the end-user impact, but that strikes me as a bit hefty for an always-running background application for a print driver. It's also not very secure. I didn't find an obvious way to remove just the tools either, so I ended up nuking it from startup by removing the registry key under Run.

I suspect a few things are going on. The first is an effort to lower development costs. It's probably a lot easier and cheaper to find developers who can bang out Java and HTML than it is to find someone who can develop a client side app in C++ with a good UI and the same level of stability. The second is the cross-platform aspect. It's almost certainly easier to leverage Java and Apache to write this kind of tool so that it works on Windows, Linux, HPUX, OSX, etc. Finally, the tools may included some remote administration capabilities for print servers; I didn't poke around long enough to check. None of these are an excuse for installing this bloat on a home user's machine though. Oh, and when the user's machine slows down, the printer driver/tools crash or refuse to print, or something else goes wrong I wonder who gets the blame...

BTW: No, I didn't read the installation instructions or manual. Maybe they mention to not install the tools if you don't want all this stuff. 😉

(In other news, nVidia's video drivers now include a pop-up blocker for IE.)

Comments (7)

  1. Jerry Pisk says:

    If you search Raymond Chen’s blog there was debate where he was defending companies that do this (as opposed to us requiring companies only release drivers with no applications). It was a post about cheating the WHQL process…

  2. RichB says:

    Are you suggesting that writing printer tools in .Net is a bad idea?

  3. David Cumps says:

    nVidia bringing out a popup blocker for IE, that makes sense….. not, probably just for branding or marketing talk "we include a popup blocker!"

    I never like installation disks who, when you choose Install Drivers, install a lot of other apps as well. One solution to that has been to never use their installer, and locate the driver files myself so Windows can install them.

  4. B.Y. says:

    HP is putting out some really over bloated drivers. I installed this PSC 2110 (or whatever) printer recently:

    *driver+apps setup took 3 minutes

    *it stuck 7 or 8 EXEs in autorun

    *required a reboot which took much longer than usual not surprisingly

    *after reboot, 3 entries left in autorun

    *a taskbar app plus a couple of background app left running

    I killed the taskbar and the background apps, removed the remaining autorun entries, re-rebooted again, and the printer worked just fine. So none of that bloat was necessary. Although if you print, a couple of background apps come back.

    I’ve written printer drivers before and as far as I know, a printer driver should be able to install and uninstall without requiring a reboot.

    It’s probably not just HP, I observed some people just can’t keep it simple and straight-forward when it comes to software development. They enjoy cooking up complexity, it massages their ego or something.

  5. HP makes great hardware.

    HP makes CRAP software for its hardware.

    I become more and more convinced of this with every new HP printer I install.

  6. RichB, I think the end-user experience needs to take priority over developer convenience. Of course, as a developer sometimes I need to be reminded of that. 🙂

    So this means it’s a sliding scale. I think it’s fine to write a print driver tool that’s a Java or .NET app, so long as it only runs when you directly launch it to diagnose something.

    If you want to write a tool that runs at startup and is always running in the background, I’m old school (hey, retro is in, right?) and believe that such an app should be reasonably lightweight in terms of startup time, CPU usage, and working set. Currently this means C or C++ and avoiding pulling in big libraries.

  7. circuit_breaker says:

    Ohh, man, I totally agree with you. this very same thing happened to me last week, but with a bigger HP laserjet. I could not believe it. Utter disregard for the basic sensibilities of a driver release. From H-freakin’-P. they’ve had bad drivers, don’t me wrong but this is just a joke.

    I promptly removed the items 😀

    (i do love my jetadmin though)

Skip to main content