Well, not only proprietary drivers are crappy, they are just more crappy than anything else. Free software sometimes suffers from serious problems too.
I use a dedicated virtual machine to manage my printing services. One of the reasons I’ve put it on a separate machine is stability: While software on my other machines is updated, the printing server can remain untouched.
Now I know I can’t expect that kind of stability from CUPS. I often upgrade my workstation. Suddenly printing from GIMP and PhotoPrint stopped working with the error message saying something like “Bad IPP request”. After some attempts to find out what’s wrong I’ve found that my CUPS client is of newer version than the CUPS server. Great – unless you use the same client and server software version on your network, CUPS may not work. So I had to upgrade the CUPS server, just because a workstation happened to use newer client version.
The CUPS server upgrade wasn’t without trouble. Together with the 1.1 -> 1.2 transition the main configuration file was changed. Well, that’s OK (only if I wasn’t forced to fiddle with new configuration right now because of the client software update!). But I couldn’t access the printing server because of some permission problem. After significant amount of time spent on discovering what’s wrong I’ve finally got it: The ‘Allow’ directive doesn’t work with host name, it requires an IP address. Sigh.
So CUPS started to work with my parallel port printer. Not so with the printer connected through USB. It reported to be unable to open the corresponding USB device. Even setting the device permissions to 666 didn’t help. I ended up with downgrading CUPS to 1.1 on both the server and client machines.
I’ve never liked CUPS. CUPS is not a bad idea and it’s fine when it happens to work well, but it has been making troubles all the time I use it. From what I’ve seen for several years of CUPS usage I have to say that Linux printer management is apparently in incompetent hands (not sure whether upstream or in Debian).