Summary

Instead of reimplementing a lot of Jockey's purpose/already existing features in system-config-printer, we will make Jockey more generic to also work for printer drivers.

Jockey will be able to look for available LSB-package drivers on OpenPrinting.org, and expose its services through a generic D-BUS API for requesting and querying device drivers. This API can then be used by system-config-printer and possibly other components of the desktop.

Release Note

TODO when spec is nearing beta.

Rationale

We can only ship a limited number of printer drivers by default, for CD size reasons, and also because new printer models are constantly appearing on the market which need drivers which were not yet available at the time of the Ubuntu release.

From the UI and workflow perspective, a printer driver is not much different from a kernel driver. Jockey and its planned online driver DB support is an ideal place to integrate support for printer drivers.

Use Cases

Assumptions

This specification relies on the implementation of printerdriverautodownload, in particular that openprinting.org will provide Debian-style package repositories.

Design

Printer detection

A printer is identified by stating its "IEEE-1284 device ID" (which, despite the name, is also available for USB and network printers). Printers generally return it as identification.

openprinting.org query

OpenPrinting.org already has a web query protocol. A new subclass of Jockey's DriverDB interface will be written which talks to that printer database to find out about available drivers for a given printer device ID.

D-BUS interface

Add a session D-BUS function for requesting a driver, identified by driver type (printer-id, or the already supported modalias for kernel modules) and the printer device ID. Jockey will check all available DriverDBs as usual and offer to install it if one is found.

It needs to be on the session bus, because Jockey needs to interactively present some driver details (license, description, confirmation). Jockey already has a built-in gksu support (this will eventually be fixed with a system D-BUS interface, but this is outside the range of this spec).

While being at it, the D-BUS interface will also get methods for getting a list of locally installed hardware, all available drivers, and for enabling/disabling a particular driver.

Implementation

Printer detection

lpinfo -l -v returns a list of locally connected printers and their device IDs, for example:

D-BUS interface

UI Changes

Test/Demo Plan

TODO when spec is nearing beta.


CategorySpec

DesktopTeam/Specs/JockeyPrinterDriverSupport (last edited 2008-08-06 16:59:38 by localhost)