| Challenge | Examples |
|---|---|
| Limitations of unpackaged download bundles | * Unpackaged bundles lack life cycle management capabilities: Difficult to efficiently deliver incremental updates and new add-ons to your users * Can't offer multiple forms of your distribution: Without modular packaging, it's difficult to easily produce "just enough" forms of download bundles yet enable users to augment their installations on the fly. |
| OS native packaging systems are too constrained to be the only delivery model | * You might not control the delivery channel * You face the specter of using multiple packaging and delivery systems for multiple platforms * Some of the packaging systems don't offer network delivery of add-ons and updates |
| Initial install technologies offer limited solutions | * Although they often address initial install component selection, they often don't provide an adequate and flexible solution for ongoing installation of add-ons and updates * Initial install technologies are sometimes closed source solutions |
Features and Benefits
The combination of the pkg(5) system and the Update Center binary toolkit offer the following features to address these and other challenges:
| Feature | Description | Benefit |
|---|---|---|
| Advanced Delivery Model | ||
| Modular, Linux Distro-like Distribution Model | You define the scope of your product distribution via the content you host in your package repositories. You overlay package definitions onto your existing download bundles, choose which packages to pre-install and which packages to leave on network package repositories. | Just enough application bundles: The flexibility to define and deliver download bundles in a variety of sizes with a variety of pre-installed combinations while making available the superset of content via package repositories. |
| Self-contained Images | Ability to easily morph your existing download bundles into modular and sustainable delivery vehicles | * Simplifies administration by avoiding conflicts with OS installations and installations of other layered software. * No rearchitecture required: Overlaying existing bundles is more of a release engineering exercise that has zero to minimal impact on your product development. |
| Entitled Access | Optional controlled access to ongoing add-ons and updates using client certificates. | You make the distinction between freely available and access restricted content |
| 3rd Party Content Augments Base Distributions | It's simple to work with partners to offer additional repositories of content to complement your core product distribution. | Extensible model of pluggable content repositories benefit you, your partners and your end users. |
| Open Solution | The core pkg(5) system, although multi-platform, is developed by the OpenSolaris community and the binary ports of pkg(5) including value adds are developed by the Update Center open source development project. | Low cost solution that is not tied to a specific vendor. |
| Multi-platform | Same underlying delivery, add-on and update solution across multiple OS platforms | Reduce costs by using a single underlying delivery technology |
| Network-based | Network repository-based software installation management system | Minimize time to experience: Reduce time to offer new and updated content to users. No need to respin and redeliver large initial install bundles: just publish new and updated content in your repositories to reach your installed base. |
| Sparse Updates | Efficient update approach in which only modified files are downloaded and applied | Reduces update times for end users and makes more efficient use of available network bandwidth |
| Flexible Installation | ||
| Pre-installed Images with Optional Initial Installers | Similar to creating unpackaged zip or tar.gz download bundles, you can pre-install select packages into pkg(5) user images at the factory, archive them as a standalone download bundles and optionally wrap them with initial installation programs. If you choose to wrap them with an initial install program, you decide which initial install framework to use. | * Pre-install and Pre-configure as you see fit: Pre-install as much content as your users typically need. You also decide the degree to which to configure components at the factory. * Avoids initial installer lock-in: Decoupling ongoing install image, update and add-on management from initial installers enables you to reuse the same set of packages regardless of whether you choose to deliver installer-wrapped bundles for ease of use and/or installerless bundles for more technical audiences. |
| Multi-, Relocatable-install | Support for multiple installation images per OS instance in user-specified locations | * One or more copies of same and/or different versions of your product. * User-selected install locations |
| Non-root Administration | No need for special "root" administrative privileges to install and manage layered software installations | Empower application administrators by providing them with control over their applications without requiring OS administrative access |
| Enhanced Connection with Users | ||
| Desktop Software Update | An optional consolidated desktop notifier monitors layered installations, notifies end users of available updates and makes them easy to install through a conventional streamlined Software Update GUI. | * Proactive notification of available updates. * Cross-portfolio, branded UI tying together multiple desktop products. |
| Cross-promotion and Advertising | Optional ability to cross-promote and advertise related product and service offerings via the Software Update and Update Tool GUIs. | Inform users of related offerings while providing real value of delivering updates and add-ons over the network. |
| Repository Analytics | Tools and best practices to capture and report on repository usage. For example: unique product installations, most popular packages, uptake of updated packages, registered user activity, OS platform usage, tool usage. See Reporting Examples (Sun internal) | Make informed decisions based on actual usage data |
| Developer and End User Tooling | ||
| Developer Tools and Best Practices | Tools and best practices addressing all facets of producing and maintaining packages and installation bundles for a variety of build environments including Ant, Maven, Make and free form scripted build environments | Flexible toolset to meat your specific development needs |
| Package Management APIs | Java and Python APIs that your application management tools can leverage to provide an integrated update and add-on experience. For example, provide enhance your web admin UIs with add-on and update management. | Offer appropriate user interfaces that is most useful to your users |
| End User Tools | Optional Update Tool GUI and built-in CLI (pkg(1) man page and examples) for installation and package management. | Flexible end user tool options to meet the needs of power users |
Comparison and Contrast With Native Packaging
When your project doesn't have to deliver it binaries exclusively in native package form, you can choose to deliver pkg(5)-based distributions that offer the flexibility of zip format coupled with the power and modularity of a network package repository system. Additionally, by using a common packaging system across your target OS platforms, you'll provide a consistent user experience to your users and reduce your project's development and sustaining costs.
Benefits of Zip
pkg(5)-based distributions are able to embody the best of unpackaged zip distributions:
- A cross-platform solution
- Inherently layered installations that don't conflict with underlying OS installations
- Multiple installation support for easy colocation of the same or different version of your applications
- Non-root user installation and management allowing
- Act as an overlay of your existing zip distribution layout - no need to radically change your application's structure
Benefits of Native Packaging
Some of the most desirable features of native packaging approaches are also realized through the use of pkg(5):
- Formalized packaging and updating - easy to see what's installed and what's broken
- Desktop package management GUI and automatic desktop notification of updates
- Package management APIs for administrative application integration
- Repository-based distribution of add-ons and updates
pkg(5) Goes Beyond Zip and Native Approaches
Beyond the features found in zip and native packaging approaches...
- pkg(5) enables modular assembly and delivery of your distributions: Since all of the packages are in the repository, you and others can include as little or as much content in download distributions as you'd like. Users can add and remove content by interacting with repositories after initial installation.
- pkg(5) always uses repositories that you control: Windows, Mac OS X and some other popular platforms don't offer package repositories that are open for your project's use
- pkg(5) repositories are cross-platform: If you're delivering cross-platform software, you don't need to use platform-specific repository infrastructure
- pkg(5) enables your project to control the content in the repositories: Those that do offer package repositories impose their own requirements which may not align with your project's and your users' needs
- pkg(5) enables your project to connect directly with users: Since you manage your repositories that your users are connecting to, you can manage the interaction with the users and mine usage data to enhance the user experience
Learning More
As next steps, you might want to review: