Posted
by
Cliff
on Thursday April 21, 2005 @01:17PM
from the still-working-on-an-intuitive-gui dept.

DopeyDad asks: "OK, it was close to a year ago (Eric's site says July 2004, but I'd swear the original rant came earlier last year) that Eric Raymond's tirade on the unfriendly status of configuring the CUPS printing system on Linux was published. Well, I've been struggling with setting up a new laptop and getting it to talk to my print server, using Fedora Core 3, and nothing seems to have changed -- the admin items for adding a printer are exactly as Eric described them back then -- unclear, confusing, and no where near as friendly as their Win* equivalents. Definitely not something I'd expect my Aunt Ethel to be able to figure out. What's going on here? Granted, FC3 is ready to be replaced, but I don't see any CUPS updates for it. Is work being done with CUPS to address Eric's original complaints, or has this issue fallen off the radar?" For those who are still frustrated with the CUPS GUI, how would you improve it?

Heh. Does this look like a prettier version of MS's printer admin stuff to anyone else?

The thing that's missing is seamless functionality and implementation, as usual. Coding cool stuff and coding pretty, highly portable stuff are two different things, and it's hard to get people to do one for free.

If OS X uses CUPS, can I safely assume that every OS X-compatible printer is supported by CUPS? If so, why doesn't someone just clone that interface? I mostly use my Ubuntu box for a game server these days. I haven't been using Linux as a desktop for a while (for the most part, beyond testing new games), so maybe KDE or GNOME have their own shiny interfaces that could be given a facelift to function more like the OS X version?

And vice versa. MacOS X doesn't support the HP LaserJet 1150 although it's supported by CUPS.

If you dig through the CUPS documentation you learn that the 1150 is a PCL 6 printer so if you select "LaserJet 6" in the print setup tool you can print to the 1150. But Apple can't really expect Grandma (or even my non-geek lawyer friend) to figure that out.

(I may be misremembering it being PCL 6 and LaserJet 6, it might have been 5.)

The reason some printers work on OS X and not on Linux is because CUPS allows running binary print filters. Remember, CUPS has nothing to do with preparing a data stream for printing. It is merely a queue manager. All it does to prepare a data stream is to hand it off to the filter program.

Many printer manufacturers use Carbon filters for OS X. Game over.

Now about ESR's comments, I never really saw what was so hard about it. Not that I'm claiming to be incredibly smarter than him, but the hardest part of setting up a printer using CUPS under Debian was knowing that I had to point my browser at http://localhost:631/ [localhost]. After that, what's so hard about clicking on Printers, Add Printer, then select the make and model? Seems pretty easy to me.

Maybe ESR wasn't using the CUPS web interface, but instead using some GNOME/KDE front end. Well then that's the problem because GNOME & KDE both suck anyway. For that matter, the OS X GUI front end to CUPS isn't all that great either. Really, the only great thing about CUPS on OS X is that when you plug in your printer, it just works and doesn't need to be configured.

Remember, CUPS has nothing to do with preparing a data stream for printing. It is merely a queue manager. All it does to prepare a data stream is to hand it off to the filter program.

This is completely incorrect. CUPS is a full featured RIP and postscript processor. It does support arbitrary binary printing, however, and this is exactly what happens when you print to cups from windows via samba. Please see the cups documentation [samba.org].

If cups is just a "dumb spooler", explain lease how the heck it can print pdf, jpeg, hp-gl, tiff, and hundreds of other formats directly to your postscript printer?

If you don't have a postscript printer, yes, you must use a ppd that calls a intermediary driver (e.g., hpijs) that cups just passes the job to.

I have a printer with jetDirect type of server interface. I have been a Un*x sysadmin for over 20 years, and it still took a week to get this working

Its simple things that floor you - How the hell are you supposed to know that the url for a jetDirect printer is

socket://printer.here.com:9100

An example would fix this! A lot of the problems could be solved by better use of typefaces in the explanations, and less dumbing down. If you mean fully qualified domain name, then say so. If you mean port, then say so. If you can/must use an IP address instead, say so!

Remember if your idiot cousin from the cake shop wants the printer to work, she will phone rent-a-nerd. If you are lucky, she will wear a low cut blouse and very short skirt for the occasion. She will not type urls into dialogue boxes, even if you use words of one syllable to describe it. She won't even think of plugging a USB printer into a Windows box by herself. The idea would not occur to her. And if it did, you both know she would phone you to come and get the USB plug out of the RJ11 socket shortly after.

And don't tell me about OSX - it took my son two months to get it working on his ibook. It could find the cups entry on my computer, but that did not work. It could not even find the printer directly. The one day, it started working by itself.

And don't even mention printing under windows as an example of what is "good" - it gives me pains in all the diodes in my left leg...

Like everything else in Ubuntu, I had no problem configuring printers in CUPS. This is mainly because the web interface tells you to use gnome-cups-manager, and even tells you where it is in the system's menu structure. Really user friendly.

Mandr{ake,iva}'s printer admin thingie actually runs nmap to sniff your network and find all printers exported by all machines using any protocols it knows how to talk. It's pretty amazing, but it took 10 minutes or more to run on the building network here, during which time the GUI didn't repaint and appeared hung.

I would have killed it in disgust, thinking it really was hung, but first I did a "top" to see if I could tell what it was doing. Then my jaw dropped when I saw it running nmap and starting and stopping many other processes to try to connect to the open ports it was finding, so I let it finish and was fairly impressed. It really needs a progress bar, or better, to have printers pop up in the GUI as they are found.

Speak for yourself; half the time it doesn't work for me, for no good reason. When I can connect, half the time again you can't do things like remove documents from the queue. I've had bad experiences with the web interface. Of course, configuring my printer at all has always been somewhat of a pain (HP PSC-950) because it requires hpoj and a lot of setup.

I think we really need to use a standardized package installation method, and that all developers who want to be taken seriously use it. There's a couple out there, and perhaps one will eventually become the standard. Even looking at, say, apt: If a user ones software they should:

A) Not have to find all of the varied repositories for different kinds of software on their own; it should come with a huge trusted repository list, and potentially update that list on its own if the user requests it.

B) Not be stuck by physical dependancies. If a compiled version is not available that matches your setup, it should automatically download either a source version and compile it (and get the necessary libraries), or a standalone version.

C) If there is an error in the install of a package (regardless of the method the installation is attempting), it should try a lesser version of the same package.

Windows has a big advantage on Linux when it comes to installation because we have so many versions of the same libraries floating around. We need to fix this.

Windows seems to have no problems with detecting a printer... I feel like there has to be a documented call/answer that would make the model/revision known to Windows. Could CUPS be altered to do the same thing in its installer? Could it have an online driver repository for the printer?

Makes me wish I had time to actually work on these things, even if I find out that this can't be done.;)

If I remember correctly, the problem ESR was having was with the RedHat GUI. The only "CUPS GUI" is really the web interface on port 631. Every other "real" GUI is made by some other vendor/project e.g RedHat, KDE, Gnome, etc... (OpenOffice?). I have my own complaints about the CUPS web interface, but they're nothing major. I've always just tweaked the cupsd.conf file and added the printer (s)in the web interface. No major biggy there. This all just a storm in a teacup.

It has little to do with CUPS itself. It is rather Fedora's system-config-printer-gui fault. Go check out other distributions - namely SuSE or Mandriva (former Mandrake) - each of them handles this by their own tool - YaST (SuSE) and Mandriva Control Center... Go, see how it looks and think again not to generalize stupid stuff like:

Indeed, of all the interfaces to CUPS that I have seen, two stand head and shoulders above the rest. Yast is hands down the best Linux interface. The other interface worthy of note is for an Apple variety.

I called Apple support for a printer issue. I could print fine from the command line, but not the apps. Until that point I hadn't realized the interface was CUPS (wasn't my mac and I hadn't spent too much time with it).

The interface is easy, but felt very restrictive. BTW, I ended up having to reinstall the OS (archive mode, worked well without messing anything up) to get the printing to work.

Yup. Click "Control Center" in the menu (or "settings:/" in Konqueror), click "Yast2", "Hardware" and "Printers". If you have it on USB, etc., it autodetects. Otherwise, pcik your printer from the list.

Yea Suse worked for me AFTER I tracked down a PPD file for my printer. The problem is it still takes too much fiddling around to make it work. I had to find the windows PPD, on the Xerox website, which was in a windows self extracting zip.

PPD is PPD - it is not Windows nor Linux nor any other system. It is quite standard.

To be honest it is Xerox flaw, with HP you get PPD files on CDs in separate directories. Also just today I've purchased Samsung LCP-500 which is cheap semi professional color laser printer. The printer came with CD and Linux drivers. So it is due to vendor to support drivers.

Look nobody will buy unsupported printer in order to use it with Linux - this is quite normal. Also nobody claims that every plastic-crappy-printer-bo

"But Mr. Dent, the PPD file has been available on our web site for the last nine months."

"Oh yes, well, as soon as I heard I went straight round to fetch it, yesterday afternoon. You hadn't exactly gone out of your way to call attention to them, had you? I mean, like actually saying anything about it or anything."

"But the file was available."

"Available? I had to finagle my way into a non-advertised server to download it."

"OK, it was close to a year ago... that Eric Raymond's tirade on the unfriendly status of configuring the CUPS printing system on Linux was published.... and nothing seems to have changed -- the admin items for adding a printer are exactly as Eric described them back then -- unclear, confusing, and no where near as friendly as their Win* equivalents."

Well, so much for ESR tirades motivating the development of user-friendly software. Anyone else have any ideas?

Maybe Eric should actually get to work and code instead - if he had done so a year ago, chances are that by now, there would be a good configuration system for CUPS.
After all, it *is* one of the much-touted advantages of FOSS that you actually can scratch your metaphorical itches instead of having to wait for the vendor to do it.

This line of thinking is only acccurate in a theoretical sense. Unfortunately, it assumes that all people are roughly equal in competence with regard to a given task. One of the

You can pay free software developers, too. And, when different users have conflicting desires, you can keep different patchsets against the main code so that distributions can target different users and patch accordingly.

Even though Eric Raymond was talking about the RedHat CUPS tool, I'll bite (YHBT, etc etc.)

The webadmin tool (http://localhost:631) is not well thought out. You start off logged out, but there is no little 'logged in / logged out' indicator like 99.9% of commercial websites have. [tt]However, in the CUPS team's favor, most OSS drops the ball on providing useful user feedback like a login status indicator (see the many Wiki's out there that suffer from this.) But then, I wri

what bugs me is I configure cups, try to print out of an app which has its own printer settings (like Moz or Acrobat), then everything gets filtered through kprint, at least on my system. So if something doesn't work, where's the problem? Also, if I use the cups admin, it breaks the fedora system config utility's settings, and vice versa. Fate and Linux are playing tricks on me!

Open source programmers work on what is sexy. CUPS isn't sexy. You want someone to do that kind of work, you have to pay them, which is why oos will never have the same polish as commercial OSs (polish doesn't mean themes and icons guys).

The built-in admin web-interface to set up cups is really just there so that an admin with no desktop can configure their print server.

If you are an end-user, it is implied that you should be using desktop tools to accomplish this.

Both Gnome and KDE offer very nifty printer configuration apps that will take care of setting up CUPS for you. Gnome uses gnome-cups-manager (run that from your terminal or create a launcher), while KDE uses kprinter (you can also run it from the terminal and create a shortcut).

It is also worth mentioning that when you hit print on Mozilla Firefox, you can hit "Properties" for the printer in the print dialog and change the "Print Command" line to KPrinter to let it handle the printing in a much less convoluted way.

Amen to that. I'm partial to the KDEPrint system [kde.org], and wish that it was half as easy to configure network printers in Windows as it is through the nice KDE GUI.

For those who didn't catch that, let me repeat it: in my experience, it's much easier to configure printers (particular network servers) in KDE than it is in Windows. As far as I'm concerned, this particular problem is well solved.

I haven't set up a printer in Linux for years. and when I did it didn't support all the printer features. I am sure thats changed, and I see that it might have become as easy as windows,But easier then windows? I bought a printer, plugged it in and it worked. Never took the driver out of the box.How is it easier then that? did Linus come to your house and put in on your desk for you?

Coincidentaly, I installed a network printer at the office. My desktop Win 2k machine just picked it up.

Using the FC3 printer configuration tool, I checked the "share this printer" box. It asked me to give the printer a name, which I did.

I went downstairs to my GF's Powerbook running OSX 10.3.x and told it that I would like to add a network printer. It found the printer that I had created. I clicked "print a test page" and everything "just worked." I don't see how it could get much easier.

One of the problems with FLOSS is that it tends to be written by hackers (which is also one of its biggest benefits, but I digress)...

Hackers want lots of options. They want to be able to configure FIFO settings for serial printers and flow controls, and all the technical nitty gritty.

Grandma doesn't know what the hell a flow control is. All she wants to do is a print a picture the grandkids sent her.

The biggest barrier to FLOSS usability is often overwhelming the user with too many options. A good GUI presents the most basic options you need to accomplish a task, and hides the rest where Grandma won't find it, but where someone who wants to change some deep, dark setting has the option of doing so.

IMHO, Mac OS X Gets It Right. Their configuration dialogs are quite simple, but you can always get under the hood if you need to. That sort of ease of use is what makes OS X a Unix that Grandma can use.

And if it takes messing about with obscure settings to get things to work, then the back end needs to be refined until the system works.

Complexity is at odds with usability, and in general FLOSS tends to be balanced more towards the former than the latter.

While you're certainly right that I want configurability on things I understand, there's also the other half that many hackers and code monkeys miss - most of us learn by dinking around with things. Get a good handle on the mindset something was built with, and then use that to better figure out the rest. If the initial ramp up on something as simple as a printing system takes many hours or even a day or two to even get basic functionality working, chances are I'm going to declare it "crap" and go back t

A good GUI presents the most basic options you need to accomplish a task, and hides the rest where Grandma won't find it, but where someone who wants to change some deep, dark setting has the option of doing so.

I'm inclined to agree. The more I think about it the more I come to the conclusion that many usability problems can be solved - without loss of flexibility when it's needed - by the judicious application of either an 'idiot button' or 'expert mode'.

There are tools avaliable that makes setting printers up a breeze. None of the ones i use are proprerity so any dist can use them. While i admit that the cups GUI should be better laid out and more userfriendly i think many users dont really see this problem.

Not long ago, there was a Slashdot review [slashdot.org] of a certain book [oreilly.com], which included a chapter on CUPS that can be downloaded for free [oreilly.com] (can't beat that price!). It seems to demystify the entire process of administering CUPS.

Five cents, please...(that's about all my opinion is worth these days)

Well but this argument is not over CUPS itself - CUPS is just printing engine - it can have multiple frontends like MOX's one (good), Fedora's one (apparently bad), Mandrivas one, SuSE's one etc. you can even go to/etc/cups/ and use your $EDITOR and it will be fine. CUPS is not about config GUI - it is about few config files than you can edit and config files themselves are quite OK for me.

It is the same like you would say that Apache is not friendly because some distros GUI sucks... It is not the point a

My experience with setting up CUPS is the exact opposite. I agree that it has not improved over the past year, but it *IS* remarkably simple to set up a printer with CUPS. I got it on my second try, back a bit over a year ago, and have reconfigured cups maybe 10 times since then, without any trouble.

What's so hard about clicking on "Manage Printers" and then "Add Printer"?

Among my recent linux converts, they described CUPS as being relatively hastle free, and superior to the oft-broken process under Windows.

I admit, I was stumped with the whole setting up the printer in CUPs. I had a friend who works in Linux daily set it up. We had to set up a few test printers, and then try to navigate to the IP address of it(on 2K for internet printing).

After all was said and done, any printout I made printed about 90% of the page, and then it was garbage city. And as a general rule with messed-up printings, all garbage that prints out a form feed every few lines or so. So it's not one page of garbage characters, it's a stack of them.

Eventually I just gave up, and will be just using a Win98 box with sharing for all print jobs.

I've always heard a lot of bad things about CUPS, but have only had occaision to use it over the past year or so. Maybe I've just been lucky, or CUPS is a whole lot easier to mess with on Gentoo, but I've never had any problems with it.

I hate to say it but this is one area windows has it all over Linux. On a windows machine I can setup a printer in under 10 seconds. On my Linux box I still have yet to make it work.

In windows setting up a printer is as easy as \\servername\printersharename

On the server adding that printer to be available to clients is just a matter of knowing what port, or IP its on (which configures a "port" when you provide the IP during setup). This again is a minor job.

I've tried, several times to get CUPS working and ave found it the stupidest sub system in all of UNIX. There has got to be a better way, but I haven't found it yet, has anyone else?

I have been able to get everything I have ever needed working in Linux in the past simply bu reading the man pages and how-to's but neither seems to have the answers for CUPS.

My printer in my house is on a printer server box. Configuring printing should be trivial. Privide a printer type and an IP and GO.

Whilst I agree that setting up a CUPS server is still a pain - mostly because of the lack of decent documentation - once your server is up and running then workstation is even easier than the process described for Windows in the parent article.

All you have to do is - nothing at all! I can take a virgin PC, connect it to my network, boot with a Knoppix CD, start OpenOffice.org and all my printers are there and ready to use. No configuration, no drivers, no \\servername\printername. As soon as I do File=

you're talking about one of the most common and standard printers in printing history. Try that with a lexmark whosafudge 230794 and you'll find that making CUPS talk to your printer can be a huge bitch. Speaking of bitches, why is the standard way to do printer alignment still to use that stupid foomatic align.ps? There should be a wizard on the web admin to do alignment. I used the PPD for a digital LN17ps with CUPS and, though it has an lpr interface, I couldn't print straight from cups. I have to print

I'll admit I screen my hardware, but I've had very little trouble with CUPS using System-Admin->Printing in GNOME 2.10.1 (ubuntu.) I clicked "new printer," "forward" (aka "next'), and "apply." it detected it and selected the driver. I didn't have to do anything but make sure it was right.

I don't know anything about fedora. I also have had trouble in the past with using my own ppd files. But I think the interface was just fine.

As for general printing problems? There are plenty. Just because your printer

I've got a friend who's got a USB printer on Win-XP. It seems like every time they unplug the printer and plug it in, it occurs as a different instance -- which means that the printer needs to be installed yet again. I'm gonna be heading over to his place this weekend to help solve the problem.
____

Printers are, generally, a bit of a pain in the ass. There are way too many proprietary drivers and driver styles, and I really don't see the need for it.
Why can't these manufacturers define a standardized, extensible interface format for their printers and end this madness once and for all?

Yeah, but postscript's not open source. I think that Adobe charges royalties (who wouldn't?), so with the price of printers now being less than the cost of the replacement cartridges(!) people seem unwilling to use it in other than the higher end.

You ask an application to print something. At most, you should have to specify which printer. The system should have figured out by itself everything it needs to know about directly attached printers.
Anything on the local network that offers printing should have already been recognized. Faraway printers may have to be specified in some way, but even there, you'd expect a directory system or search engine to do the heavy lifting. There should be no need for explicit "system administration".

That's how it should work. Yes, it's not easy to do it that way. Yes, there are some older printers that can't be automatically identified via their electrical interface. Yes, sometimes the system may have to find and download some format conversion program.

Most of Eric's comments are NOT about CUPS, but instead about the various GUIs that have been written to run on top of CUPS.

Regarding the CUPS web interface, there is actually a LOT of development happening for the new CUPS 1.2 release to make things work much more smoothly, ask the user less questions when they don't need to be asked, and move the web interface to a more task-oriented UI instead of the current function-oriented UI.

For example, in the new web interface the "add printer" button will list any printers that CUPS discovers automatically ("Epson Stylus RX300 on USB port") - you just click on "add listed printers" to add the printers, or "add printer manually" to add one manually. Similarly, printer sharing, remote administration, etc. are now check boxes on the administration page instead of going through the cupsd.conf file.

Anyways, good changes ARE coming for the native CUPS interfaces, and I only hope that the Linux distributors follow suit with their GUIs...

Being a bit of a Linux newbie as it comes to anything past a router, firewall or Samba, I can see that there are a few problems with CUPS but nothing show-stopping.

So long as you know about www.linuxprinting.org, you're set. The procedure via gui consists of: Connect with a web browser, add a new printer, give it a name, select a port (which admittedly can have some confusing options as many "ports" are available for a single, physical port), select a printer.

For bog-standard printers like HP Laserjet, you just select anything that looks HP-like until you can get to select your printer. For others (for example, my Samsung ML-4500 or inkjets etc.), download a PPD, install it in the right place beforehand and options will arise for that printer.

No, it's not 100% clear or simple but then not much in Linux ever is, but I have to say that CUPS is one of the easiest parts of my Linux setup. X, KDE and ALSA have given me ten times more problems. And once CUPS is up, so much uses it and detects it that you really have very few problems, KDE, Samba, etc.

Compared to the APSFilter (with all it's Ghostscript support) that I used to use for printer-servers prior to discovering CUPS it's a dream. I'd have to say that CUPS needs one or two minor tweaks to it's GUI, not much worse than that and even one or two lines of explanatory text or a web-link to Linux Printing's HOWTO would let it be used by even the simplest of Linux users.

``For those who are still frustrated with the CUPS GUI, how would you improve it?''

Each time I make an attempt to tackle CUPS, I find that the easiest way to deal with configuring it is to delete that package and load LPRng. At least it's something that you can get working in a reasonable amount of time.

Everyone is screaming "just use Yast", "use the webinterface" or "system-config-printer isn't that bad". That's not the point. Here's the scenario:The user plugs in a printer. There is no step two. If there was no printer before, the printer is now the default. There is no need to tell the machine about it this, no GUI popping up, no config programs to run. If there was a previous default printer the user can right-click its icon representation in some control center to make it the default, otherwise it is just a choice in the print preview dialog.

Stop bitching that CUPS is good enough. Informing us that tool X does what you want it to do is of no worth whatsoever. That is simply taking the easy road. Open Source can, and will given enough time, do better. By failing to see the problems you are just hurting Open Source by your zealotry.

Whether some other operating system does it in some other way is completely irrelevant. The nature of Open Source is to iteratively approach a perfect state. There is no part too small or insignificant, or grand and important, that we can not improve it. Every single wording of every label is open to refinement, every padding issue of every widget open to tweaking to perfection. And when the system plain sucks we rip it out and do it again. The only constant factor in Open Source is change and improvement, 365 days a year 24 hours a day. The shop never closes, on Christmas day there is a million CVS checkins around the globe. That is what Open Source is all about. I put very real code where my mouth is, if your contribution to Open Source consists of "well, it works for me", SHUT THE FUCK UP, in your shortsightedness you hurt Open Source and I as a developer will rather have 5 guys pointing out flaws than you promoting the status quo.