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/