I am trying to set up my Linux laptop to print to my fiancée's Windows computer, and have stumbled deep into the configuration swamp that is the Common Unix Printing System, CUPS.
At this stage, I am stuck trying to find a "PPD" file, whatever that is, for my printer. I had a lot of trouble finding one at all, and finally I found a link to Lexmark's web site (which I did not find when browsing their site directly), but the downloaded link is a shell file that fails to extract itself.
There are many reasons this process is maddening. A big part is due to the client needing a printer-specific driver at all. This is some kind of mis-design in the SMB protocol, because a good network protocol should itself serve as the driver. I should be able to tell the client the server and printer name, and then the client should then be able to ask the server for whatever it needs. I should not need to tell the client stuff that the server already knows.
This alone would not be so terrible, if only CUPS itself were not so difficult to configure. There are many aspects to this difficulty, too, but high among them is the confusing web-based configuration tool. I am doing one of the simplest, most common of configurations: making a Windows printer visible on my Unix machine. This should be easy, but at least an hour later I am still failing.
During all the googling I have done this afternoon, I found an excellent article by Eric Raymond about my precise situation. Here is one of the central points:
The meta-problem here is that the configuration wizard does all the approved rituals (GUI with standardized clicky buttons, help popping up in a browser, etc. etc.) but doesn't have the central attribute these are supposed to achieve: discoverability. That is, the quality that every point in the interface has prompts and actions attached to it from which you can learn what to do next. Does your project have this quality?
This strikes me as a great mental trick for designing this kind of user interface. The CUPS team may well have great technical talent, but they could benefit greatly from having a UI designer who concentrates on issues like this.
For me, at this point, the next thing to try will be to put some other kind of server on the Windows machine--maybe LPD, or maybe this IPP thing CUPS keeps talking about. This step should not be necessary, but hopefully it will make things easy enough for CUPS that the rest goes smoothly.
I cannot escape the feeling, though, that this should all be easier. I also wonder, is there a better, more comprehensible printing system for Linux than CUPS? Emails welcome if you know of one!