Differences between revisions 20 and 21
Revision 20 as of 2011-10-24 20:59:55
Size: 6475
Editor: DidierRaboud
Comment: pnm2ppa and pxljr
Revision 21 as of 2011-10-25 09:23:46
Size: 6490
Editor: DidierRaboud
Comment: rastertosag-gdi is gone to NEW, with a shorter short-name.
Deletions are marked like this. Additions are marked like this.
Line 112: Line 112:
|| rastertosag-gdi || printer-driver-rastertosag-gdi || || rastertosag-gdi || printer-driver-sag-gdi || || Uploaded to NEW. ||

Rethinking the Printing Stack for Wheezy / Precise

Now that most printing packages are under few team umbrellas; now that both Ubuntu and Debian will both be unfrozen for some period, it's clearly a good time to take a step back and look at the big picture.

(Note that this is obviously partial and that everything here should be subject to discussion.)

Overall goal

Whatever the issues might be, there is certainly a set of common goals we should agree on:

  1. the "print-server" tasksel task should install CUPS and all printer drivers (with Recommends to be able to remove them afterwards)
  2. there should be very few "printing" top-level packages, that all install:
    • one print server (CUPS, lpd, …)
    • the printers database (foomatic-db{,-compressed})
    • all printer drivers.
  3. at each level of the stack, the binary packages should be named coherently and dependencies between and within the levels should be coherent and logical.
  4. it should be possible to sanely move from one print server to another without needing to uninstall the whole stack of databases and printing drivers.

Issues and proposed solutions

CUPS-specificity

As far as I can tell, Ubuntu only has CUPS as available print server, so it's clearly more a challenge for Debian.

Current specificities:

  • dh_pyppd compresses PPDs to a CUPS-specific directory ( /usr/lib/cups/driver ), which obfuscates the availability of those PPDs to users of other print server users.

    • Proposal: Compress to /usr/share/ppd/compressed/ instead, with a symlink to /usr/lib/cups/driver.

      • ?MartinPitt: cups already expects PPDs to be in /usr/share/ppd/*/; it is wrong to install PPDs into /usr/lib/cups/driver/, and I'm not even sure that cups looks there.

      • DidierRaboud: From initial tests, it seems that cups doesn't 'see' compressed PPDs under /usr/share/ppd/; to be investigated.

Package naming inconsistencies

Many printing-related packages are not named consistently; in particular drivers.

Current inconsistencies:

  • There is currently no printing drivers naming policy. Printer driver binary packages names carry no consistent link back to the printers they drive.
    • As examples:
      • foo2zjs enables FLOSS-printing to some HP printers

      • epson-escpr enables printing to Epson Inkjet printers

      • rastertosag-gdi enables printing to Ricoh Aficio SP110* printers

    • Proposal: Addressed by "Action 1" below.

Dependencies mess

As an image can be worth thousand words:

A graph with the current dependencies within the printing stack

Depends are blue, Recommends are black and Suggests are gray.

Something (to be discussed) should be done about this.

Lack of clear entry-point

Currently, when one wants a "working printing stack", there is no clear "root" package that provides that. If one takes a look at the print-server task, then foo2zjs is a direct dependency of it, for an unknown reason; same goes for hp-ppd.

Action proposal

Iff binary package renames and a big refactoring of the inter-relations in-between the various packages are both agreed on, the sanest plan would be:

  1. Agree on a plan common to Debian, Ubuntu and whatever other derivatives would like to take part of the discussion;
  2. Alter packages, create new binaries, upload to Debian unstable, trough the NEW queue;
  3. Test global upgradeability from previous releases to unstable frequently enough;
  4. Sync to Ubuntu precise; test upgreadability from oneiric and from past LTS.
  5. Then, if possible, do any change in Debian unstable and sync to (or back) to Ubuntu.

Action 1 - Rename printing driver packages

Status: In progress

Rename binary packages to printer-driver-${Identifier}.

  • ${Identifier} is short-name for the driver, probably upstream's name for it.

Details

  • In the process:
    • Short and long description are unified in form and content
      • Description: printer driver for …

    • Archive sections and priorities are unified:
      • Section: text

      • Priority: optional or extra

    • Package relationships are unified
      • No Recommends on foomatic-db* (wrong way)

    • /!\ Take care of the driver/<driver> file created by dh_pyppd. From 0.5.9-6~, dh_pyppd strips 'printer-driver-' from the package name to create the file, hence the `DRIVER_REGEXP` of the ppd-updater file must be handled accordingly (e.g. `m2300w: and not ^printer-driver-m2300w: )

  • Transitional packages are provided
    • The renamed (with new name)
      • Replaces+Breaks the old name with << ${Debian-revision}~

    • The dummy package (with old name)
      • Depends (unversioned) on the new.
      • Made empty.
      • Architecture: all

      • Section: oldlibs

      • Priority: extra

      • Description: transitional dummy package for ${Identifier} printer driver

  • Source packages are not renamed.
  • A printer-driver-all package, Recommending all known printer drivers is created, using a new source package. To ease testing transitions, this source package might provide a printer-driver-all-enforce which has Depends instead of Recommends, making sure that the Recommends can be satisfied for the package.

  • Unless explicitly needed, any database or spooler should not have a direct relationship on any specific printer-driver-*, probably only needing a Recommends on the printer-driver-all.

Package renames

Old binary package name

New binary package name

Comment

Status

c2050

printer-driver-c2050

Done.

c2esp

printer-driver-c2esp

Done.

cjet

printer-driver-cjet

Not under Team's umbrella

epson-escpr

printer-driver-escpr

Done.

foo2zjs

printer-driver-foo2zjs

m2300w

printer-driver-m2300w

Done.

ptouch-driver

printer-driver-ptouch

Done.

pxljr

printer-driver-pxljr

Uploaded to NEW.

splix

printer-driver-splix

Not under Team's umbrella

min12xww

printer-driver-min12xww

Not under Team's umbrella

pnm2ppa

printer-driver-pnm2ppa

Uploaded to NEW.

rastertosag-gdi

printer-driver-sag-gdi

Uploaded to NEW.