11 | | There seems to be a general preference for a [http://en.wikipedia.org/wiki/Application_Bundle bundles]-based approach. Such a bundle is a single file that contains the application. This makes self-contained and easy to handle. The application can be run by double-clicking the bundle icon. Obvious exceptions to this rule are drivers and libraries. These have to be installed to be of any use. The contents of a bundle can be inspected by opening the bundle by means of a context-menu option. |
12 | | |
13 | | Optionally, a bundle can be '''installed''' by moving it to {{{/boot/apps}}} (system-wide) or in {{{/boot/home/<user>/apps}}} (user-local). Another option is to right-click the icon and select "install for everyone" (only admins) or "install only for me". Any initial configuration (accepting a license) can be performed the first time a bundle is being run. |
14 | | |
15 | | When a bundle has been installed, shortcuts to the application appear in the Deskbar menu. Applications in the Deskbar menu are subdivided into a number of a predefined categories (games, graphics, internet, ...). |
| 17 | A [http://en.wikipedia.org/wiki/Application_Bundle bundle] is a single file that contains the binaries, data files and documentation. This makes software self-contained and easy to handle. An application can be run by double-clicking the bundle icon. Obvious exceptions to this rule are drivers and libraries. These have to be installed to be of any use. The contents of a bundle can be inspected by opening the bundle by means of a context-menu option which opens the bundle in Tracker just like a directory. |
| 18 | |
| 19 | Optionally, an '''application''' bundle can be '''installed''' by moving it to {{{/boot/apps}}} (system-wide) or in {{{/boot/home/<user>/apps}}} (user-local). Another option is to right-click the icon and select "install for everyone" (only admins) or "install only for me". Any initial configuration (accepting a license) can be performed the first time a bundle is being run. |
| 20 | |
| 21 | '''Libaries''' can be installed the same way. The user normally does not have to install libraries manually, as the package manager will do so when it is needed, asking the user for permission. |
| 22 | |
| 23 | When an application bundle has been installed, shortcuts to the application appear in the Deskbar menu. This menu is subdivided into a number of a predefined categories (games, graphics, internet, ...) that match those on HaikuBits. |
| 24 | |
| 25 | '''Drivers''' ... ? |
61 | | === Run from Anywhere === |
62 | | |
63 | | On running a bundle, the archive's contents have to be accessed somehow. Either they can be extracted to a directory hidden from the user. While this can work well for smaller applications, larger applications (think commerial games) will occupy almost twice the size. |
64 | | |
65 | | Another option is to read the individual contents from the zip archive as they are needed. Even if this is technically feasible, performance will suffer, especially if bundles are compressed heavily. |
66 | | |
67 | | Some ports will need to know the absolute path to their data. Methods to solve this: |
68 | | * pkgfs (3) |
69 | | * assignfs (4) |
70 | | |
71 | | With pkgfs, all ports are mounted under {{{/boot/common}}}. |
72 | | |
73 | | With assignfs, each port is mounted in its own directory: {{{/boot/apps/<port>-<version>-<revision>}}} |
| 75 | There are a number of different bundle types: |
| 76 | * application |
| 77 | * library |
| 78 | * driver |
| 79 | * font |
| 80 | * ... |
| 81 | |
| 82 | Library, driver and font bundles have to be installed. |
| 83 | |
| 84 | === Install or not? === |
| 85 | |
| 86 | As bundles have to be compressed for distribution, they will need to be uncompressed at some point. There are two options: |
| 87 | * Before using a bundle, it is decompressed. This is very similar to installing, which many wanted to avoid. |
| 88 | * The bundle's contents are decompressed on access. This is less efficient as decompression needs to be performed on each access, as opposed to only one time during installation. Performance of large applications and heavy games in particular will suffer. |
| 89 | |
| 90 | It is possible to split application bundles into two sub-types; those that have to be installed, and those that can be run as-is. |
| 91 | |
| 92 | {{{ |
| 93 | #!div style="background-color: #EEEEEE; border: 1px solid; margin: 20pt; padding: 5pt;" |
| 94 | '''brecht''': While I initially liked the idea of not having to install software, I now feel that it is not suited for all types of applications and games. While we can make a differentiate between 'large' and 'small' applications and require installation of large apps (or suffer from poor performance), this feels like a bit of a kludge. Is is really that bad to 'install' software once? Installing can be reduced to decompressing and should not bother the user much. If the user knows he has to install '''all''' bundles, there can be no confusion. |
| 95 | }}} |
| 96 | |
| 97 | == File System Organisation === |
| 98 | |
| 99 | Native Haiku applications are contained in their own directory as before. Organization of ports is more complicated. |
| 100 | |
| 101 | === Merged === |
| 102 | |
| 103 | By means of a union pkgfs (3). All ports are mounted under {{{/boot/common}}}. |
| 104 | |
| 105 | It is not clear how multiple versions of libraries and applications can be handled in this scheme. |
| 106 | |
| 107 | === Self-contained === |
| 108 | |
| 109 | By means of assignfs (4). Each port receives its own unique assign: {{{/boot/apps/<port>-<version>-<revision>}}} |