Printer setup tool: system-config-printer or the tool of the Control Center in GNOME 3

Registered by Till Kamppeter

From Oneiric on we are using GNOME 3.x and from this GNOME version on there is a printer setup tool in the Control Center. This tool is new and has much less features than system-config-printer and especially does not contain all the functionality for selecting best drivers, identifying network printers, HPLIP integration and so on. So dropping system-config-printer in favor of GNOME's new tool will be a major step back. Discussion has already started on the OpenPrinting Summit in April this year (see links below) and on the UDSes for Oneiric and Precise. Here we will continue discussing the situation to see how the situation improved with the further development of the new tool. Our plans are to finally switch over in Raring.

In Oneiric and Precise we have continued to use system-config-printer, patching and configuring gnome-control-center and the system menu so that system-config-printer is started in its own window instead of the capplet of the control center, at least for Unity desktops.

For Raring we want to finally use the original GNOME tool. The support for setting option defaults, especially the configuration of the printer's hardware (accessories like extra trays, duplex unit, ...) got added, but we need to take care about the following items:

- Server Settings: Share printers, accept shared remote printers, debug logging, everyone can kill everyones jobs, remote admin, ...

- Correct printer/driver assignment, joining auto-detection results of the same device, ... using system-config-printer algorithmic part via D-Bus.

- Auto-configure hardware add-ons of PostScript printers using the functionality provided by CUPS.

- Printer driver auto-download via OpenPrinting

- Plug'n'Print (fully automatic setup of USB printers)

See also:

https://bugzilla.gnome.org/buglist.cgi?component=Printers
https://bugzilla.gnome.org/show_bug.cgi?id=654742
https://www.linuxfoundation.org/sites/main/files/system-config-printer-status.pdf

Whiteboard

seb128, 2013-04-04:
we decided to go back to s-c-p for raring, postponing some extra items
keeping the s-c-p rules and lpadmin group investigation items still, that seems not sure about the first one but the group investigation seems like something that should be easy to do and could still happen for raring

changing the serie to "s" as well so the g-c-c bugs stop being listed as raring items

seb128, 2013-03-11:
setting some "implement..." items to postponed, those don't seem likely to happen for raring, seeing the number of issues we should maybe consider rolling back to system-config-printer for this cycle?

tkamppeter, 2012-11-09:
Met Marek Kasik (GNOME print dialog and printer setup tool maintainer, Red Hat) on the Color Management Hackfest in Brno and talked about the setup tool:

- Server settings: GNOME designers would not accept them, to keep tool simple. I tried to convince Marek to get at least a button for using remote CUPS printers (important for configuration-less laptop) and button for sharing printers (can be per-queue). He will try whether the GNOME designers will accept it. Otherwise we would at least turn on the use of remote queues by default.

- Correct printer/driver assignment and hardware identification with s-c-p D-Bus service is implemented.

- Auto-configure installable options: Implemented when new queue is created, I asked for a button to do it at any time later again. Marek will look into it.

- Printer driver auto-download: Probably we need to carry it as Ubuntu patch as GNOME will not support a facility which allows downloading proprietary drivers, even if the code has configurable options to adapt it to distro policies.

- Plug'n'Print: Implemented (at least on Red Hat) via UDEV utility of s-c-p calling facility in gnome-settings-daemon.

UDS-r:
http://summit.ubuntu.com/uds-r/meeting/21369/desktop-r-system-config-printer-vs-gnome-3-control-center/
Design spec by mpt: https://wiki.ubuntu.com/Printing#A.2BIBw-Printers.2BIB0_settings (maybe we need radio buttons before the printer for settings as default instead of "Set as default" button", we can also have "share" (can be just an icon, not a label) button in the same "+-" bar stuff-y or three categories (coulmns) - "Default", "Share" (that will use checkboxes) and "Printer")
Upstream design for a Privacy and Sharing panel: https://live.gnome.org/Design/SystemSettings/Sharing

tkamppeter, 2012-10-19:
Updated for Raring

tkamppeter, 2011-11-19:
We need also the following functionality in the GNOME tool:
- What is under "Server" -> "Settings" of s-c-p, otherwise we cannot do network printing to printers on Ubuntu box. Only the check boxes are needed, not the advanced settings.
- Enable/Disable print queue, as some errors can disable a print queue.
- Share/do not share print queue, also for network printing.

tkamppeter, 2011-11-11:
- On the UDS-P session we found out that the GNOME printer setup tool is missing major features, so we will not necessarily switch to GNOME's tool in Precise.

tkamppeter, 2011-10-18:
- In Precise we will try to switch over to the new GNOME tool, using parts of system-config-printer via D-Bus. We continue following the development with this Blueprint.

tkamppeter, 2011-08-24:
- Oneiric will continue to use system-config-printer. gnome-control-center is appropriately patched to fire up system-config-printer instead of GNOME's own printer setup tool. system-config-printer (1.3.5 and newer) has now all the algorithmic parts in its D-Bus service, so the GNOME developers can easily make use of them for GNOME's printer tool (which will probably get the default from P. P. on).

tkamppeter, 2011-07-16:
- Upstream bug https://bugzilla.gnome.org/show_bug.cgi?id=654742

pitti, 2011-05-24:
 - I'd like to keep this at drafting until it has actually been decided how the integration should happen: i. e. indicator or not (-> talk to mpt), embedding into control-center or have a separate application (-> talk to rodrigo)
- I agree that for oneiric we should keep s-c-p; we won't manage to port all functionality to g-c-c, but it would be good to start a discussion upstream about the missing features, and whether GNOME actually desires getting these, or whether they want to offer a simplified interface only.

pitti, 2011-05-25: after discussing with Rodrigo and Seb again, we'll do the
"integrate s-c-p as control-center applet", and ignore the upstream one for now, as it still needs some time to catch up.

----------

Links for introduction to the problem:

The System Settings window "Printers" panel: http://live.gnome.org/Design/SystemSettings/Printers
Tim Waugh's presentation on the OpenPrinting Summit 2011: https://www.linuxfoundation.org/sites/main/files/system-config-printer-status.pdf

Related Blueprints:

* https://blueprints.launchpad.net/ubuntu/+spec/desktop-o-system-settings
* https://blueprints.launchpad.net/ubuntu/+spec/desktop-o-reduce-number-patches-packages

Related upstream bug report:

* https://bugzilla.gnome.org/show_bug.cgi?id=654742

----------

UDS-P session notes

What do we need to get fixed or added to the GNOME one before switching
Action items:
- use s-c-p rules for recommended drivers in s-c-p's idev scripts
- host binary drivers in our repositories
- [larsu] make printer's default options available
- [lars] talk to is about hosting binary repos
- review if we still need the lpadmin system group
- [lars] check if we can get rid of s-c-p's model matching algorithm
- [lars] talk to mpt about how / which options should be presented to the user
- to translate the common options: parse the ppds files to build a list of strings to translate; build a translation template with those, get it in launchpad and exported to langpacks, get the GNOME ui to use the gettext domain
- [lars] find out if setting the locale changes paper size
- do a status update at the platform rally and decide if we switch for this cycle or not
other topics:
- the printers discovery is not activated by default in Ubuntu (ubuntu-disable-browsing.patch in the cups package)

----------

Pre-UDS-O discussion:

I would prefer that we end up with just one "System Settings" panel that provides access to all printer setup features. Having a simplified "System Settings" panel is counterproductive if it prevents you from setting up a printer at all. And relegating "advanced" options to a separate window, that looks almost the same as the System Settings panel but not quite, would be more complicated overall than having everything in the System Settings panel to begin with. -mpt

The best is to do upstream changes in both System Settings and system-config-printer.

In system-config-printer all the "intelligence" (Especially creating list of detected printers with exactly one entry per physical printer, comparing make/model names, finding best driver, printer driver auto-download from OpenPrinting, HPLIP integration, Plug'n'Print discovery of printers without queue and printers turned on/off, Server Settings) should be moved into a D-Bus service to avoid the need to move the implementations to another programming language or reimplement the stuff for other reasons. system-config-printer's GUI can be continued to be maintained (as a D-Bus-only frontend not communicating directly with CUPS at all) for non-GNOME systems like Xubuntu.

The GNOME System Settings module for printing should also get a D-Bus-only frontend without communication directly with CUPS.

KDE's printer module could then be done this way as well.

Most important is that in system-config-printer the GUI part and the algorithmic part need to get well separated, so that all printer setup tools share system-config-printer's algorithmic part as a D-Bus service. So Tim's and my work get available for everyone and we avoid the reinventing of the wheel. -tkamppeter

UDS O Session Notes:

GNOME3 got a new simplified printing configuration dialog in its gnome-control-center
it's missing features, sharing printers for example
The new printer tool doesn't handle proprietary drivers (design choice), switching to the GNOME version would break downloading of those drivers
-> we don't want to drop that feature in Ubuntu
  -> if it doesn't get in upstream, we'll have to patch the ubuntu version
Option 1:
* hide the new panel, but keep its icon in System Settings to launch system-config-printer as a standalone application
Option 2:
* move the algorithmic part to DBUS, so system-config-printer can call only the methods required, and Ubuntu could use the other calls too
Option 3:
improve the new settings panel (or persuade its maintainer to improve it) to reach feature parity with what we have now, Till doesn't want to rewrite system-config-printer in C though and upstream is likely to not want some of the options we had in the simplified version (such as download+installation of proprietary drivers)
Option 4:
if somehow writing capplets becomes possible in python, embed system-config-printer into System Settings, replacing the existing Printing panel
Upstream prefers to rewrite the code than to add a dependency on system-config-printer
For reference, upstream design page is on http://live.gnome.org/Design/SystemSettings/Printers
e code than to add a dependency on system-config-printer
Plan:
- start with option 1 (launch system-config-printer separately)
- Till to investigate option 4 (embedding)

(?)

Work Items

Work items:
[till-kamppeter] check upstream status of the printing panel in g-c-c: DONE
[larsu] implement printer default options as designed: POSTPONED
[larsu] add printer sharing to g-c-c: POSTPONED
[kokoto-java] improve the existing design specs (when it comes to "Set as default" and "Sharing": POSTPONED
Make sure driver auto-download works, via s-c-p's D-Bus backend service: DONE
Make sure that Plug'n'Print works (works at least for printers with local driver support): INPROGRESS
Use s-c-p rules for recommended drivers in s-c-p's idev scripts: TODO
Add Server Settings: POSTPONED
Auto-configure hardware add-ons of PostScript printers using the functionality provided by CUPS: POSTPONED
Make printer's default options available: DONE
Review if we still need the lpadmin system group: TODO
[larsu] Check if we can get rid of s-c-p's model matching algorithm: DONE
[larsu] Talk to mpt about how / which options should be presented to the user: DONE
To translate the common options, parse the ppds files to build a list of strings to translate; build a translation template with those, get it in launchpad and exported to langpacks, get the GNOME ui to use the gettext domain: POSTPONED
[larsu] Find out if setting the locale changes paper size: DONE

Dependency tree

* Blueprints in grey have been implemented.