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