Make Printer Applications Configurable


Printer Applications are emulations of IPP printers on the local machine, usually to make a non-IPP printer work, the Printer Application being the printer driver. Printer Applications can also do other printing related things, like for example clustering remote IPP printers and when printing to the Printer Application, the most suitable printer will get automatically selected. Or a Printer Application can make IPP-over-USB printers work. Even CUPS is a certain form of Printer Application.

In the ideal case a Printer Application serving as a printer driver for example works completely automatically, auto-detecting the printers it supports and setting everything up, as creating the socket, registering the service on Avahi for DNS-SD advertising, …, and removing everything if the printer is disconnected or turned off.

This does not always work. For example for non-IPP network printers the user perhaps has to enter the IP address manually, or the printer driver can have configurable options which cannot be described in IPP attributes, or a Printer Application which clusters printers has to be told which printers to actually cluster, …

The Printer Working Group (PWG) has also create a standard for configuring IPP printers which we can use as well for emulated IPP printers, our Printer Applications. This standard is the IPP System Service. This allows to define configurable parameters which a device-independent client can poll from the IPP server and display in a GUI, so that the user can change them appropriate to his needs.

Curremtly, as the IPP System Service standard is still very new and there are no client GUIs implemented yet, IPP printers (and CUPS) use web interfaces, accessible with a web browser, for configuration. Not that comfortable and fast, and also very different from vendor to vendor. Also this could be implemented in Printer Applications to make them configurable.

The student's task is to create libraries, utilities, contribute to the Printer Application framework to get configurability in the Printer Applications. One could perhaps have two students, one for IPP System Service and one for a web interface.


Dheeraj Yadav (dhirajyadav135 at gmail dot com), Michael Sweet, author of CUPS (msweet at msweet dot org), Ira McDonald, OpenPrinting (blueroofmusic at gmail dot com), Smith Kennedy, HP (smith kennedy at hp dot com), Till Kamppeter, Project Leader OpenPrinting (till at linux dot com), TBD

Desired Knowledge

C programming, DNS-SD, IPP

Code License

Apache 2.0, MIT