PrinterDriverAutoDownload

Revision 13 as of 2006-11-08 18:56:10

Clear message

Automatic download of printer drivers through the internet

Summary

The printer setup tool of Ubuntu 7.04 and later should automatically download LSB-packaged printer drivers from linuxprinting.org (will be the FSG OpenPrinting database then). This way we do not need to ship all drivers on the CDs, we are prepared for printers being launched after our release or being supported only by closed-source drivers which we are not allowed to distribute, driver updates, ...

Use cases

  • User A has a not very common printer for which there are no drivers on the CDs, but drivers exist and are listed on linuxprinting.org
  • User B has a printer for which the manufacturer supplies a closed-source driver which Ubuntu cannot ship on the CDs
  • User C has a printer whose driver came out after the last release of Ubuntu came out.

Scope

All Ubuntu distributions, depending on implementation progress Feisty or Feisty+1.

Design

This is based on new functionality which I am currently adding to linuxprinting.org resp. FSG OpenPrinting. See the [https://wiki.ubuntu.com/PrinterDriverAutoDownload?action=AttachFile&do=view&target=FSGOpenPrintingPresentation.pdf attached presentation] ([https://wiki.ubuntu.com/PrinterDriverAutoDownload?action=AttachFile&do=view&target=FSGOpenPrintingPresentation.odp OOo 2.0]) and also

Principle

  • Add requirements for common printer driver interfaces to LSB 3.2: Driver/renderer (currently GhostScript interfaces IJS, CUPS raster, OpenPrinting Vector, FHS (File System Hierarchy) extension for printer drivers and PPDs.

  • Make use of other LSB standards, like packaging
  • Make distribution independent driver packages which work with every LSB-3.2-compliant distro
  • Attach these packages as downloadable files to the driver entries of the Foomatic database at linuxprinting.org (FSG OpenPrinting)

  • Make the access both human- and machine-readable
  • Provide an API for client software to access: List of all printers, drivers, driver packages, available/recommended drivers for a given printer (specified by device ID or Foomatic printer entry), driver free/non-free?, digital signatures, driver download
  • A printer setup tool could for example detect a printer, check local driver availability and in addition ask the FSG OpenPrinting database for available drivers for this printer. Then install the remote driver if there is no local driver is available or if the local driver is older (update).

Integrity/security/reliability issues

A possible security concern could be that here executable code is automatically downloaded from a non-Ubuntu web site. Even with user advice, as telling that this download will happen and giving the possibility to reject, electronic signatures of the driver supplier (printer manufacturer) is not the ultimate solution here, as we want to provide a distro especially also for unexperienced users. So a blessing of the packages by Ubuntu and even better providing Ubuntu packages on the normal package distribution channels of Ubuntu would be a better solution (See comment below).

To still make use of driver packages from FSG OpenPrinting but provide Ubuntu-approved drivers one could suggest the following approach:

  • A daily process checks whether there are new drivers at FSG OpenPrinting and adds them to a TODO list

  • QA people at Ubuntu test the driver by installing it and doing some tests (which do not require the printer, like printing into a file)
  • If all is fine, they make a Debian package of this driver and do perhaps small adaptations
  • The Debian package gets into the Ubuntu repositories
  • The printer setup tool in Ubuntu looks into the Ubuntu repositories for driver auto downloads

The user can still (on his own responsibility) download drivers directly from FSG OpenPrinting and install them.

In general, the risk for a system being messed up by downloading an unknown printer driver in FSG OpenPrinting package format is relatively low:

  • On all distros printer drivers do not run as root, but as the special users "cupsys" or "lp".
  • Printer drivers never run in kernel mode.
  • Printer drivers are filters which generate the printer's native language from PostScript input.

  • The drivers provided via FSG OpenPrinting are restricted to reside an pre-defined standard directories, so when they are installed they cannot overwrite anything of the system or of other drivers.

Every FSG OpenPrinting driver package should provide the following data:

  • Release version
  • Release date
  • Is it free or non-free?
  • Contact info to get support, report bugs, ...
  • Digital signature of the supplier (for example printer manufacturer)

The driver supplier should overtake responsibility (like support) for the driver he has issued.

Implementation

Implementation on the FSG OpenPrinting side will soon be started by Till Kamppeter

Implementation on the Ubuntu will start when all needed APIs and specs are published by FSG.

Printer setup tool in which implementation of this feature will be done principally is printerdrake.

The drivers for the most important printers (HPLIP, Gutenprint, ...) will be provided on the CDs, so that users without internet connection will be able to set up their printers in most cases.

==Comments==

IanJackson brought in some concerns:

"It is not clear that automatically downloading software from a website like this, and running it as root (Rem.: Printer drivers do not run as root, see below), is a good idea. This is probably OK for ppd files (which are more like data) but driver programs (which convert raster data into a stream for the printer) run as root in the printing system, installing packages might accidentally break unrelated aspects of the system (or the whole system), and there are some worries about whether it's always reasonable for us to decide on our users' behalf to wholly trust the originators of these drivers.

So, to be consistent with our efforts to ensure that post-release our systems are stable and secure, it would be sensible to arrange that these programmatic drivers should be blessed by Ubuntu itself. In which case it probably makes most sense to distribute them via our normal package distribution channels."