Thursday, September 4, 2008

Why Does Printing on UNIX Suck So Much?

It's 2008 and printing on Linux (UNIX) still sucks. What follows is a serious grump about printing on UNIX, CUPS in particular, and why photo printing at home is still insane.

CUPS has brought UNIX printing into the 21st Century but it's still cumbersome, opaque, and buggy. Only the very latest not-even-released-yet code has a USB driver that doesn't gack all over the floor most of the time. Have you ever straced the usb printing driver? My CPU was spun all the way up because the usb driver, apparently, doesn't know that when read(2) returns 0 (zero), it means (for streams) "don't bother trying anymore, there is no more data here. Ever." It's been doing that for years.

It seems as though, no matter what program I use: gwenview, gthumb, the gimp, or anything else I can't quite get what I want. Trying printing a 4x6 without tearing out all of your hair. I have yet to get a single 4x6 to print which wasn't resized to some much-smaller-than-4x6 size, or have something else really wrong with it.

How about the fact that every time CUPS is released I have to, typically, completely blow away the old configuration and start over? Upgrading from each previous version of CUPS has been painful to say the least.

I've been doing this for almost 15 years and I've seen Linux (and BSD) grow from "usable by hardcore geeks" to "usable by regular folks", but I don't understand why it needs to be this hard. I don't even have the vocabulary to properly describe just how frustrating it is having to deal with printing on UNIX. Every time it's the same old problems and some new ones, too, just for variety. I can honestly say I've probably spent more time fighting printing than any other single task (other than "using" the computer). The level of opaqueness that CUPS in particular exhibits still baffles me. If I'm having problems and I strace various processes to see what they are doing, I'll see error messages and informational messages, but no level of logging ever delivers them to a log file. They're being /dev/null'd or whatever. Who thought that was a good idea?

I've never gotten firefox to print the header and footer correctly. Some part of some document everywhere is cut off. Same goes for Open Office. Manually fiddling with your margins is something I might have expected to do in 1995, not 2008. CUPS has all this great info on the printer, thanks to the PPD - what it's actual printable area is, 4000 options, you name it. Why, then, don't some of the most basic things ever seem to work? One thing that really works well is the Printout Mode stuff - whoever thought that up was definitely smarter than your average bear.

I've given up entirely on Epson after no less than 3 different inkjets with clogged heads, never to print again, despite repeated attempts at repair. Canon, glorious though their printouts may be (no personal experience), aren't known for being exactly Linux friendly. Perhaps that's changed in the last year. Every time I look at a printer (for myself or much more likely for someone else) I check out the really awesome and, if it's not supported, I pass. Period. Kodak, despite all of the noise lately, appear to be completely useless for those of us that don't run Windows. HP, while Linux friendly, has come up with this hplip thing that mostly kinda-sorta works, but every now and again goes crazy and has to be killed off. I'll admit to having the best luck with HP printers, they last and the text printing is really fantastic. I still have an old HP laster with about 1 jillion (metric) copies on it and it still works great. I can turn it off, leave it for a year, and come back and it still works. 10 points for laser! I have no personal experience with Canon, but friends and family do and they love them. They're all running Windows or own a Mac, too. I've begun to think the entire inkjet thing is a huge scam.

Why even bother printing from home? I've all but given up on printing photos from home when I can use Picasa (online or the wine-ified version) and order printouts from any of a dozen places, for pickup or even delivery, for cheap. Picasa is awesome. Google really gets "just make it easy".

As far as printing photos this way, what is the level of frustration? That depends on the provider - I like using the LifePics provider as they are fairly local and seem to work really well. I tried using Walgreens (they are even closer and have a 1 hour wait) but, so far, they've been down 2 out of 3 tries. Photoworks didn't do a thing for me (I thought the interface wasn't very good), but Kodak Easyshare and Shutterfly are my favorites from a UI perspective. Fast, easy, unobtrusive. Snapfish is another common one. I'll never use WalMart.

Surely some people reading this will go, "Well, you idiot, all you have to do is this and that and edit this and tweak that and don't forget to wave a dead chicken over it (thrice)." and that's fine. Maybe I'm getting old but I'm pretty tired of having to do stuff like that just to get things to work. Modern unices are pretty much plug and play these days - yeah, setting up dual monitors and such can be "fun" but most of the time it just works great. Plug in your new USB keyboard? Hey! A keyboard! And it lights up! Plug in just about any camera, USB storage, and so on and so forth and Linux recognizes it and off you go. Yay! Plug in your printer and be prepared to lose the next hour (or more) of your life. You'll never get it back.

You might also be saying, "Well, stop grumping and do something about it." You bet. I'll get right on that in my copious spare time. I have contributed (and will continue to contribute) to a great many free/open/libre software projects over the years. That doesn't mean I won't try to help in some way - I'll file the appropriate informative, useful bug reports and even supply patches when I'm able.

[1] megapickles, because it's funnier.

1 comment:

Bryan said...

It's 2010 and I feel the same way. If I even so much as fart CUPS blows up. I believed in that so much I had cups on a pentium2 for a very long time. Never to be touched for any purpose EVER. If its not broke don't touch the print server. I did say EVER right? NEVER EVER EVER touch the print server! Don't worry about your age. I am pretty young with a good amount of time and it is like black magic getting CUPS to obey. I also have a Brother laser printer that is suppose to be very well supported on and right now in 1.4 the web UI does not detect it at all. It seems the only thing they have done in the past decade is change the UI from ugly brown to a somewhat appealing black/white UI with no regard to extra functionality. CUPS seems to be owned by Apple so I don't know how much that plays in to it even though it's GPL. I know #cups on freenode is a total waste of bandwidth, nothing but idlers. I remember seeing a book at Barnes and Nobel once for cups and it must have been 3 inches thick! Most of the open source world I have talked to have this attitude like "I don't print, go green idiot." It's really a stupid mentality to have just because you can't figure it out. Honestly you have been digging more than me. I have yet to strace anything in cups but I might just have to since the logs are either not there or so cryptic its meaningless. In any case, I guess ill just resort to the good old stone and chisel.