An installation nightmare story
You don't often see that sort of story anymore; the mainstream distributions have become ridiculously easy to install. And, if you don't want to worry about installation, plenty of companies will happily sell you a system with Linux already on it. But that doesn't mean that all the problems have now been solved...
Your editor recently needed to replace a failing inkjet printer. Some time spent wandering the detailed information at LinuxPrinting.org turned up a reasonably inexpensive model which, according to the information there, "works perfectly." That is music to a Linux user's ears, of course. So, a quick trip and some minor credit card damage later, the printer sat on the table, ready to start burning through expensive ink cartridges.
I'll not inflict upon you the details of what it took to make this printer work on an almost-current Red Hat Linux system. In general terms, it required building new versions of CUPS and gimp-print from source, editing the PPD file by hand, and several other hacks. It took a couple days of effort. Now, your editor has been making printers work on Unix (and other) systems for a good twenty years. Printers have always been a pain. But this was worse than many.
It should be pointed out that, in a lot of ways, things are better than they have ever been. It is possible to put an inexpensive printer onto a Linux box, get top-quality output in all of the modes that the printer supports, and make it available over the network. Only a few years ago, doing this required hacking on filter scripts and learning more about strange ghostscript options than one would ever want to know. Now, most of the hard work has been done; it's mostly a matter of getting the right software running in the right place. The people working on Linux printing have done an impressive amount of great work.
But it's not yet enough. Users should not have to rip out their print system by the roots and rebuild it from source just to plug in an off-the-shelf printer. They should not have to navigate a complex array of software with names like foomatic, gimp-print, ghostscript, etc. and figure out how it all goes together. They should not even have to upgrade to a bleeding-edge distribution to make their printer work.
Windows users don't have to go through that sort of process. Of course, they have the advantage that their new printer comes with a CD containing the software needed to make that printer work. Linux users do not (yet!) receive any such courtesy. So we have to come up with a different way.
Some of the work has been done. The PPD files used by modern free printing systems contain much of the information needed to present an interface to the user. What's missing is a description of how to drive the printer. We need a means of describing printers in data, so that support for any printer is just a text file away. This was done for terminals a good twenty years ago; getting vi to work on a terminal was just a matter of setting an environment variable. Printers are harder to describe than ASCII terminals, but we've solved a lot of hard problems over the years.
Imagine a world where any Linux user can go to the store and buy a nice
looking printer, along with plenty of spare flesh-tone, DMCA-protected ink
cartridges. The system, once it notices that a new printer has been
plugged in, goes out on the net and grabs the right description files. And
the printer just works. That would be a system that is ready for
desktop and home users. And it's something that we should be able to
achieve.
