(VIII.) How To Contribute:
Helping the Advance of Linux Printing

Presented by Till Kamppeter, maintainer of linuxprinting.org, leader of the Foomatic project, author of XPP, and responsible for the printing part of Mandrake Linux

Contributing XML data - Contribute your printer's PJL options - Free PPD files for free operating systems - Contributing code - User support - Writing Documentation

Contributors to the linuxprinting.org/Foomatic project (and also other printing-related projects) are urgently needed, Foomatic already evolved to an unofficial standard used by many distributions and around 5000 people every day are visiting our web site, but the project is currently maintained nearly only by Till, and he has really not enough time to do all what should be done, especially keeping track with all new printers appearing, answering the user postings, get in all code which we and the users like to have in the system, ...

There are plenty of ways to contribute to this project, so programming knowledge is not necessarily needed. Here we show you with which contributions you can help us

Contributing printer and driver data

As a user of a certain printer model, please post your experience on the linuxprinting.org Forums (http://www.linuxprinting.org/newsportal/) of this site. Please tell with which driver and which option settings your printer works best, what is supported and what not, whether you use Foomatic or another setup infrastructure. Tell also whether the information in the printer's entry is correct (recommended driver, drivers which support the printer, comments, ...).

If your printer is not listed yet, post also on the linuxprinting.org Forums as described above, but provide the following information:

Try to make us as few work as possible by sending a complete and correct report. Sending wrong or not reproducible data will rather complicate the live of other users with the same printer than help them, and it will also lower the reputation of the site. Best would even be if you could provide as a ready XML file, please download and install the Foomatic package from http://www.linuxprinting.org/foomatic.html to test the file and refer to the format description in the end of the package's README file to know how the XML file must look like. Send also a list of the drivers which support the printer, because this information has to be entered into the driver's XML files. We would also appreciate to go through a printer manufacturer's web site and make XML data for all the models mentioned there.

If you have discovered a free ("free" as defined on www.gnu.org) driver which is not listed, please send us (also on the linuxprinting.org Forums) the address of the driver's home page. If the driver is not available for download any more, please send us the newest source package of it which you can get, so that we can re-host this driver. Please also tell us all your experiences, special tricks, which printers does it support, and how to use the driver, especially if it is poorly documented by its author. Also here providing XML data as described in Foomatic's README file is welcome. If you generate the XML files with scripts, please send us the scripts, too.

You have developed or plan to develop a driver? Then please put it under a free ("free" as defined on www.gnu.org) license and make it available for download (we can host it for you, if needed). Consider also using the IJS (http://www.linuxprinting.org/ijs/) interface to connect your driver to GhostScript and avoid patching it into GhostScript. This way users can easily add the driver to their systems. Include also a generator for Foomatic data into your driver's source package, so that users can easily set up printer queues with your driver. This also makes it easier for us to list your driver on our site. Consult Foomatic's README to obtain the necessary background knowledge.

If you are a printer manufacturer, test your printers whether they work with free software and provide free software drivers. Best would be if you also provide Foomatic data for your printers and drivers. You get free advertising of your printers by database entries telling that they work "Perfectly" and good reports on the Vendor Info (http://www.linuxprinting.org/vendors.html) and Suggested Printers (http://www.linuxprinting.org/suggested.html) pages.

Contribute your printer's PJL options

Most PostScript and PCL laser printers understand also PJL, the "Printer Job Language". This is a language in which you can send commands to the printer to control features as duplex printing, stapling, paper input tray selection, and so on. These commands are usually given before the job itself is sent and they are independent of the language used for the job. These commands can also be used to configure the printer's default settings stored in its NVRAM.

Now you probably think that someone must reverse-engineer the output of the Windows driver to find out which commands are available. This is not necessary, there is a PJL command to query all available commands with all possible settings, so one can easily find out which commands the printer understands.

Foomatic has scripts to easily poll the command list from the printer and to add appropriate options to a locally installed Foomatic database. So you can make these options available for your printer queue with some simple command lines and so get access to some additional printer filters.

We want to ask the users for getting the PJL options for their printers, trying them out and contributing the useful options to the Foomatic database. To do so, here are some instructions:

Do not simply send us the output of the "./foomatic-getpjloptions" command or a tarball of all auto-detected options, because we do not know which options make sense to be added to the database. We don't have all listed printers and so we cannot test the options.

Free PPD files for free operating systems

This is a call to all printer manufacturers and everyone who is in contact with the right persons at the printer manufacturing companies to make PPD files easier accessible to users of free operating systems.

Due to all applications under free operating systems sending PostScript when printing a document, PostScript printers (with the PostScript interpreter implemented in their hardware) work directly, without a special driver.

But to make fully use of them one needs a PPD file, which describes the printers features. Usually there come PPD files coming with the Windows and Mac drivers, and exactly these files work also under free operating systems, preferably with the CUPS printer spooler.

The problem is that they are distributed under licenses which do not allow re-distribution, for example by linuxprinting.org or in freely downloadable free software packages as Linux distributions. So here we ask all printer manufacturers for switching to free licenses (see www.gnu.org), as HP (http://hp.sourceforge.net/) already did with their PPDs. This should not be a big problems, because the software algorithms which make the printers better than the ones of the competition are in the firmware of the printers, the PPD file only describes which PostScript commands activate which features of the printer.

Contributing code

Foomatic 2.0.0 is released and the development for Foomatic 3.0 is starting now.

As already told earlier for 3.0 it is planned to substantially change the filter infrastructure: All spoolers should use Adobe-compliant PPD files without embedded Perl data structure, it will be taken care of the differences between the spoolers only by the filters.

There is a lot to do, if you want to participate, or suggest a new feature, please post on the Foomatic development forum


and use the current CVS snapshot


as base for your development. The README file of the Foomatic package explains the data structure and Perl API. Happy hacking!

User Support

You have knowledge and experience in terms of printing with free software? Then please help the users on this very complicated subject. The users post their questions on the Forums


of linuxprinting.org. So read all the Forums (also of other printer brands than yours, because some questions turn out not to be model-specific) and help the users with your answers. It is recommended to use a Usenet news reader for doing so.

Questions where we have most often difficulties to help are distribution-specific questions and also questions about heterogeneous networks of free operating systems together with Windows or Mac machines.

Another good thing would be if someone could go through the archives


and set up an FAQ for the Forums.

Writing Documentation

We've got to add coverage of CUPS, PPR, LPRng, GNUlpr, and spooler-less printing to the Printing HOWTO


and the HOWTO needs also to be updated to the current state of the art in terms of printing with free software. Contributions to this end or perhaps even a new maintainer for the Printing HOWTO are welcome. Other contributions are also welcome. Contact us or post on the Forums.