www.catb.org/~esr/writings/cups-horror.html -> www.catb.org/%7Eesr/writings/cups-horror.html
Home Page Whats New Site Map Software Projects HOWTOs Essays Personal Weblog Freedom! Ive just gone through the experience of trying to configure CUPS, the Common Unix Printing System. It has proved a textbook lesson in why nontechnical people run screaming from Unix. This is all the more frustrating because the developers of CUPS have obviously tried hard to produce an accessible system but the best intentions and effort have led to a system which despite its superficial pseudo-friendliness is so undiscoverable that it might as well have been written in ancient Sanskrit. You have to think about what the actual user experiences when he or she sits down to do actual stuff, and you have to think about it from the users point of view . The CUPS people, despite good intentions, have utterly failed at this. Im going to anatomize this failure in detail, because there are lessons here that other open-source projects would do well to heed. The point of this essay is not, therefore, just to beat up on the CUPS people its also to beat up on every other open-source designer who does equally thoughtless things under the fond delusion that a slick-looking UI is a well-designed UI.
I go to my desktop menu and click System Settings-Printing, then give the root password to the following popup. Up pops a wizard that says, in big friendly letters, Add a new print queue. Now, those of you who are intiimate with CUPS know I have already made a basic error. I shouldnt be trying to create a new print queue on snark and then glue it to the server on minx, at all. Instead, if I want to pass print jobs to minx, I should look at the configuration wizard, see minxs print queue already announced there, and make it snarks default. But nothing in the configuration wizards interface even hints at that! And minxs print queue does not show, for a reason well discover later in this sorry saga. New form in the window, saying Queue name in equally big friendly letters. I change it to laserjet because I might at some point want to hook up the ancient dot-matrix thingy I still have.
Clicking on the menu, I am presented with the following alternatives: Networked CUPS IPP Networked Unix LPD Networked Windows SMB Networked Novell NCP Networked JetDirect Here is our first intimation of trouble. If I were Aunt Tillie the archetypal nontechnical user, I am at this point thinking What in the holy fleeping frack does that mean? And I certainly dont have a Networked JetDirect, whatever that might be. If the designers were half-smart about UI issues like, say, Windows programmers theyd probe the local network neighborhood and omit the impossible entries. If they were really smart like, say, Mac programmers theyd leave the impossible choices in but gray them out, signifying that if your system were configured a bit differently you really could print on a Windows machine, assuming you were unfortunate enough to own one. Instead, Aunt Tillie is already getting the idea that this software was written by geeks without clue. But instead of answering the question in my mind, which is How do I choose the right queue type, it is a page on adding a locally connected printer. That is, its associated with the currently selected-by-default queue type, not the operation of choosing a queue.
Aunt Tillie, at this point, is either resigning herself to another session of being tortured by the poor UI choices of well-meaning idiots or deciding to chuck this whole Linux thing and go back to the old Windows box. It blue-screened a lot, but at least it allowed her the luxury of ignorance she didnt have to know, or care, about what a JetDirect or a CUPS might be. I am not ignorant, but I have my own equivalent of Aunt Tillies problem. I know I want one of the top two methods, but I dont know which one. I have better things to do with my brain than clutter it with sysadminning details. If the tool can detect that both methods are available on the local net and that shouldnt be hard, theyre both well-known ports it should put recommended next to one so I can click and keep going. Instead I have to stare at the help screen and think Where might I find some guidance on this, and why is this already taking too freaking long? I get a page about the printer configuration which describes the queue types, but still no guidance on how to choose between CUPS and LPD. Obviously it never occurred to the designers of the CUPS that this could be an issue, either for Aunt Tillie or for the more technically ept. There is no large friendly button next to the Select a queue type that says How to select a queue type. This lack is a grave flaw in the UI design that turns the superficial spiffiness of the configuration wizard into a tease, a mockery. Applying my fearsome hacker-jutsu once again, I guess, and select CUPS IPP. Comes now the form that turns the UI from a mockery to something worse. The other is labeled Path: and contains the string /printers/queue1. If Aunt Tillie were still along for the ride, she would be using some unladylike language right about now. And with good reason, because this is a crash landing, an unmitigated disaster. To understand why, you have to stop thinking like a hacker for a few moments. Cram your mind, if you can, back into the mindset of a clueless user. Somebody who not only doesnt know what a string like /printers/queue1 might mean, but doesnt want to know, and doesnt think he or she ought to have to learn. From Aunt Tillies point of view, its reasonable that the host field is empty;
The page associated with Networked CUPS IPP Printer says Any networked IPP printer found via CUPS browsing appears in the main window under the Browsed queues category. And it doesnt give me a clue what to do if I dont see any Browsed queues category, which is particularly wack since that is the normal, default situation for a new installation! The problem isnt that the right things are technically difficult to do; CUPS is already supposed to have discovery of active shareable queues as a feature. They never exerted the mental effort to forget what they know and sit down at the system like a dumb user whos never seen it before and they never watched a dumb user in action! And its whats keeping Microsoft in business because by Goddess, they may write crappy insecure overpriced shoddy software, but on this one issue their half-assed semi-competent best is an order of magnitude better than we usually manage. Im going to tell you about my efforts to research my way out of this hole, because there are some lessons there as well. I did this in a Unix-hackerish way, by eyeballing the output of locate printers for anything in /usr/share/doc related to CUPS.
That password prompt, rather than being a signpost leading further into an understanding of the system, was another stone wall. I searched on CUPS printing HOWTO and found a link to The Linux Printing HOWTO which when I chased it, turned out to be a 404. Im throwing it in just to establish that, at that point, I was feeling screwed, blued, and tatooed. The shiny-surfaced opacity of CUPS had, it seemed, defeated me in what should have been a trivial 30-second task. My next step was to ssh into minx and see if I could discover the name of the active CUPS queue. Maybe, I thought, if I found that out I could plug that queue name into the configuration wizard on snark and it would all work. The two commands that seemed possibly relevant were lpinfo8 and lpadmin, and you cant get a list of queue names from either of them. The output of lpinfo -v looked like it ought to be useful, but I had no idea how to map these device URLs onto queue names. I am writing this rant as I am trying to figure out the path out of this maze. I am reading the CUPS System Administrators Manual and it claims : CUPS supports automatic client configuration of printers on the same subnet. Each client should see the available printers within 30 seconds automatically. The printer and class lists are updated automatically as printers and servers are added or removed. Well, thats very nice, but the breezy confidence of their exposition leaves me with no clue about what to do when the autoconfigura...
|