Page name: UC20FSD.GUI
Updated 24-Sep-2008 11:36:29 PDT by Chris Kasso

Update Center 2.0 Toolkit Design Specifications

GUI Applications Functional Specification

1. Project Description

This project is tasked with delivering two GUI applications:

Install Image Manager GUI Application: A thick client application used to apply updates, install add-on components and to remove installed components within installations on a user's local system. It can also creates new local installation for these components.

Notification Applet: A small-scale application represented by an icon in the task tray or notification area of a user's desktop. Monitors repositories for applicable updates, notifies user of available updates and enables user to directly apply updates and launch the main GUI application. The notification applet is addressed in a separate Desktop Notification design specification.

The UC GUI applications share a common, per user configuration store to maintain user preferences associated with the GUI applications.

Desktop integration of the UC GUI applications consists of the following features:

Although the open source wxPython and wxWidgets GUI framework runtimes upon which the UC GUI applications are built and execute are technically external to the UC GUI applications, the UC GUI project is tasked with defining how these external dependencies are built and packaged in support of the UC GUI applications.

uc2-gui-component-overview.png

1.1 Naming of the GUI and Notification Applet Tooling

Although the project explored associating a unique name to the Update Center GUI, due to the Legal and branding hurdles involved in using a catchy name ("Puffin" was the suggested name), the project team reverted to referring to the GUI as the "Update Tool". As distributions represent Start menu items, they are free to preface the name with their own distribution identifier. e.g. "GlassFish Update Tool".

In the future, enhancements may be implemented to enable distributions to brand the GUI, but for the time being, the GUI represents itself as the "Update Tool".

1.2 External Dependencies

Dependencies of the GUI applications that are external to this project include:
DependenciesDescription
Product DistributionsThe IPS client and, in some cases, the UC GUI applications are included in installable product distributions. When a distribution assembler chooses to not include the UC GUI applications in his product distribution, the GUI applications can be installed later on using the existing "pkg install" command of the IPS client as long as the GUI applications and their dependencies are made available within package repositories that are associated with the image of interest.
IPS User ImagesThe UC GUI applications enable users to manage the content of IPS user images.
IPS Client Python ModulesMain means for GUI applications to manage local installed image and interact with network-based IPS repositories.
PythonPython is required by both the IPS client and wxPython-based UC GUI applications.
Desktop EnvironmentsStart/Applications menu presence for starting the main GUI and task tray/notification area to represent the notification application's icon and menus.
Sun Product Registration ServicesLocal APIs and remote sun.com hosted services to enable user and product registration.
Community and Product InformationTo be displayed in the main GUI in order to provide news and cross-promote other software of interest.

1.1 Requirements Mapping

The following requirements from the Update Center 2.0 are within scope of the GUI application project:

RequirementDescriptionGUI RelationshipTP2 Priority
Overall-1.1Provide a multi-OS platform packaging approach to be used by SWI componentInitially limited to platforms supported by GF V3 TP2.P1
Overall-2.1Ability to install multiple, completely distinct installation images on the same OS instanceAlthough the UC GUI won't be the primary tool for installing new images, it will be one of the primary means of managing updates, additions and removals associated with an installed image.P1
Overall-2.2Ability to install and manage packages as non-OS system administratorsThe UC GUIs will not assume that the user needs root or system admin privilegesP1, but the GUI may not have clean checks for write privileges to selected images.
Overall-2.3Ability to install and manage packages as OS system administrators.See 2.2 above.See 2.2 above.
Overall-3.1Packaging, repository and update technology must be open source. P1
CL-1.2Collect and report package usage informationAbility to display via GUI download numbers for packagesP2
CL-1.4Capability to present banner adsDetails TBD, but related to cross-promotion and information sharing for communities and product usersP2
CE-1.2Specify groupings of related packagesCategories feature.P1
CE-2.1Specify promotions and news for delivery through update client GUI toolingDetails TBD, but related to cross-promotion and information sharing for communities and product usersP2
PD-1.2Sufficient support for Web/J2EE based applicationsPackage install-time configuration can be triggered via UC GUIP1
RM-1.2Combine selected packages in arbitrary groupingsCategories featureP1
RM-1.5Include up to at least 1,000 packages in each repositoryGUI design should scale to handle at least hundreds of packages.P2, GUI will only need to handle scores of add-ons.
RM-2.1Ensure package management clients can validate the identity of repositoriesSigned packages from known authorities along with certificate registration for each authority.P2 (an emerging feature of IPS)
DA-1.1Minimize distribution size of bootstrap install imageMinimize size of the GUI apps and their dependenciesP1
DA-1.2Minimize external dependencies of bootstrap install imageAll external dependencies must be bundled in the solution. Apart from requiring Java to be present, the solution cannot require any other significant external dependencies to be satisfied separately by the user.P1
ADM-1.1Minimize UIs required for package management functions.Only one GUI application and a small notification applet are being delivered.P1
ADM-1.2Standalone package management tool must be visible through the desktop applications menusUC GUI package must be capable of adding an appropriate Start/Applications menu itemP2, depends on degree to which GFv3 TP2 distro will be registered via Start/Applications menu.
ADM-1.4Interactive response times P1
ADM-1.5High quality error messages P2
ADM-1.8Sufficient busy/progress feedback. P2
ADM-1.9Ease of use: CLI and GUI should be attractive, efficient, and easy to use. P1 as it applies to the overall layout.
ADM-1.10Desktop Integration: Start MenuSee ADM-1.2See ADM-1.2
ADM-3.1Install a set or subset of interrelated packages making up a distribution, from local mediaNot supported initially. Depends on IPS' support for a marshalled, installable form of packages.P2
ADM-3.5Minimize external dependencies for bootstrap install image.See DA-1.2See DA-1.2
ADM-4.2Automatic desktop notification of updates and new componentsTask tray and notification area icon and update GUI launching supportP1 at least for Windows.
ADM-4.4Become aware of and obtain updates and new packages from multiple repositoriesYes, but timing of this feature depends on IPS' ability to support multiple repositories per install image.P2, since IPS' composite repository support is evolving.
ADM-4.4.1View summary of changes in a particular version of a package such that you can make an informed decision about whether you'd like to apply it.Yes, depends on change history being available in a standard way with each package.P2, but will strive to demonstrate approach to supporting this feature.
ADM-4.5Easily view groupings of related packagesCategories featureP1
ADM-4.8Send RSS feeds to update/install clientsApproach is TBD.P2
ADM-4.9Distinguish types of updates and provide appropriate notifications via desktop tray iconHighlights security-related updatesP1, as long as package level tagging approach is feasible.
ADM-4.10Elegant desktop notification for multi-installOnly one notification icon will be displayed for UC managed imagesP1
ADM-5.1Search for availability of packages by name P2, but we expect to integrate OpenSolaris GUI's approach to basic searching of the package name and description fields as soon as it becomes available.
ADM-6.1Trigger installation from "advertised" services (e.g. icons which install new applications)TBDP2
ADM-6.5Remove (Undo) an update applied to a packageDepends on IPS' capability across platformsP2
ADM-6.6Remove (Undo) an update applied to a package, with limited or no access to mediaDepends on IPS' capability across platformsP2
ADM-6.7Verify authenticity or source of new and updated packagesVia IPS' package signing featureP2
ADM-8.1Side-by-side installations* Enable user to run UC GUI once and change between installed images.

*Update notification applet will monitor and report on updates for multiple images of interest.
P1
ADM-10.1Easily determine installations available to an OS instanceSeveral tools will help users keep track of installed images:
1) Install applications should register a newly installed image with the UC GUI's configuration

2) A user should be able to register installed images via the GUI

3) Eventually, a scan for images feature will be added to the GUI.
P2
ADM-10.3Locate package(s) which contains specific component(s) or file(s)GUI's search feature is constrained by the underlying IPS search capability.P2
ADM-11.3Manually remove discrete packages and be notified of dependencies prior to removal P1
ADM-11.4List content and metadata of a package including install location and change log P1 with partial coverage of metadata for TP2
ADM-11.5Verify correctness/integrity of a package P2: IPS already supports a "verify" option on the pkg CLI that verifies the installed representation of the package on a file-by-file basis. We need to expose this feature through the GUI.

1.1.1 Update Center 1.0 Use Cases

Virtually all of the UC 1.0 Use Cases must also be supported by the UC 2.0 toolkit.

1.1.2 Section 508 Accessibility Requirements

Section 508 compliance is a requirement of the UC GUI applications. See wxWidgets Accessibility Tips.

1.2 General Design Considerations

Native Look and Feel Where Feasible

An overall goal of the GUI applications is that they embody the native desktop look and feel and theming aspects wherever feasible. It is acknowledged that due to the limitations inherent in cross-platform GUI toolkits, the resulting GUI applications will not be completely conformant in this respect.

Apply Tool to Any IPS-based Image

Although some of the package and category information required by the UC GUI may not be present in all packages and package repositories, it is expected that the UC GUI could be used to manage any IPS-based install image. For example, after a user uses the IPS CLI to create and populate an install image, the user could use the UC GUI to manage the install image and interact with remote repositories. The UC GUI needs to be resilient when it cannot access metadata that it would normally display and leverage.

Note: The current implementation restricts itself to operating on 'User' images (See IPS terminology) only mostly due to performance concerns with large images and repositories.

Ability to Change GUI Icons and Logos

Where projects that incorporate the UC 2.0 toolkit need to provide their own product or project logos, the GUI and any associated desktop representation of the GUI and notification applet should be modifiable with project- and product-specific logos. Examples include:

Leveraging UC 1.x and NetBeans Update Tooling User Interfaces

Since the target audience of the UC 2.0 GUI applications is generally the same as the target audience of the UC 1.x GUI application, the UC 2.0 project intends to leverage the UI design direction established in UC 1.x. Additionally, since the NetBeans 6.0 Plug-in Manager addresses a similar audience to UC 2.0, this project will also leverage UI design elements represented in the NetBeans Plug-in Manager.

In several cases the UC 2.0 project's need to align with the UC 1.x and NetBeans Plug-in Manager UI design approaches will cause the UC 2.0 team to deviate from the UI design being implemented in the OpenSolaris IPS-oriented GUI applications.

Alignment with and Reuse of OpenSolaris IPS GUI Design and Implementation

Since the OpenSolaris project is delivering a set of IPS-based package management GUI tools at about the same time as the UC 2.0 project, the two projects are mutually interested in sharing and reusing as much of a common UI design and implementation as feasible. It is acknowledged that since the audiences of interest and the use cases in which the two GUIs will be used varies, there will be differences in the UI design of the tools. The OpenSolaris project is delivering the following GUI applications:

The UC 2.0 project is monitoring the design and development progress of these applications and will leverage and align where appropriate.

Python-based IPS Client Infrastructure

The Python implementation language of the IPS client infrastructure has led the UC 2.0 GUI project to use a Python-based GUI framework in order to ease the manner in which the GUI application can interact with the IPS environment. When either a sufficient Java interface to IPS client functions and/or a Java port of the IPS client becomes available, the UC project will consider delivering a Java-based UC GUI such that predominantly Java or portable product distributions could avoid embedding platform-specific binaries of the Python, wxPython and wxWidgets runtimes.

2. Data Model

2.1 Major Entities

EntityDescriptionConstraints
DistributionA collection of related packages and package repositories that make up a large scale binary offering. Examples of distributions include:
* Binary downloads from open source projects that have package repositories through which add-ons and updates are distributed.
* Binary products from commercial vendors that have package repositories through which add-ons and updates are distributed.
* Contains one or more Components (Packages and Package Groups)
* Associates with one or more Package Repositories
* Available in an installable from scratch form
PackageSet of files that deliver a discrete set of functionality. Packages are a fundamental unit of management within package repositories. (A Package Group or Virtual Package is an emerging feature of IPS through which a package maintainer will be able to group related packages together. The UC 2.0 projects is not depending on the Package Group feature. See the Categories entity for the means by which groups of packages will be presented in the UC 2.0 GUI.) * Contains installable files and metadata
* Associated with one or more repositories
* Associated with zero or more categories
ImageAn installed set of packages associated with a distribution and a one or more package repositories. The set of installed packages are located under a common top level directory in a filesystem. The UC 2.0 project is primarily concerned with the IPS' "user images", images that are not associated with or linked to any other images.* Contains one or more packages
* Contains list of installed packages and their files
* Contains list of pointers to the Repositories associated with Installed Image
Component"Component" is another name for a package or package group.

Unlike the OS level administrators' interest in working with relatively low-level package management tools such as Synaptic, the user base of applications using the Update Center Toolkit will likely be more concerned with management of features. For example, in Synaptic all of the items managed are presented as packages with the technical package name used as the primary means of identifying each package. At the other end of the spectrum, the Add/Remove Applications tools of both Windows and Gnome desktops address management of coarse grain units that provide limited visibility for the significant components of each application.

In Update Center 2.0 an emphasis will be placed on avoiding the use of the term "package" in favor of the less technical term "component". In many cases package groups will be used to represent a collection of related packages. Components will be primarily displayed and identified through the use of a relatively short title and, when necessary, represented more specifically through the underlying package or package group name.
See Package.
RepositoryA network-accessible facility allowing for ease of publishing, managing and distributing packages and updates to packages.* Contains one or more Packages
* May contain repository-wide metadata
Category"Category" is being used to represent groupings of components. Whereas component titles and the underlying package and package group names are expected to be managed by package maintainers, creation and management of categories will be managed by owners of distributions that maintain repositories. It is the distribution owners that best understand how a series of components should be presented to the users of the distributions.

The two-level category->component approach is already in used by the NetBeans 6.0's Plug-in Manager and the GlassFish V2 Update Center 1.0 applications. In NetBeans 6.0, even though NetBeans modules are used as the underlying packaging mechanism, the modules and groups of modules are presented as a series of "plug-ins". These plug-ins presented in the context of categories. GlassFish V2 Update Center 1.0 which is also based on NetBeans modules, represents manageable units as "software" that is arranged in a series of groups.
* Is referenced by one or more Components (Packages and Package Groups)
* Contains metadata
GUI Application ConfigurationA per user store associated with UC 2.x GUI and Update Notification applications.* Contains user's GUI application preferences
* Contains list of Installed Images of interest
* Contains list of Repositories of interest

uc-gui-data-model.png

3. User Interface

This section addresses the visual design of the two UC GUI applications: The implementation design of these applications is addressed later in this document.

3.1 Notification Applet

See the Notification Applet Specification

3.2 Update Center GUI

3.2.1 Major Functions Supported

FunctionDescription
Listing and Installation of Available UpdatesFor those components that are currently installed, provide the user with a list of available updates, whether they are security related and change history information and enable the user to easily apply the updates.
Listing and Installation of Additional ComponentsWithin the scope of the repositories that are associated with an installed image, list the additional components that are available and provide the means to easily install these components. Provide a basic search capability to help find components of interest available in repositories.
Listing and Removal of Installed ComponentsEnables users to easily determine the components that are installed and to remove components of interest.
View of Multiple ImagesAbility to select which installed image the user wants to manage.

3.2.1.1 Additional Functions:

3.2.1.2 Important Functions Not Currently Addressed

The following features are considered important to the overall success of the UC 2.0 toolkit, but are not yet addressed in the UI design. This design specification will be updated to address these features once the implementation of other features for GF V3 TP2 is addressed.

FunctionDescription
Composite View of Multiple RepositoriesThe underlying IPS infrastructure does not yet contain solid support for associating multiple repositories with a single install image. As this support matures, the UC 2.0 GUI will be expected to provide composite views of multiple repositories in the component listing views.
Listing and Installation of Other SoftwareProvides users with a view of software components and distributions that fall outside the scope of repositories associated with currently installed images. For example, the UC GUI can be used to promote the availability of MySQL server and associated tools even if those components are not currently made available within the repositories associated with currently installed images.
User and Product RegistrationBeyond the extent to which the UC 1.x GUI supports registration of the distribution being managed, the UC 2. toolkit is expected to support the ability to register add-on components applied to an install image.
Entitled Access to UpdatesImplementation of controlled access to updates may be relevant for commercial software distributions that supply updates as part of charged for services. The underlying IPS infrastructure enhancements and the impact on the GUI design need to be addressed in this regard.

3.2.1.3 Principles of Operation

3.2.2 Update Center UI Design

3.2.2.1 Overall Layout

uc2-layout.png

Also see the color scheme for the left panel and list views.

AreaDescription
Menu BarStandard layout menu bar. See details below.
Tool BarContent is TBD based on rest of GUI design. Very interested in realizing a toolbar as provides a visually interesting component of the overall UI.
Left PaneDefines the overall functions and content of current interest. Drives which structure is to be displayed in the right pane.

Installed Images: Lists the images that the user wants to manage. Selecting a specific image sets the GUI in the context of managing updates, additions and removal operations against that image.

Browse Other Software: A placeholder for cross-promotion of software that is positioned to be installed outside of any of the existing install images.

Distro/Component Art: A placeholder for any distribution- and/or component package-specific logos. When an install image is selected and no components are selected, the artwork of the distro that is associated with the installed image is displayed. When a component is selected and it has component artwork, then the component artwork will be displayed in this area. (Alternatively, component artwork could be displayed in a portion of the Description tab in the Information pane).
Right PaneMain content to be displayed. Content depends on selections in the left pane.
Status BarOverall information pertaining to the task at hand.

3.2.2.2 Context-specific Content: Install Image Management Functions

In support of install image management functions the context-specific right pane will contain a list of components.

uc2-layout-right-pane.png

AreaDescription
List InfoDepending on the currently viewed content type, contains summary information. See the view section below for details.
Component ListList of components.

Must be sortable based on the user clicking the column headers.

Must utilize alternating background shading.

Components in lists should always be preceded by either a component-specific icon or a default icon when a component-specific icon is not available.
Action ButtonsButtons to mark, unmark and operate on the marked components.
Tabbed Information PaneTab-based view of relevant information. Varies across views.

3.2.2.2.1 Icons

See the current set of icons(info).

Roles of Icons

RoleDescriptionCurrent Icon
GUI ApplicationThe icons used to represent the Update Tool application in various locations:
* Top left of window frame
* Start menus
* Task tray/dock
* About dialog
* Notification area

We need to deliver two forms of this icon:
1) Generic Update Tool icon for use when the tool is embedded in another product.
2) Update Tool icon for use when the tool is used outside the context of any one product.
update-tool.png
Menu ItemsSince we'll probably reuse the stock images that are available on most OS platforms, we don't currently anticipate adding new requirements here.NA
ToolbarWe will have a few toolbar entries that require icons. See the Toolbar section of this document for details.open.png

refresh.png

register.png
ButtonsButtons with stock images look good on Gnome, but on Windows and Mac OS X, the buttons don't have icons. We might decide to use custom images for button icons in the future, but currently we're sticking with stock images where they are available.NA
Generic Installed ImageEach installed image shown in the left pane of the GUI will have an icon associated with it. When a distro- or application-specific icon is not available, the generic installed image icon will be displayed.installed-image.png
ViewsEach main view of the GUI will have an icon. Views include:
* Available Add-ons
* Available Updates
* Installed Components
available-add-ons.png

available-updates.png

installed-components.png
Component AlertsIn the list view, the following alert icons will be required:
* Security Update
* Restart Required
* New (meaning new component or update since the tool was last started)
placeholder for security alert

uc1-restart-icon.png

placeholder for new icon (see starburst example in GFv2 UC 1.x GUI)
CategoriesWhen categories of components are displayed, they will need icons.
Browse Other SoftwareAs this feature is further defined, it may require icons.

3.2.2.3 Menus

The following menus will be implemented:

MenuDescription
FileFunctions of selecting and closing an installed image in the GUI.
EditTypical bulk functions such as Select All and editing user preferences.
ViewModifying what is displayed on the GUI.
ComponentComponent or package level operations applicable when one or more components are selected in the list view.
ToolsAncillary tools to support search and managing lists of images and repositories.
HelpHelp contents, Registration, Feedback and About functions.

General Menu Requirements:

Menu: File

Menu ItemDescriptionPriority
New ImageCreate new install image from scratch. Enable user to either enter the URL for a package repository or select one or more package repositories from a list of repositories. Upon creation, the image will be empty, selected as the active image in the GUI and the list of available add-ons from the repository will be displayed.Nice to have feature. Not required for TP2.
Open Image...Open the standard directory selection dialog to enable selection of a directory containing an install image. As a directory is selected, ensure that it contains an install image. Raise an error dialog if it does not.

If the image is not already listed in the "Installed Images" area of the left pane, add an entry for the image.

Load the image and repository information as necessary into the GUI. This image becomes the active image.

Display the available updates for the image. If no updates are available, display the installed components.
Required for TP2, but not for Milestone 2. Milestone 2 can depend on always loading the install image information from the location in which the GUI was started.
Scan for Images...Open the standard directory selection dialog to enable selection of directory under which the tool will scan for the presence of install images. The results will be presented in a dialog such that the user can select which image to open.

Once an existing image is selected, follow the behaviour of the Open Image function.
Nice to have feature. Not required for TP2.
horizontal divider
Close ImageThis option is active when an image is selected or active in the GUI. Selection of this option results in the removal of the image from the list in the left pane and removal from the list of the images of interest as stored in the user's GUI confiuguration.
Save Image As...Clone the image. Open the standard directory selection dialog to enable the user to create a new directory under which a copy of the currently active image will be copied.

Prompt the user as to whether the newly created image should be added to their list of images of interest.
Nice to have feature. Not required for TP2.
horizontal divider
Image Properties...Enables one to edit the properties for the installed image. For example, modify the list of repositories associated with the image. The set of information modified here would probably be limited by what can be changed within the image via IPS interfaces. Initially, the set of information to modify includes:
* Name and description of the Image (the name as displayed in the tree view)
* Repositories

This feature can also be accessed from the GUI when a user selects an installed image in the list of Installed Images. The right side of the GUI will display a read only list of image properties and an "Edit Properties..." button which when clicked will lead to the same edit image properties dialog.

horizontal divider
HistoryTo be defined.NA
QuitGracefully exit the application.Required for TP2 and Milestone 2.

Menu: Edit

Menu ItemDescriptionPriority
Mark AllWhen a list view is displayed, mark all items in the list.

This option is an alternative, menu-based means of accessing the same function as the "Mark/Unmark All" button at the bottom of a list.
Unmark AllWhen a list view is displayed, unmark all items in the list.

This option is an alternative, menu-based means of accessing the same function as the "Mark/Unmark All" button at the bottom of a list.
RefreshSame feature as the Refresh button at the bottom of a list view.
Preferences...Edit user's preferences for the operation of the GUI and notification applet.

Menu: View

Menu ItemDescriptionPriority
Show All VersionsEnabled for "Available Add-ons" and "Available Updates" views. Results in all available versions of each package being displayed in the component list. Enables users in advanced scenarios to browse older versions and select them for installation. This menu item should be greyed out/disabled when these two views are not active.

In "Available Updates", the currently installed version and older than currently installed versions will not be displayed.
Delivered for 2.0 production quality release.

The following View menu items will be added in the future. These are standard View menu items that most GUIs provide, but are relatively low priority at the moment.

uc2-menu-view.png

Additional Notes and Requirements:e

Menu: Component

Menu: Tools -> Search

Menu: Tools -> Manage Lists

Menu: Help

3.2.2.4 Toolbar

The content of the toolbar will be more formally specified once the rest of the GUI design has been fleshed out. Only generally applicable functions will be represented on the tool bar. The toolbar is expected to serve two primary functions:
  1. Provide readily accessible shortcuts to frequently used functions that are also available in the menus.
  2. Provide some additional visual pizazz to the overall GUI.

Toolbar ButtonDescription
OpenOpen an install image by displaying its contents in the GUI. Same operation as the File -> Open... menu.
RefreshBased on the selected install image, reload component information from the local installation and remote repositories.
RegisterAn optional button that would launch a user and product registration dialog. Whether a toolbar entry for registration makes sense will be determined by the user interface design of the overall registration feature.

3.2.2.5 Left Pane

Left Pane: Installed Images

The list of installed images of interest to the user is displayed in the upper portion of the left pane. The main purpose of this list is to enable a user to easily switch between installed images of interest and to view available updates, installed components and available add-ons pertaining to each installed image.

uc2-installed-images.png

Operation:

Icons:

Selection:

Tree vs Accordion:

Left Pane: Browse Other Software

This subpane is currently a placeholder for a feature to enable users to browse for other software distributions that could be downloaded and installed as additional images on their local system. As a user clicks on the items in this subpane, the layout and content of the right pane may change dramatically as compared to the views associated with the management of a local installed image.

3.2.2.6 Start-up Behavior

Startup: First Time, Without Context

When the GUI is started for the first time and is started outside the context of an installed image, the GUI should provide welcome and getting started information in the right pane. This is information can initially take the form of HTML-based content that can accompany the GUI package. Later on, a URL could be used to display up-to-date welcome information when network access is present.

Startup: With Context

When the GUI is started from within the context of an installed image, the GUI should present the list of available updates if any updates are available. All updates must be marked for installation. When no updates are available, the list of installed components should be displayed.

Startup: From Notification Applet

The list of available updates must be displayed with all of the updates marked for installation.

3.2.2.7 Install Image Management Views

List Install Image Properties

This view is presented when the user clicks an install image in the left pane. The right pane should list all of the relevant install image properties and provide an "Edit Properties" button to launch the common Edit Install Image Properties dialog that can also be launched from the File -> Image Properties...

List and Apply Available Updates

This view is presented under the following circumstances:
  1. A user selects the "Updates" content type under the image of interest in the left pane.
  2. An image is made the active image and the application determines that updates are available for the image.
  3. The GUI is launched via the notification applet GUI.

Note that a category-based view of the available updates is not required.

Content and Behaviour

General:

Component Columns: Further information can be viewed by selecting the component and the tab of interest. Here are the list of columns to display:

ColumnDescriptionAttributes
Mark boxBox to enable marking the component
ComponentTitle of the component (not the package name)Left-justified
!Alert icons:
* Security fix included
* Restart required

See explanation below.
PublishedDate update was made availableLeft-justified
3 character month abbreviation, day, full year
New VersionLatest available version of the componentLeft-justified
Installed VersionVersion of the already installed componentLeft-justified
DownloadDownload size of the updated portion of the components.Right-justified with space between number and either "MB" or "KB".
If < 1 MB, show size in KB. If >= 1 MB, show size in MB
Precision: 1/10th.
SourceRepresents an icon of the repository from which the update is being made available. No icon would be listed when a repository does not have an icon. For example, a Sun official and supported repository may be represented by a Sun logo whereas an update made available from another repository may have a different icon. A tooltip providing the name of the repository would be useful. The Description tab at the bottom of the right pane will provide more details on the repository source.
Package NameGiven the presence of the Component title, package name may not be required in the list. The Package Name should be available in the Description tab. Perhaps it should be an optionally listed column. See the View menu for additional notes about optional columns in lists.

Alert Icons:

List Info Area:

Buttons:

Lower Tabbed Information Pane: Upon selection of a component, the lower information pane will contain the following tabs:

The restart required icon and column approach from the UC 1.x GUI can be reused to indicate that a component or container restart is required upon applying an update or installing a new components:

uc1-restart-icon.png

Selection and Marking:

List and Remove Installed Components

This view is presented under the following circumstances:
  1. When a user selects the "Installed Components" content type under the image of interest in the left pane.
  2. An image is made the active image and the application determines that no updates are available for the image.

Content and Behaviour

Categories Pane: The Categories subpane is displayed to the left of the list of installed components.

List Area:

Component Columns: Only minimal component information is contained in each row of the component list. Further information can be viewed by selecting the component and the tab of interest. Here are the list of columns to display:

ColumnDescriptionAttributes
Mark boxBox to enable marking the component
ComponentTitle of the component (not the package name)Left-justified
VersionVersion of the already installed componentLeft-justified
Package NamePackage name is thought to be more relevant for already installed components, but if space is too tight this column could be excluded by default.

List Info Area:

Buttons:

Lower Tabbed Information Pane: Upon selection of a component, the lower information pane will contain the following tabs:

Selection and Marking:

List and Install Available Add-ons

This view is presented when a user selects the "Available Add-ons" content type under the image of interest in the left pane. It enables the user to browse and search for components in the repositories associated with the install image.

Content and Behaviour

Search Text Entry: A search text entry field must be displayed above the list of available add-ons.

Categories Pane: The Categories subpane is displayed to the left of the list of available add-ons.

List Area:

Component Columns: Only minimal component information is contained in each row of the component list. Further information can be viewed by selecting the component and the tab of interest. Here are the list of columns to display:

ColumnDescriptionAttributes
Mark boxBox to enable marking the component
ComponentTitle of the component (not the package name)Left-justified
!Alert icon: Restart required

See explanation below.
PublishedDate update was made availableLeft-justified
3 character month abbreviation, day, full year
VersionLatest available version of the componentLeft-justified
DownloadDownload size of the updated portion of the component.Right-justified with space between number and either "MB" or "KB".
If < 1 MB, show size in KB. If >= 1 MB, show size in MB
Precision: 1/10th.
PopularityAre in which to represent star ratings
SourceRepresents an icon of the repository from which the update is being made available. No icon would be listed when a repository does not have an icon. For example, a Sun official and supported repository may be represented by a Sun logo whereas an update made available from another repository may have a different icon. A tooltip providing the name of the repository would be useful. The Description tab at the bottom of the right pane will provide more details on the repository source.
Package NameGiven the presence of the Component title, package name may not be required in the list. The Package Name should be available in the Description tab. Perhaps it should be an optionally listed column. See the View menu for additional notes about optional columns in lists.

Alert Icons:

List Info Area:

Buttons:

Tabbed Information Pane: Upon selection of a component, the lower information pane will contain the following tabs:

Selection and Marking:

3.2.2.8 Dialog Flows

Dialog Flow: Applying Updates

See the OpenSolaris Package Manager wireframes below for examples of the confirmation, downloading and installing dialogs.

Upon clicking of "Apply", display a confirmation dialog with the following summary information:

Show download progress as distinct from installation progress.

Once download is complete, installation should begin automatically.

Installation progress:

Upon completion of applying updates, check to determine if any of the updated components affect the currently executing update tool instance.

Dialog Flow: Removing Components

08_remove_confirm_dialog.png

09_removing_dialog.png

Dialog Flow: Installing Components

Upon clicking "Install", follow these steps:

See the OpenSolaris Package Manager mockup for an example.

See the OpenSolaris Package Manager mockup for an example.

See the OpenSolaris Package Manager mockup for an example.

Dialog Flow: Image Settings

Dialog Flow: Image Properties

"Image Properties" Dialog

image-settings.png

When an image is in focus, a user can access the Image Properties dialog by either:

The same Image Properties dialog should be reused albeit with the title "Create New Installation Image" when a user selects either "File -> New Image..." or the "New" toolbar icon.

When editing an existing image's properties, the "Image Directory" field will be read only because it doesn't make any sense to change the path once the image has been created.

"Repositories" List

Column NameDescription
NameAbbreviated name of the repository. Helps explain the role of the repository.

Since this name is listed in the "Source" column of the component list views, the name should be limited to 25 characters. (Note: this is the same value as the "Authority" setting on the "pkg image-create" command and "pkg set-authority" command).
URLURL of the repository associated with the authority.
ActiveCheckbox when marked indicates that the repository is tied to the image.
PreferredColumn of radio buttons enabling user to specify which of the repositories is the preferred.

Behavior notes:

The following button will appear at the bottom of the list:

Button NameDescription
Add...Launches an "Add Repository" dialog (see below). Active when zero or one repo item is selected. Ignores selected repo entry if one is selected.
Edit...Launches same dialog as Add Repository, but with current information prepopulated. Active only when a repo item is selected.
RemoveLaunches a confirmation dialog. Active only when a repo item is selected. Cannot be active when only one repository remains in the list regardless as to whether or not that remaining repo is selected or not.

"Add/Edit Repository" Dialog

Field NameDescription
NameAbbreviated name of the repository.

If any predefined repository entries are known the GUI (see pick list feature below), the GUI will provide a drop-down control with type-in support. Only predefined repository entries that are not already in the image's list should be displayed in the drop down. When the user selects a drop down item, the repository URL and description fields are automatically populated.
Description
Repository URL

Editing and Processing Rules:

Terminology:

Future Considerations (post August release):

Underlying Implementation:

Deferred Features:

4. Data Model Implementation Design

Data source include:

Data SourceDescription
IPS Interfaces* Package Information
* Repository Information
* Installed Image Information
Special Metadata PackagesMetadata managed within special packages such as a package containing a list of available software distributions and associated information. In some cases, a workaround until the IPS repository and package schema can be extended to more directly support the data needs.
GUI Application ConfigurationPer User GUI Application Configuration (".udpatetool" directory under user's directory).

4.2 Special Metadata Packages

4.3. GUI Application Configuration

The notification applet and the main GUI share some common configuration item. The main GUI deals with managing the interaction for getting all the applet configuration items since applet has a very minimum UI (context menus and info bubble). The applet only needs read only access to the common configuration data. The GUI and the installation process are the two places where write to common configuration is done. The applet typically re-reads the configuration information before each update scan.

The configuration items needed by the applet (and all shared by the main GUI for editing purpose) are:

The configuration information is kept in a platform specific user configuration directory.

The configuration file is an easily user editable INI style file called defaults.cfg. One or more lock files are kept in the same directory. The write lock file lists the process ID of any process that can modify the configuration.

6. Notification Applet Implementation Design

See the Notification Applet Specification

7. GUI Application Implementation Design

7.1 Implementation Design Overview

uc2-gui-impl.png

ComponentDescription
Start / Applications MenuVisibility of the Puffin Install Image Manager GUI to desktop users.
UC Notification AppletOwns monitoring and notification of updates for install images of interest. Manages the task tray/notification area icon.
updatetool Wrapper ScriptsOS-specific wrapper scripts to establish the proper runtime environment, accept supported options and arguments and execute the main program.
Update Tool GUI ApplicationThe main UC 2.0 GUI.
GUI XRC FileUse of XRC files did not pan out. We're using wxGlade for GUI Python source code generation.
GUI Shared ConfigurationPer user configuration shared between the notification applet and GUI application.
GUI Shared Python ModulesTo the extent necessary and appropriate, any common modules to be shared between the GUI and notification applet.
IPS Python ModulesPython level interfaces to support the main operations of the GUIs.
PythonSelf explanatory.
wxPythonPython-based GUI framework used by the GUI applications.
wxWidgetsUnderlying C++ based GUI toolkit that interfaces to the OS native GUI implementations.

7.2 Interfaces

Imported

InterfaceClassificationComments
IPS APIContracted Project PrivatePSARC/2008/190
Python 2.4.4Volatilehttp://python.org/
wxPython 2.8.8.0Volatilehttp://wxpython.org/
GNOME login startup interfaceVolatilehttp://standards.freedesktop.org/autostart-spec/autostart-spec-0.5.html
OS X login startup interfaceVolatilehttp://developer.apple.com/macosx/launchd.html
Windows login startup interfaceVolatile\Start Menu\Programs\Startup

Exported Interfaces

InterfaceClassificationComments
/bin/updatetoolCommittedUT executable location
/updatetool/bin/updatetoolCommittedUT executable location
updatetool (command name/CLI)CommittedSee [3][4]
updatetool exit codesCommitted
Updatetool preferencesCommitted PrivateSee [1]
Updatetool IPC ProtocolCommitted PrivateSee [2]
Updatetool log filesNot-an-interface
/updatetool/bin/updatetoolconfigCommittedUT-config exec location
updatetoolconfig (command name/CLI)CommittedSee [5]
updatetoolconfig exit codesCommittedSee [5]
updatetoolconfig outputNot-an-interface
[1] preferences.txt(info)
[2] protocol.txt(info)
[3] See section 7.2.1 below.
[4] See section 2.1 of the Notifier FSD for CLI details.
[5] See section 2.7 of the Notifier FSD for CLI details.

7.2.1 Command Line Interface

The Updatetool GUI CLI is delivered in the IMAGE_ROOT/bin and IMAGE_ROOT/updatetool/bin directory.

The following committed options are supported:

(See Desktop Notification design specification)

The following options are not documented and are for internal use only:

Send stderr messages to specified device. By default they are send to the logfile.

7.3 Compatibility and Interoperability

Especially important here is to document interoperability at the package level (2.4.3), co-existence (2.4.5), and multiple instance support (2.4.6).

7.6 Performance and Scalability

The GUI should perform well for large component catalogs and installations. Currently, for large component catalogs and catalogs with long history it runs into scaleability issues. There are various approaches being considered/planned for mitigating this:

Lazy display updates

The GUI should not attempt to calculate and display all the information while only a window into that information is being presented to the user at any given time. This should keep the GUI alive and let the user interact with it earlier than is possible while listing all information even if hidden.

Paged display

A page flipping concept can be used while displaying the information. That way the UI has to calculate and show only a few items at a time.

Search based display

The GUI should allow the user for searching of packages that the user is interested in. This combined with IPS's search capabilities allows the GUI to work with only limited and relevant information and removing unnecessary overhead of dealing with all components.

Server side improvements

The GUI development team will work with IPS team to have the common operations of fetching catalog and getting to commonly accessed information be made cacheable and whenever possible, precalculated.

7.7 Failure and Recovery

For package level integrity, the GUI depends on IPS to provide failure recovery. Backout support is currently provided by IPS for OpenSolaris only (via ZFS rollback APIs). The Update Tool should ideally provide this for all supported OSes but is dependent on IPS to do the right thing too. Initially, backout is provided by allowing the user to remove a package and install an older version of it.

The GUI is responsible for maintaining per user configuration correctly. It should detect local configuration data corruption and recover from it gracefully. The GUI should also detect invalid inputs by the end user, refuse to accept it and be robust in face of such inputs. It should also provide feedback and hints to the user about what the correct input should be.

7.8 Security

Note: For entitlement and signed packages see IPS documentation.

The GUI stores the following sensitive information:

  1. Per user configuration
  2. Entitlement Certificates

Per user configuration

The per user configuration is kept in a directory which access restricted to the current user only. The sensitive information in there is:
  1. proxy username and passwords for the current user.
  2. certificate associations for remote repositories

Certificates storage

This is TBD. Either well established OS dependent procedures for certificate storage will be followed or certificates will be stored in an access restricted location. This location can be the same as per user configuration location.

7.9 Software Engineering and Usability

Only subsections that specifically apply should be included here.

7.10 Operation

Single Instance of GUI Per User

For a given user, we expect that only one instance of the GUI is running at any time. The GUI must be implemented such that it will notify the user that only one instance may be running and that another instance has been detected. An "OK" button or similar will presented to enable the user to gracefully exit the second GUI invocation. Alternatively, execution of the GUI a second time could result in bringing the currently executing instance into focus on the user's desktop.

In the future, we may support the ability to open a new GUI window such that multiple install images may be managed concurrently by the same user.

8. Packaging and Installation Design

8.1 Filesystem Layout

INSTALL_HOME
    updatetool/
        bin/
            updatetool - shell script to start GUI on Unix
            updatetool.bat - shell script to start GUI on Windows
        vendor-packages/
            updatetool/ - Python modules
            wx2.8/ - wxPython and wxWidgets

8.2 IPS Packages

Package NameTitleDescriptionPlatformsDependencies
updatetoolUpdate ToolContains the following components:
* Update Tool GUI Python Modules
* Notification Applet Python Modules
* Desktop Integration Files and Scripts
* Common Python Modules Shared Across GUI and Notification Applet
Multi-platform package. Only wrapper shell script and bat files will be system-specific.Depends on:
* wxpython
* pkg
* python
wxpythonwxPython Runtime and wxWidgets minus developer filesCompiled form of wxPython. Mostly multi-platform Python modules, but includes some platform-specific libraries. Compiled form of C++ based wxWidgets libraries and supporting files.

May be minimized through pruning of developer-oriented files and binaries not needed by the UC 2 GUI applications.
Platform-specific packages.Depends on:
* Python

8.2.1 wxPython Packages

To address the download size requirements of the project, in place compression/decompression techniques may be used to reduce the size of the shared libraries contained in the wx* packages. For example, experimental use of UPX with wx* has demonstrated a roughly 40% reduction in DLL download size.

9. Change History

DateTitleDescriptionAuthor
March 10, 2008Added new section, 3.2.2.2.1 Icons, to incorporate icons requirements from formerly separate document. ckamps
March 7, 2008OpenSolaris Package Manager Dialogs AddedAdded references to OpenSolaris Package Manager dialogs for confirmation, downloading and installing steps.

File menu: Reinstated the Close Image option. Manpreet had already implemented it and it seems to work well from a UI standpoint. Once we support a right-click menu option on the installed image, it will be more natural for most users to use Close Image from that menu, but for now, at least Close Image on the File menu help address accessibility requirements and provides basic support for the feature of interest.
ckamps
March 6, 2008File menu:
* Removed "Recent Images" because recent images are inherently displayed in the list of images in the left pane.
* Removed "Close Image" because its only result would be to remove an image from the list of images in the left menu. It's more intuitive to support a right click menu on the installed image and presenting a "Remove From List" option.

Edit menu:
* Changed "Select All" and "Deselect All" in Edit menu to "Mark All" and "Unmark All" and removed "Mark All Updates"
* Added descriptions for all items in Edit menu.
ckamps
Feb 27, 2008Added notes to section 6.1 Notification AppletBased on decisions made during Feb 12 design review and feedback from Bill Shannonckamps
Feb 26, 2008Updates based on joint design review.* Clarified "Puffin" naming in section 1.1
* Added content to 7.10 Operation of the GUI.
* Cleaned up Interfaces tables in section 6.2 and 7.2
* Renamed "Available Components" to "Available Add-ons" throughout.
* Clarified in List Available Add-ons that only the most recent version of a package should be displayed.
* Updated Download and Install dialog description.
* Added "Selection and Marking" description to each of the section 3.2.2.7 ares: Listing and Applying Updates, Listing and Removing Installed Components and Listing and Installing Available Updates.
* Overhauled column descriptions in section 3.2.2.7. Transformed column specs into tables, added, removed, renamed, repositioned columns based on review feedback and reconciling with UC 1.x and Synaptic examples.
ckamps

10. TODO Items

UI Design:


Attachments:
08_remove_confirm_dialog.png Info on 08_remove_confirm_dialog.png 211348 bytes
09_removing_dialog.png Info on 09_removing_dialog.png 188733 bytes
about-embedded-wx.png Info on about-embedded-wx.png 35488 bytes
about-unbundled-wx.png Info on about-unbundled-wx.png 34329 bytes
available-add-ons.png Info on available-add-ons.png 4027 bytes
available-updates.png Info on available-updates.png 4205 bytes
icons.zip Info on icons.zip 93159 bytes
image-settings.odg Info on image-settings.odg 15678 bytes
image-settings.png Info on image-settings.png 32221 bytes
installed-components.png Info on installed-components.png 4139 bytes
installed-image.png Info on installed-image.png 4081 bytes
manually-built.png Info on manually-built.png 65764 bytes
new-color-1.jpg Info on new-color-1.jpg 230510 bytes
new-color-2.jpg Info on new-color-2.jpg 233607 bytes
new-color-3.jpg Info on new-color-3.jpg 238057 bytes
notification-ui.jpg Info on notification-ui.jpg 61460 bytes
notification-ui.odg Info on notification-ui.odg 22023 bytes
open.png Info on open.png 3739 bytes
preferences.txt Info on preferences.txt 1941 bytes
protocol.txt Info on protocol.txt 1635 bytes
puffin-mockup.zip Info on puffin-mockup.zip 19303 bytes
puffin-updates.png Info on puffin-updates.png 76970 bytes
refresh.png Info on refresh.png 3934 bytes
register.png Info on register.png 3629 bytes
uc-gui-data-model.odg Info on uc-gui-data-model.odg 10472 bytes
uc-gui-data-model.png Info on uc-gui-data-model.png 29518 bytes
uc1-restart-icon.png Info on uc1-restart-icon.png 9356 bytes
uc2-data-elements.ods Info on uc2-data-elements.ods 14402 bytes
uc2-data-elements.pdf Info on uc2-data-elements.pdf 69520 bytes
uc2-data-elements.xhtml Info on uc2-data-elements.xhtml 61144 bytes
uc2-gui-component-overview.odg Info on uc2-gui-component-overview.odg 10640 bytes
uc2-gui-component-overview.png Info on uc2-gui-component-overview.png 17597 bytes
uc2-gui-impl.odg Info on uc2-gui-impl.odg 10723 bytes
uc2-gui-impl.png Info on uc2-gui-impl.png 55909 bytes
uc2-gui-updates.odg Info on uc2-gui-updates.odg 58914 bytes
uc2-gui-updates.png Info on uc2-gui-updates.png 73486 bytes
uc2-installed-images.png Info on uc2-installed-images.png 11332 bytes
uc2-layout-right-pane.odg Info on uc2-layout-right-pane.odg 23031 bytes
uc2-layout-right-pane.png Info on uc2-layout-right-pane.png 15377 bytes
uc2-layout.odg Info on uc2-layout.odg 9196 bytes
uc2-layout.png Info on uc2-layout.png 35299 bytes
uc2-menu-component.png Info on uc2-menu-component.png 8574 bytes
uc2-menu-edit.png Info on uc2-menu-edit.png 15927 bytes
uc2-menu-file.png Info on uc2-menu-file.png 13409 bytes
uc2-menu-help.png Info on uc2-menu-help.png 9948 bytes
uc2-menu-image.png Info on uc2-menu-image.png 16479 bytes
uc2-menu-tools-lists.png Info on uc2-menu-tools-lists.png 11865 bytes
uc2-menu-tools-manage-lists.png Info on uc2-menu-tools-manage-lists.png 11987 bytes
uc2-menu-tools-search.png Info on uc2-menu-tools-search.png 12266 bytes
uc2-menu-view.png Info on uc2-menu-view.png 16131 bytes
uc2-menu.png Info on uc2-menu.png 3363 bytes
uc2-toolbar.png Info on uc2-toolbar.png 5934 bytes
update-tool.png Info on update-tool.png 7183 bytes
updatetool-interfaces.odg Info on updatetool-interfaces.odg 42497 bytes
updatetool-interfaces.png Info on updatetool-interfaces.png 103535 bytes
with-ubuntu-wx.png Info on with-ubuntu-wx.png 69291 bytes