PSARC,
I am sponsoring this fast track for Ghee Teo of the JDS - Desktop
group in Dublin, Ireland. The case directory contains this attached
proposal. I have set the time out for December 1st, 2008 due to
the Thanksgiving holiday in the U.S.
This project proposes to integrate the System Config Printer
Open Source project into a Minor release of Solaris. It uses
the PyGtk bindings to provide a familiar GTK+ GUI on the desktop.
Thanks,
John
-------------- next part --------------
Template Version: @(#)onepager.txt 1.35 07/11/07 SMI
Copyright 2007 Sun Microsystems
1. Introduction
1.1. Project/Component Working Name:
Print Manager for CUPS
1.2. Name of Document Author/Supplier:
Ghee Teo <ghee.teo at sun.com>
1.3. Date of This Document:
11/14/08
1.3.1. Date this project was conceived:
August 2006 is when the CUPS Print Manager,
system-config-printer
was significantly rewritten leading to its present form.
1.4. Name of Major Document Customer(s)/Consumer(s):
1.4.1. The PAC or CPT you expect to review your project:
Solaris PAC
1.4.2. The ARC(s) you expect to review your project:
PSARC
1.4.3. The Director/VP who is "Sponsoring" this project:
robert.odea at sun.com
1.4.4. The name of your business unit:
OPG /Open Source
1.5. Email Aliases:
1.5.1. Responsible Manager:
leo.binchy at sun.com
1.5.2. Responsible Engineer:
ghee.teo at sun.com
1.5.3. Marketing Manager:
glynn.foster at sun.com
1.5.4. Interest List:
printing-discuss at opensolaris.org
2. Project Summary
2.1. Project Description:
System Config Printer [1] is a Print Manager written in Python for the
CUPS print system. It uses the PyGtk bindings to provide a familiar GTK+
GUI on the desktop. System Config Printer is one component which makes
CUPS to be a viable Print System on OpenSolaris/Solaris.
System Config Printer provides the following functionalities:
- Manual addition of print queues for Serial/Parallel ports, HP Jet
Direct, LP Print Server, IPP
- Manual addition of print queues to Windows Printers via Samba with the
appropriate configuration
- Ability to configure print queue properties
- automatic detection of other CUPS queues in the same subnet
- Ability to download PostScript Printer Description (PPD) files from
OpenPrinting.org [3]
When hal_lpadmin which is part of hal-cups-utils [5] is integrated into
OpenSolaris/Solaris, System Config Printer is also able to display auto-
detected local USB printers in its GUI. hal-cups-util is another
component
to make CUPS a alternate Print System on OpenSolaris.
2.2. Risks and Assumptions:
The latest system-config-printer uses Python 2.5 features in a number of
places. We need to have these features in OpenSolaris to gain full
functionalies of System Config Printer.
3. Business Summary
CUPS is the Print System on the major Open Source platforms, Linux, BSD
and even Mac OS X. OpenSolaris has moved on to have CUPS since Nevada
build 87, but there is still no GUI available for the Desktop.
System Config Printer has now been adopted by the major Open Source
distributions including Ubuntu, OpenSuSE, Fedora and others. It is
gaining significant momentum to displace all other Print Manager GUI for
CUPS. It is therefore make sense for OpenSolaris to adopt and leverage
the Open Source development efforts to enable CUPS as a viable Print
System.
3.1. Problem Area:
Customer can use CUPS as their print system with the same level of
usability of Solaris LP on the desktop.
3.2. Market/Requester:
OpenSolaris users, developers
4. Technical Description:
4.1. Details:
CUPS [2] is an implementation of the Internet Printing Protocol (IPP)
standard. System Config Printer is a tool to configure a CUPS server
(often the local machine) using the CUPS API. The tool is written in
Python, using pygtk for the graphical parts and with some Python
bindings
(pycups) for the CUPS API. It provides very similar functionality as
the CUPS web interface through port 631 for configuring printers as well
as monitoring print jobs.
Since System Config Printer is a native application, it can also utilize
other native Desktop technologies such as D-Bus, notification daemon.
These technologies have enabled better integration and user's experience
in managing printers. The other extensibility is the ability access
Windows printers via Samba.
Primary functions provided:
o Queue View - Showing the printers that the user can print to at the
time. The view is dynamically updated by the CUPS daemon.
o Job View - Showing the job status for the a particular queue.
o Listening on D-Busfor local printers
o Listening on port 631 for IPP printers
o Setting of Queue Properties
o Access Control of printers
o Setting of Jobs properties
o Creation of Printer Class
A bit of security on System Config Printer:
o It uses the CUPS API provided through the pycups binding for the
underlying authentication operation.
o There are a set of administration tasks that CUPS requires privilege
user access, typically that user is root. RBAC is under consideration
by the CUPS ARC case, but it is out of scope for this project.
o System config printer pops up an authentication dialog prompting user
to enter the privilege user's password when these administration tasks
are performed.
o The authentication is done through PAM through CUPS daemon and when
it
is successful, the user is given a lease 24 hours to perform the
administration tasks by the CUPS daemon. Should the tool exits in the
mean time, the lease is expired and re-authentication is required.
o As PPD files can be downloaded when adding new print queue, the PPD is
initially loaded in memory. Once the user has chosen the appropriate
PPD file, it is then saved by CUPS daemon in /etc/cups/ppd.
o System Config Printer uses whatever encrytion that the CUPS daemon set
up to use. It does not change that nor allow use to change it.
So with the suport of the CUPS API, the system config printer does not
have to store any sensitive data on disk nor in memory.
4.2. Bug/RFE Number(s):
6766232 Deliver system-config-printer as print manager for CUPS
(http://monaco.sfbay.sun.com/detail.jsf?cr=6766232)
6769014 Solaris should include hal-cups-utils
(http://monaco.sfbay.sun.com/detail.jsf?cr=6769014)
4.3. In Scope:
As in 4.1
4.4. Out of Scope:
As in 4.1
4.5. Interfaces:
------------------------------------------------------------------------
Exported Stability Comments
------------------------------------------------------------------------
SUNWcups-manager Uncommitted New package
SUNWcups-manager-root Uncommitted New package
/usr/bin/system-config-printer Uncommitted CUPS Print Manager
--configure-printer <Queue> Volatile CLI for
--choose-driver <Queue Name> Volatile system-config-printer
/usr/lib/system-config-printer
system-config-printer-applet Volatile Notification Applet
com.redhat. (See NOTE 1)
NewPrinterNotification Volatile D-Bus message passed
among the applet, the
Print Manager and
hal_lpadmin
/etc/dbus-1/system.d/
newprinternotification.conf Volatile D-Bus defnition for
NewPrinterNotification
www.openprinting.org Volatile Website that provides
additional PPD files.
(See NOTE 2)
vendor-packages/cupshelpers Volatile Helper python class
lib/system-config-printer Volatile Python code directory
share/system-config-printer Volatile data directory
------------------------------------------------------------------------
Imported Stability Comments
------------------------------------------------------------------------
com.redhat. (See NOTE 1)
PrinterSpooler Volatile PSARC/2008/130
D-Bus message channel
between cupsd and client
libcups Volatie PSARC/2008/130
python Volatile PSARC/2008/543
NOTE 1: The name is vendor specific is due to the recommended naming
conventions of D-Bus [4].
NOTE 2: As the time of writing, I am still waiting to see whether the
tool will be integarted with Python 2.4 or 2.5. If it is with 2.4, the
interface will be prefix with lib/python2.4 or lib/python2.5 if it is
with 2.5 according to PSARC/2008/543.
4.6. Doc Impact:
Working with OpenSolaris Tech writer to provide any required
documentation on the web.
4.7. Admin/Config Impact:
None.
4.8. HA Impact:
N/A.
4.9. I18N/L10N Impact:
Working with G10N to figure out the scope of work.
4.10. Packaging & Delivery:
SUNWcups-manager
SUNWcups-manager-root
4.11. Security Impact:
No known security issues.
4.12. Dependencies:
Requires Python 2.5 and the complete stack up to the pygtk to be able to
run the tool in 2.5. The tool can still runs with Python 2.4 with
slightly reduced functionalities. Namely, the ability to down load PPD
from www.openprinting.org is lost. The reason for this is that part of
the tool has been written using lauguage features which are new in
Python 2.5.
5. Reference Documents:
[1] SCP ome page, http://cyberelk.net/tim/software/system-config-printer
[2] CUPS home page: http://www.cups.org
[3] OpenPrinting: http://www.openprinting.org
[4] D-Bus Naming conventions,
http://dbus.freedesktop.org/doc/dbus-specification.html#naming-conventions
[5] hal-cups-utils wiki: https://fedorahosted.org/hal-cups-utils/