Template Version: @(#)sac_nextcase 1.66 04/17/08 SMI
This information is Copyright 2008 Sun Microsystems
1. Introduction
    1.1. Project/Component Working Name:
         presto phase II
    1.2. Name of Document Author/Supplier:
         Author:  Halton Huo
    1.3  Date of This Document:
        18 June, 2008
4. Technical Description
1. Introduction
   1.1. Project/Component Working Name: 
        
        Presto Phase II: OpenSolaris Print Manager

   1.2. Name of Document Author/Supplier:
                
        Ghee Teo        <ghee.teo at sun.com>
        Halton Huo      <halton.huo at sun.com>
        Evan Yan        <evan.yan at sun.com>
        Norm Jacobs     <norm.jacobs at sun.com>

   1.3. Date of This Document:

        06/12/08
        
        1.3.1. Date this project was conceived:

                Phase 1 of this project (LSARC/2007/287) was integrated into 
                Nevada build 69 in June 2007. Phase 2 started then in July 2007.
                

   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:
                
                LSARC

        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:

                Software - New Solaris - 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:       Jeff.McMeekin at sun.com
        1.5.4. Interest List:           presto-discuss at opensolaris.org
                                        printing-discuss at opensolaris,org

2. Project Summary
   2.1. Project Description:

        This project is the desktop side of phase 2 of the OpenSolaris Project, 
        Presto: Automatic Printing Configuration. The overall goal of Presto is 
        to automatically discover and configure access to directly attached, 
        network attached, and remotely served printers [2]. Phase 1 of
        desktop side of Presto (LSARC/2007/287) covered the the work required to
        automatically detect and configure access for locally attached USB 
        printers. Print queues are be detected or created by user when plugged 
        in. A notification dialog is popped up when a printer is unplugged or 
        when error is encountered.

        This project  is to support the auto-discovery of network attached 
        printers from the desktop end. The OS level to auto-discover network 
        printers was implemented by PSARC/2007/499 which has been integrated 
        into Nevada build 77. The interface between the discovery services, be 
        it for USB or network device through SNMP, remains the same. Hence the 
        same desktop daemon, ospm-applet, can be notified of printer events be 
        it from USB port or on the network.

        Once a network printer is discovered, the ospm-applet noted that and
        proceeds to create the print queue automatically. The print queue 
        created can then be modified using the OpenSolaris Print Manager. This 
        is necessary as the automated fuzzy lookup of the printer driver's name
        is not always accurate.

        The Print Manager not only allows the user to modify the print queue's
        settings, it also allow the user to manage his print queues, jobs and 
        organizing print queues into logical groups.

        The reasons for such an elaboration of functionalities is to allow us 
        to partially or completely replace a couple of printing tools which are
        currently made available on the JDS Desktop menu. The two tools are:
        (1) gnome-printinfo(1), a queue and job monitoring tool which wrapped
            around lpstat(1). Highly inefficient and unmaintained.
        (2) printmgr(1M), a JAVA based GUI for creating print queues. The 
            recommended tool to create print queues for network printer, 
            attached printer and also creating access to remote print server.
            It even supports NIS/LDAP database of printer setup.

        The Print Manager provides a complete replacement for
        gnome-printinfo(1) and supports only file level printer database, 
        printers.conf(4). Hence, it only provides partial functionalities of 
        printmgr(1M). The primary lack in support in between that of
        printmgr(1M) and OpenSolaris Print Manager is that the former does not
        support printer management under NIS/LDAP. However, the project team
        perceive that printers.conf(4) level of support is sufficient in an 
        unmanaged network environment. So the plan of record is to remove the
        above two tools from the desktop menu and replace them with the
        OpenSolaris Print Manager. 
        
        printmgr(1M) will continue to be available through command line. 
        gnome-printinfo(1) will be obsoleted and removed in a future ARC case.
            

   2.2. Risks and Assumptions:

        No risk is perceived.   


4. Technical Description:
    4.1. Details:

        The work done in this project can be divided into:
        - Extending the ospm-applet from phase 1 to handle network printers
        - Extending the ospm-preferences to allow new preferences introduced
          in phase 2 to be configured, notably that for network printers.
        - Print Manager which is integrated with the auto-detected and auto-
          discovered printers.

        Extensions to ospm-applet
        Ospm-applet is the daemon that is launched when user logs into the GNOME
        desktop. It sits and waits for HAL printer events. It responds
        accordingly when either a local USB or network printer is added or 
        removed through the DBUS message sent from hald.

        hald is the privileged process that handles detection/discovery of 
        printers, it stores the printer's data in the HAL device tree from 
        which ospm-applet read from regardless of local USB and network printer.
        However, ospm-applet does handle creation of local printer and network
        printer queues slightly differently. For network printer, queues will be
        added automatically. Whereas for local printer, the user can configure
        whether to be prompted or not. In both cases, ospm-applet will send a 
        DBUS message when a printer is added, "PrinterAdded", this is handled 
        by the Print Manager. 

        Extensions to ospm-preferences
        The capplet or preferences dialog is now extended into 3 tabs.
        Tab 1: Print Manager
        It allows the configuration of 3 things.

        Notification: It handles how the printer icon is managed in the 
        notification area.

        Unavailable Printers: how the print manager should depict off line 
        printers.

        Refresh rate for Queue View and Job View: it allows users to specify 
        how frequently the queue view and job view are to be refreshed.

        Tab 2: Local Printers
        contains the options which were in Phase 1.
        
        Tab 3: Network Printers
        It allows configuration of how network printers be being handled in the
        print manager.

        Print Manager
        The Print Manager integrates with the rest of Presto and its role
        within the Presto Architecture can be seen in section 3 of [1].
        The relationship of the Print Manager and the user Add Queue daemon
        (ospm-applet) can be described as such:

        Local USB Printer:
        - the OpenSolaris kernel notices the Device HotPlug event
        - the kernel sends out a sysevent that devfsadmd(1M) is listening for
        - devfsadmd(1M) notices the Printer Add or Remove sysevent, it notifies
          hald (HAL daemon) 
        - hald uses an external probe program to interrogate the printer and 
          populate the HAL device tree with all the relevant data it can get
          hald sends out a Device Added or Removed DBUS signal 
        - ospm-applet, which is a user's session daemon, is waiting and 
          responding to these signals. Based on the unique udi (Unique Device 
          Identifier) it received from hald, it looks up the rest of the data 
          from the Hal device tree.
        - Ospm-applet then displays fully populated Add Queue Dialog for the 
          user to add the queue, the displaying of this dialog is configurable.
          If it is turned off, the queue will be automatically added.
        - Once the queue is added, a notification bubble is shown on the 
          notification area of the panel
        Once the above steps are completed, the printer is ready to be used.

        Network Printer (via SNMP):
        - Enable network printer discovery service, 
          svc:/network/device-discovery/printers:snmp
        - The hald network printer add-on broadcast a SNMP GET
        - Network printer which is SNMP capable would then respond to it
        - The SNMP agent then populates the HAL Device Tree with the network 
          printer data.
        - hald detected changes in the HAL device tree and deduces that these 
          are printers, it sends out the "printerAdded" DBUS signal to 
          ospm-applet.
        - ospm-applet adds print queues for these printers in the background 
          until these are all done.
        - ospm-applet pop-ups a generic message as a notification bubble 
          notifying the user that network print queues have been added. 
        - ospm-applet also sends out a DBUS message, "printerAdded" to the 
          print manager, ospm-pm.
        - If the Print Manager is running at the time, it will refresh its view
          immediately and hence shows the newly added queues. Otherwise, these
          messages are ignored.


    
    4.4. Out of Scope:
    
        Obsoletion and removal of gnome-printinfo(1) which should be handled
        by a separate ARC case.

        While phase 2 of the project has pretty much implemented the key
        elements of Presto for both local and network printers and integrated
        with the OpenSolaris Print Manager. The limitation is that this only
        for OpenSolairs LP Print System, it doesn't handle CUPS. Since CUPS
        queues and LP queues are not compatible to be used by the Print Manager.
        There is no sharing of these queues data. While it is quite feasible to
        create a CUPS implementation of for the Print Manager, this may not be
        the route that the project team sees the road map.There are much work
        and momentum on CUPS in the Open Source communities, it would be more
        effective if we can make use and contribute to that for OpenSolairs CUPS
        print system.

        Other important aspect such as handling of Windows printers, integration
        of printer groups into the GTK+ print dialog are all feasible and 
        important to improve the user's experience on OpenSolaris.
        

    4.5. Interfaces:

        Interfaces inherited from phase 1 of the project (LSARC/2007/287)

    ___________________________________________________________________________
    |                           Interfaces Exported                           |
    ___________________________________________________________________________
    | Interface Name        | Classification  | Comment                       |
    ___________________________________________________________________________
    | /usr/lib/ospm         | Project Private | Project private directory     |
    ---------------------------------------------------------------------------
    | /usr/lib/ospm\        | Volatile        | applet handling HAL events    |
    |         /ospm-applet  |                 | through DBUS                  |
    ---------------------------------------------------------------------------
    | /usr/lib/ospm\        | Project Private | RBAC program to create,       |
    |      /lp-queue-helper |                 | enable, disable print queue.  |
    |                       |                 | Invokes a subset of lpadmin   |
    ---------------------------------------------------------------------------
    | /usr/lib/ospm\        | Project Private | script to extract serial      |
    |    lp-queue-exists-by-serial.sh         | number associated with the    |
    |                       |                 | plugged in printer.           |
    ---------------------------------------------------------------------------
    | /usr/bin\             | Volatile        | GUI dialog to change          |
    |    /ospm-preferences  |                 | preferences, internally       |
    |                       |                 | represented by a number of    |
    |                       |                 | gconf keys.                   |
    ---------------------------------------------------------------------------
    | /usr/lib/ospm\        | Project Private | Shared library used by applet |
    |   /libospm-prefs.so.0.0.0               | and capplet                   |
    ---------------------------------------------------------------------------
    | /usr/lib/ospm\        | Project Private | Shared library used by applet |
    |   /libospm-utils.so.0.0.0               | and capplet                   |
    ---------------------------------------------------------------------------
    | SUNWprint-monitor     | Uncommitted     | Package name containing the   |
    |                       |                 | project binaries.             |
    ---------------------------------------------------------------------------
    | SUNWprint-monitor-root| Uncommitted     | Package that contains project |
    |                       |                 | configuration data.           |
    ---------------------------------------------------------------------------

    This project (Phase 2) exports the following new interfaces:
    ___________________________________________________________________________
    |                           Interfaces Exported                           |
    |-------------------------------------------------------------------------|
    | Interface Name        | Classification  | Comment                       |
    |-----------------------|-----------------|-------------------------------|
    |   /usr/lib/ospm-pm    |   Volatile      | Print Manager GUI             |
    |-----------------------|-----------------|-------------------------------|
    |org.opensolaris.ospm.\ |                 |                               |
    |       applet          |                 |                               | 
    |   Printeradded        | Project Private | DBUS signal between           | 
    |                       |                   | ospm-applet and ospm-p      |
    |-----------------------|-----------------|-------------------------------|
    | /etc/gconf/schemas/   | Volatile        | GCONF keys schemas that define|
    | ospm.schema           |                 | the preferences for the tools |
    |-----------------------|-----------------|-------------------------------|
    | $HOME/                |                 | XML file that stores the data |
    |.ospm-printer-groups.xml | Volatile      | for printer groups. Stability |
    |                       |                 | is Volatile as the the format |
    |                       |                 | may change in future          |
    |                       |                 | development.                  | 
    |-----------------------|-----------------|-------------------------------|



    Interfaces imported (inherited) from phase 1 of the project (LSARC/2007/287)
    ___________________________________________________________________________
    |                           Interfaces Imported                           |
    ___________________________________________________________________________
    | Interface Name        | Classification  | Comment                       |
    ___________________________________________________________________________
    | lpadmin(1M)           | Obsolete        | Obsoleted by PSARC/1993/348,  |
    |                       |                 | lpadmin(1M) was changed to    |
    |                       |                 | obsolete because it was       |
    |                       |                 | planned to be replaced.       |
    |                       |                 | However, thing has changed    |
    |                       |                 | since, it remains the single  |
    |                       |                 | command to create print queues|
    |                       |                 | on Solaris. It is likely to   |
    |                       |                 | stay around for a long time to|
    |                       |                 | come.                         |
    ---------------------------------------------------------------------------
    | Printers(4)           | Committed       | PSARC/1994/162, This file     |
    |                       |                 | needs to be updated for the   |
    |                       |                 | user to reflect default       |
    |                       |                 | printer and printers of       |
    |                       |                 | interest.                     |
    ---------------------------------------------------------------------------
    | pfexec(1)             | Committed       | PSARC/2002/188, used to invoke|
    |                       |                 | lp-queue-helper with RBAC.    |
    ---------------------------------------------------------------------------
    | libpapi               | Contracted      | LSARC/2001/259, Already has a |
    |                       | Project Private | contract with Printing group  |
    |                       |                 | as part of LSARC/2006/462 [2] |
    ---------------------------------------------------------------------------
    | /usr/lib/libdbus-1.so | Volatile        | LSARC 2006/368                |
    ---------------------------------------------------------------------------
    | /usr/lib\             | Volatile        | LSARC/2006/368                |
    |   /libdbus-glib-1.so  |                 |                               |
    ---------------------------------------------------------------------------
    | libnotify.so          | Volatile        | LSARC 2007/137                |
    ___________________________________________________________________________


    New interfaces imported in this project.

    ___________________________________________________________________________
    |                           Interfaces Imported                           |
    ___________________________________________________________________________
    | Interface Name        | Classification  | Comment                       |
    ___________________________________________________________________________
    | libxml.so             | Standard        | PSARC 2008/032                |
    ___________________________________________________________________________
    
    4.6. Doc Impact:
        
        One new man page ospm-pm(1) will be provided for this project.
        ospm-preferences(1) will be updated to reflect the updated features.

    
    4.7. Admin/Config Impact:

        None.
    
    4.8. HA Impact:

        N/A
    
    4.9. I18N/L10N Impact:

        Yes. G11N has been contacted for evaluation for this project.
        Most of the L10N from phase 1 of this project can be re-used, though
        there are new G10N and L10N required for ospm-preferences(1) and
        ospm-pm(1). 
    
    4.10. Packaging & Delivery:

        No new package is delivered. The two existing packages:
        - SUNWprint-monitor
        - SUNWprint-monitor-root
        will be used to package the new feature.

    
    4.11. Security Impact:

        No new security related issue is raised in this phase.
        All security related issues were discussed and included in phase 1
        of the project as in LSARC/2007/287.

    
    4.12. Dependencies:

        No known pending dependency.


5. Reference Documents:

        
        [1] "Presto - Printing Made easy", Ghee Teo, OpenSolaris Developer
            Conference, Prague, June 24-27, 2008.
            http://www.opensolaris.org/os/project/presto/Documents/osdevpaper
        [2] Presto OpenSolaris poject,  
            http://www.opensolaris.org/os/project/presto/

6. Resources and Schedule:
   6.1. Projected Availability:
        
        Planned integration data: August 2008, Nevada build 97,

   6.5. ARC review type:
                
        FastTrack
                
   6.6. ARC Exposure:

        Open.

        This project is one of the OpenSolaris project, Presto [2].


6. Resources and Schedule
    6.4. Steering Committee requested information
        6.4.1. Consolidation C-team Name:
                Desktop
    6.5. ARC review type: FastTrack
    6.6. ARC Exposure: open


Reply via email to