April 13, 2024

Why is printing so hard?

Recently I bought a mildly used laser printer and wanted to set it up on my home network. In a better world, this would be a trivial exercise — just connect the printer to the network and let the computers discover it. In the actual world, it was a forty-five minute project that only a reasonably handy network jockey could have hoped to complete. (If you care about what exactly I had to do, see below.)

John Hartman says, “Printing is the hardest problem in computer science.” It often seems that way. But why?

Plug-and-play printing seems pretty simple, compared to many of the things that computers do routinely without trouble. Granted, it’s not trivial to get the full variety of printers to work with the full variety of computers, but our collective failure to do so is — or should be — surprising.

There must be some lesson here about engineering, or human nature, or something. Lately I’ve gone around asking people why printing is so hard. I’ve gotten some interesting answers, but I don’t think I really understand the issue yet.

What do you think? Why is printing so hard?

[For the record, here’s what I had to do to get our newly acquired HP LaserJet 2200DN printer working on our home network: I plugged the printer in to our network, but the Windows PCs couldn’t auto-discover the printer. I Googled the printer’s user manual, which said the printer had a built-in webserver. But I didn’t know the printer’s IP address, so I had to log in to our router and look at its DHCP tables. Knowing the IP address, I could connect to the printer’s webserver, which had a page telling me what URL to use for IPP printing. (I had to know what IPP was.) After that, I assigned the printer a static IP address, so the IPP URL (containing an IP address) would keep working across reboots. Now that I had a stable IPP URL, I could set up the PCs for printing. Finally, I had to guess which of driver to use on Windows — two drivers were offered, with no advice about which one to use, but only one of the offered drivers supports duplex printing. Total elapsed time: about 45 minutes.]


  1. Anonymous says

    It’s a conspiracy to rob the working classes of the power of the printing press.

    The written word is very powerful. What appears on screen or in internet chats has no impact on society unless it is printed in black and white.

    In order for the next giant revolution to occur, all that has to happen is for some obscure genius to print up 1,000,000 copies of the next ‘Common Sense’ and bam! The rich people are out of buisiness.

    In order to prevent that from happening, the Cabal distributes trojan horse viruses that slow down our printers and make the system far from ideal

  2. I have an HP LaserJet 4000 and struggled with getting it on our home network. HP offers the “Install Network Printer Wizard” (http://h20331.www2.hp.com/hpsub/cache/344363-0-0-225-121.html?jumpid=reg_R1002_USEN) that makes it a lot easier, but it still seems like a bit of voodoo since I’ve had to re-run it when switching to a new router or switch.

  3. I used to develop for BeOS, whose printer drivers would actually print between 1/2 and 9/10 of a page and then conk out. So not only does your printer fail to work, but it wastes your ink anyways.

    I think printing is a perfect example of an already-solved hard problem, one of those curious computing problems that was figured out years ago, only nobody making the products seems to be aware of this. Another example: crappy UIs on wireless phones and web interfaces. I have yet to figure out if computer software is advancing, or passing through cyclical phases in which people rediscover Fitz’s law.

  4. I gave up on network printing. My HP LaserJet 4ML is connected to the old-style parallel port on my Ubuntu Linux box. This printer is included in the list of 1000s of printer drivers. No configuration is required other than finding the printer in the driver list. I can even run “lp file.pdf” from the command line to print a pdf file.

    Our fancy super expensive HP Ethernet printer fails about a day a week on our Mac network. I don’t know what’s up with that. It just flips out.

  5. Why not just use the buttons on the printer to print its configuration? That’ll list its IP address, various URLs, etc.

    (This got much easier on the 2300, with its LCD, but the 2200 manual online says you press the Go and Job Cancel buttons simultaneously to print the configuration page.)

    http://bizsupport.austin.hp.com/bc/docs/support/SupportManual/bpl10361/bpl10361.pdf, page 77.

  6. Printing is easy. Bring your files to work. Print them at work.

  7. Not to mention the whole cycle of:

    Adjust margins/scale/fonts to try to fit things on desired # of pages
    Choose double sided
    Go to printer
    Document’s not there!
    Back to computer
    No message about what might have gone wrong
    Back to printer
    Ah, out of paper
    Load paper
    Thirty other jobs that were queued up before yours start spewing
    Finally, my doc comes out
    Someone else grabs it and staples it into their Powerpoint (a bunch of pages of black rectangles)
    Give up, print again
    Drat, forgot to choose double sided!

  8. On the most basic level, I’d say that printing is hard because in order for handling and printing files to be fast, cheap, and high quality, it’s necessary to use a lot of data compression. Just sending data pixel by pixel would be ungodly slow. Printing pixel by pixel is a terrible idea too. (I believe that there’s a lot of current research, even on the level of pure math, on things like how to reduce the number of dots you put on a page but still make a high quality image.)

    This is why we have to use all sorts of advanced file formats, methods of data transfer, and efficient methods of dispensing ink onto the page. Once you have something that’s hard to do, everyone will have their own way to do it, and companies will want to keep their hard work proprietary. So it’s hard to adhere to common standards, and you end up with an endless host of drivers, operating systems, and hardware components that all have to get along nicely.

    In the end the problem is one of putting together different technologies, but on the level of computer science I’d call it mainly an issue of compressing, sending, and decompressing data.

  9. A few key points have already been mentioned, such as IP (patents, copyrights, and trade secrets). These things on the surface support selfishness and isolationism (market protection), but in a shared market such as computer technology, they serve to block cooperative progress (and ultimately societal advancement).

    But my main observation is that the specifications are in the wrong place. Windows provides a print driver framework — in the OS! (This is a bad thing!) This “encourages” (forces) the device driver writers to handle both formatting (Postscript / PCL / etc) and delivery (parallel / serial / USB / TCP). Without properly separating content and transport, the drivers bloat.

    Recall the DOS days when applications had to provide their own printer drivers (and WordPerfect was out in front!) Microsoft’s goal with the printer driver frameworks introduced in Windows was to provide uniformity at the *application* level (reducing one of WordPerfect’s strengths over MS Word) (Another business-savvy decision with ill-considered technical ramifications. Ah well, money is what matters, not technical superiority). This sent the naive computer industry down the wrong path, developing unecessarily complex and rich “drivers”. The sheer financial investment into a non-revenue-generating “support product” puts them into an IP hole so deep that companies have an egotistical motivation to extend their own drivers, rather than jump onto someone else’s “standard”.

    Certainly the device driver writers could separate these layers, and obviously, many have. But the IP reasons stated above dissuade any real cooperation.

    Personally, I firmly believe that all printers should have a network interface (IP) rather than USB or other. In a free market, buying only network printers helps me change the world: it encourages manufacturers to ditch parallel and USB, and stick to the OS-agnostic TCP/IP API. Then they can focus on the *content* portions of their device drivers, rather than the *delivery* portions.

    Once that happens (haha), the issues you complain about here will boil down to “why is it so hard to find another device on my network”, rather than “why is it so hard to configure a printer”. After all–your struggles were not truly related to content formatting, but with connectivity.

  10. I thought UPnP was supposed to solve this? I imagine windows is still dependent on good old NetBios. After all, real users can pull up a shell and let fly a bunch of “NET” commands. I recently got my wife a new laptop with vista x64 on it, and connecting to an HP 2100 DN seemed relatively painless.

  11. This sounds like as much a problem with the HP as with Windows, though neither are blameless.
    I am no Mac fanboi, but I must admit that on-site service has gotten really easy with a Mac laptop…I can print to whatever printers are on the local network that I join. (I’m a consultant)
    When I hooked up a Xerox printer at my home office (all Windows network), it spat out a page with its networking info on it, and then I just went to that address, and my configuring was done. I can’t imagine that it’s that hard to configure such a thing into a printer, shame on HP for making it hard on the end user. And shame on Windows for not being able to at least scan the local subnet for anything new that looks like a printer, and then configure it.

  12. if it wasn’t that way, it would be called easycopy.

  13. Back before every printer could have a processor more powerful than a pentium pro, the printing protocols would basically use the faster desktop processor compose a band and send it byte-encoded to the printer (think original apple imagewriter). Postscript was semi-proprietary, but it was expensive to license and required more processing power. So the protocols had to handle some dichotomy between where the description was changed to dots. HP kept expanding their own PCL. And PCL is better for some things (raster/points) v.s. Postscript for others (pdf/svg).

    Fonts get involved because “Helvetica” and “Times Roman” are trademarked so although the glyphs aren’t copyrightable, they can’t be called the same things. So we got things like “Swiss” and “Dutch”, or “Arial”, and now “Trebuchet” and “Verdana”. Everyone at some time has to print one font that needs to be converted and downloaded. So you can’t just create a superset specification to make things simple. To use Postscript properly, it includes fonts by name that require licensing or subterfuge like Ghostscript uses.

    Then there was no common way to send things – there was the unix lpr stuff, but Windows did it differently, and Macs differently still.

    Now we have TCP ports, but most printing predated networks. So we’re still stuck with the 25 pin D to Centronics grade protocols.

    Even with modern network stuff, many don’t use Apple’s rendezvous type discovery, or SMB.

    It would be nice if there was a single standard, and there might be, but there is not enough dominance of any non-proprietary collection, and no one wants to license a proprietary basket, and there is enough threat of IP litigation.

  14. I have 3 printers at home. All were working within 60 seconds of plugging them in. One is on the Ethernet and the other two are USB connected to hosts.

    Why so easy?

    I use Macs. They are a proof-point about why networks and printing should be simple.

    • Send me $1,000 and I’ll send you a nice selection of printers that don’t work with your Mac. This has very little to do with your computer hardware or operating system, and everything to do with everything else.

      • Jimbo von Winskinheimer says

        For 50 cents, I’ll point you to CUPS on the Mac that will probably allow you to use all of those printers that you don’t think are compatible with a Mac. Welcome to 2008.

  15. Zeroconfig fixed this. It astounds me that to this day Windows doesn’t have something like zeroconfig. But now it seems apple has gone a head and released bonjour for windows.


    If the printer manufacture has licensed bonjour and you install this for windows. Windows will now see it.

    I think part of the windows printer problem is that when XP was first out and even after SP 1 when you setup a windows computer using their network wizard it would also share the printer automatically. I remember back in 2003 printing to my roomate’s printer the word BOO! while he was working on a paper.

  16. I recently bought a Brother Printer/Scanner-combi with an integrated print server for my mother, Ubuntu Linux discovered it automatically and it just worked. Only the scanner-part of it required the installation of a package from brother’s homepage.

    • I installed a Brother MFC-7820N. All I had to do for Linux was have CUPS search for a new printer. If I had wanted to reboot the system, CUPS would have found it by itself. It already had the drivers for printing.

      I did have to download the SANE drivers from Brother to use it as a scanner, and another package to monitor the buttons on the front of it. But if all I had wanted to do was print, every thing I needed was already installed. I don’t normally run the button monitoring software in Linux – I could have skipped that part.

      Windows was not that much harder – Brother includes utilities that will look for Brother printers, and show you information on all the printers it finds. I don’t remember if it offers to install the printers that are not already installed, or if you have to manually select the printer you want to install. It also installs the button monitoring software for you.

      If you want to, you can configure the Linux machine to share the printer with other systems on the network – both using Windows file and print sharing (SAMBA) and as an IPP printer. Some people find this an easier option…

  17. HP has provided drivers for their printers on the Linux platform, and of the distributions of Linux that I used, they had the HP drivers, were able to auto-sense network printers, and recommended which driver to use (or allowed you to choose your own).

    If you can figure out how to get anything working under Windows, you should be able to get Linux installed and running. I recommend you try Ubuntu or Fedora.

  18. The real problem here is lack of standards, or at least a lack of good standards.Postscript is a de-facto standard but most printers don’t support it well and need a postscript file with specific quirks to work.

    Then add in networking and everything that comes with that (security!) and the lack of a real standard for network printers and you get this problem.

    The problem is similar to voting machines, it seems simple to he layman, just make a machine hat counts up he votes, trivial right?

    However with printers i’s no so much the technical aspects that are the problems, but the economic aspects.Multiple competitors need to agree on a standard which must then be implemented on all printers and on all computers.

    If one competitor develops such a system and charges license fees for it then his competition is not likely to use it, but if he doesn’t he gives an advantage to the competition. And unless the protocol is widespread it probably isn’t very useful so… classic chicken and egg problem.

    • Companies can get together to impose DRM standards including hardware standards such as HDMI cables. So if they can get together to develop these onerous standards, a standard for printing should be easy.

      • The DRM standards where financed by the content industry, not the eletronics equipment manufacturers. Attempting to sell a DRM solution to a device manufacturer would never work.

        The DRM with the best sales pitch got financed by the content industry who believes it’s under thread and then licenses are sold to manufacturers.

        Microsoft could come up with some sort of soluion for networked printers, they fill the closest analogue, and that would probably hurt he mac/linux systems, but MS hasn’t done so yet. Likely they don’t see it as worth the development cost.

      • DRM is not a good example, since it doesn’t work.

  19. When setting up XP to print to a networked printer, you must choose “local printer”. Amusing.

    • Bryan Feir says

      That’s because as far as Windows is concerned, a ‘remote’ printer is a printer that is attached by cable to some other computer. Any printer where you have to go through SMB to get to another computer which has exposed its printer via ‘Printer Sharing’ is remote; any printer where you can print to it directly is local. Makes perfect sense if you assume that all printers are devices hanging off of Windows computers, as opposed to network boxes in their own right.

  20. I got a great deal on a Xerox Phaser 6110 last year. It’s a color laser printer, with a network interface, but no Postscript support. That’s no big deal, since host computers can do all the rasterizing these days. However, with the lack of Postscript, you have to install the magic driver software. At that point, Bonjour can discover the printer, but Bonjour and DHCP don’t interact properly, so if the IP address of the printer changed, our Windows box wasn’t able to find it again, while the Mac kept working.

    Assigning the printer a static IP address largely solved the problem, but I’m with Ed on this. It was real work to do something that should have been painless.

  21. There is an incentive in making printers hard to use. It’s the same incentive in making regular airline seats bad: to drive sales of the first class seats.

    Some printer features, like dithering, are trade secrets or patented making open source drivers impossible.

    Ink and special paper re-orders are profit centers, so the print dialog can be considered a branding and sales opportunity. Internet Printing Protocol doesn’t transmit user interfaces. IPP has been criticized for being based on HTTP but perhaps it didn’t go far enough — perhaps if it was based on HTML and printers delivered HTML forms from the printer then there wouldn’t be such an incentive for local or Windows printing.

    Printers are bidirectional, with information on ink and paper and jobs going from the printer to the device driver and documents going from the device driver to the printer. Yet the Internet Printing Protocol was invented less than ten years ago. It was previously thought that printers were output devices.

    I have a CS degree and don’t know if my laptop’s XP OS supports IPP or how to enable it.

    *My* Linux machine should be able to discover my printer but other folks in my building shouldn’t. So everything that is hard about security needs to be present.

  22. Try doing the same thing with a printer connected to the network via computer in a mixed windows/linux network!

    Agree with previous poster on postscript.

  23. Michael Donnelly says

    On the purchase, not the paper.

    I’m amazed when I go into Fry’s Electronics and see all these printers at insanely cheap prices. Somehow, that market has turned as cut-throat and tight as cell phone service and pizza delivery.

    None of the three are known for polish or quality. Remember: with great cheapness, comes great… er… well, you know.

  24. With printers it seems to still be a bit of a wild-west proprietary mentality. Old drivers are not updated and incompatible ink cartridges, It would be nice if the printer manufacturers would become rationale and adopt uniform standards. Alas, in certain circles is considered UN-American to be consumer friendly.

    We have a small home network, so I thought it would be a good idea to buy a print server. Turned out the print server lobotomized my printer. It would no longer report low ink, printing status and all that stuff. I returned it.

    The print server box had advertising touting the benefits of using it. Never once did the adverting mention the pitfall of lobotomizing the printer. Both the manufacturer and I suffered because the manufacturer did not present a “transparent” product.

  25. Dave Provine says

    At least it partially solved it. Auto discovery protocols did the rest; AppleTalk to start with, and now Zeroconf, neither of which required a fixed address. Generally, if you print to any Postscript printer from any computer with a Postscript driver, readable paper will come out.

    Of course, the printer manufacturer has to either license Postscript from Adobe, or write a clone, neither of which are cheap. Your computer also has to be setup to use a discovery protocol as well.

    I don’t want to sound like an Apple zealot (I’m not) but they nailed this problem many years ago.

  26. Hooking up network printers on a Mac is insanely easy, provided the printer supports Bonjour, as most relatively recent printers do. The Mac will find the printer on the network by its Bonjour name and you can set it up in about 30 seconds.

    Unlike many other Apple bits, Bonjour is available for license and many Windows machines actually have it installed because its how iTunes shares libraries. But despite my endless suggestions, Microsoft has shown no interest whatever in using it even though it would make life many orders of magnitude easier for anyone who wants to install a printer on a simple network.

    By the way, HP printers will reveal their IP address if you get them to print a configuration page. The exact way that is done, though, varies from printer to printer. It’s better to assign a static address, though, because it you link to it using as standard Windows IP printer port, you’ll probably lose the connection if a DHCP-assigned address ever changes.

  27. Most of the problems you describe are actually the general problem of computer networking – and it may seem less surprising that it’s hard if you think about it in those terms. Every printer is supposed to work with every piece of software that generates printable material. It requires a many-to-many match among a great diversity of systems. A really working solution for making network printing painless would necessarily also include technology that could make, for instance, cross-OS file service painless.

    I should be able to converse with everyone on Earth, including the majority who don’t speak English. Why isn’t that a solved problem already? It should be easy, it’s just words.

  28. That’s actually not that bad. My experience with networked postscript printers has been much better than directly attached USB (and parallel port and serial port before that) printers. Of course, I also run Linux. 🙂

    • I’ve had exactly the opposite experience. All my windows machines setup easily with any printer I’ve owned. Networked or otherwise. Now Linux… that’s another matter entirely. 🙁 The only time linux prining has ever worked reliably for me has been with the commercially available program Turboprint. The cups system and hplip systems have not worked properly or if they have, required many hours of trial and error to configure. No matter which distro I’ve used Which sucks because I’m really trying to like linux. 🙂

  29. …is that printing is one instance of the digital world interfacing with the real world, and crossing that boundary is tricky and failure-prone. Modems are another example that gave people no end of trouble (until they were obsoleted by broadband routers that are really extensions of the telco/cable company’s gear).