home | faq | discussion  
 
Questions
 ·  What are OpenBundles?
 ·  Why do we need OpenBundles?
 ·  How do OpenBundles Work?
 ·  I thought KDE and Gnome already solved these problems.
 ·  I thought RPMs already solved these problems.
 ·  How are OpenBundles better than the Windows registry?
 ·  How did Bundles work in NeXTStep?
 ·  Why not keep the directory in a single file such as .jar, .zip, or .wad file?
 ·  Why not use the exact same format as MacOS X bundles?
 ·  Why dosn't the Parallel Install Standard address this?
 ·  How is this different from Encap Systems? (more here)

Answers
 ·  What are OpenBundles?
  OpenBundles solve existing problems with installation, encapsulation, icon registration and mimetype registration across all desktop systems (i.e. Gnome, KDE, etc). They are patterened after successful solutions from NeXTStep, MacOS X, and UNIX Sysadmin "encap" style package installation.

OpenBundles are proposed to initially affect only graphical application installation. However, they have been seen to effectively organize everything from screensaver modules, to development frameworks (libraries and headers), to command line tools in past implementations.

In addition, OpenBundles offer these other advantages:

  • Locating resources for Localization
  • Multi-architecture applications
  • "Native" looking applications built with scripting languages
  • No Windows style "registry" to maintain

 ·  Why do we need OpenBundles?
  Our mission statement pretty much sums it up:
Distributors of third-party software should be able to build one install package which works on all UNIX systems. Desktop users should be able to easily download and install applications and locate those applications wherever they like on their machine.
We need a method for simply and easily distributing binaries of third party software, such that they can be installed easily and simply. That distribution and installation method should provide application icons, mimetype registration, and any other services. Building the package should be independent of whether the end user of are using Gnome, KDE, GnuStep, or some other desktop system. The developer should only have to distribute one application package which should work on any system.

 ·  How do OpenBundles Work?
 At their simplest, OpenBundles locate all unmutable files for an application under a single subdirectory, and change application installation from an active operation on the part of a package system, to a passive one.

Instead of requiring the package system to actively install data into Gnome, KDE, or other configuration systems, the application merely provides a passive set of information about itself. When a desktop system starts up, it can quickly scan the known application directories for applications and add their meta-information to the desktop filemanager. Any application which the user browses to outside of the known application directories is instantly recognized because of it's OpenBundle definition and can be launched immediately.

Configuration information, preferences, and other mutable data should all be stored in some configuration system outside of the OpenBundle, and should not be required. This assures that installing an application on a machine is as simple as copying it's OpenBundle onto that machine, regardless of which desktop system, or even which architecture, that machine is running.

Please read the Intro Article and Implementation Proposal for a complete description of OpenBundles.

 ·  I thought KDE and Gnome already solved these problems.
 KDE and Gnome have different standards for installing application icons and mimetypes. Worse, the installation system used must include the scripts which make the proper changes to Gnome and/or KDE based on the system which an application is being installed onto.

The OpenBundle standard establishes a single way for applications to be represented when installed. Gnome, KDE, or other desktop systems are then free to passively interrogate the information inside the application bundle and represent the discovered information in their own ways.

 ·  I thought RPMs already solved these problems.
 RPMs are a mechanism for packaging changes which are made to specific parts of the filesystem while installing an application. RPM is not part of application launching or the icon, mimetype, and capability discovery process. Changes are required to the desktop systems themselves to fix these problems. OpenBundle is one such proposal.

Applications distributed in OpenBundles may be distributed in RPM packages. Because they are fully relocatable and require no active-install scripts, they may also be distributed in simple .tar.gz or .zip compressed archives.

 ·  How are OpenBundles better than the Windows registry?
 Whenever applications are installed on Windows, the install wizard adds entries to the registry to (a) tell the OS where to find the application, (b) register any icons for the application, (b) register which document mimetypes and extensions this application can handle, (c) register the uninstaller.

This method means that the data for an applicationt to correctly run is located in two places. The datafiles for the application are located in the install directory, while the registry contains information about where to find the application and what filetypes it handles. In fact, once you put a shortcut on the desktop or in the start menu, there are three different places which know about the application.

Because these three systems have to be in sync, you can't touch an application without breaking it. If you want to do anything with an application you have to uninstall and reinstall. If you run out of space on a disk, and you want to move an application, you have to reinstall. If you want a new version of an application out of commission for a while as you do something with the old version, you have to uninstall it.

Furthermore, sharing applications between machines over a network is complicated. There is no network layer to share registry entries or start menu items. Therfore you have to reinstall the application on every machine on the network if you want it to work at all. Unless you have purchased complicated software which can network install all the registry entries correctly, this means manually installing that application on each machine.

 ·  How did Bundles work in NeXTStep?
 See the Reference of other implementations.

 ·  Why not keep the directory in a single file such as .jar, .zip, or .wad file?
 In fact we would prefer to do this. However, most APIs are designed to handle individual filesystem files, and operating systems can only load shared library objects from individual filesystem files. In order to remain compatible with these existing mechanisms, the resources within an application bundle must be distinct files on the filesystem.

While it might be possible to use single .jar style archive files using a loop filesystem device, VFS layer, or other trickery, such implementations would be unlikely to remain portable across different UNIX systems.

 ·  Why not use the exact same format as MacOS X bundles?
 In fact this is being considered. Currently we do not have thorough enough documentation of Apple's bundle standard for MacOS X to stay the same. If Apple standardized this bundle format we would certainly follow their guidelines.

 ·  Why dosn't the Parallel Install Standard address this?
 This standard advocates that packages use unique names for files they install. This is a good guideline, but the standard fails to address how packages become active. For example, Encap systems automatically build symlink directories to select certain versions. These trees might be built into /usr/local/ or ~/local/.

Furthermore, the standard is pratically advocating that we make /usr/local/bin look like /usr/lib, with many versions of the same binaries named differently, and symlinks pointing around to decide what to run.

 ·  How is this different from Encap Systems? (more here)
 Encap systems are a good start at solving this problem. Encap systems accept the limitation that UNIX software compiles in hard-coded install paths. OpenBundle requires we update applications to remove this restriction. Many applications, such as those designed for KDE and Gnome, already have some amount of relocation capability. This is part of the reason we wish to start with graphical applications first.

 
Copyright © 2002 Neotonic Software Corporation, All rights reserved.