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/




Reply via email to