Today with advent of netbooks and high emphasize on portability it occurs to me that perhaps having a slew of highly portable applications a welcome addition to Haiku.
Firstly I'd like to note I'm not too much familiar with Haiku's current application installation system but from what I gather it will be quite different from my suggestion, so here it goes.
Basically my whole idea is based on klik. What it does is compresses all needed files into a single file which is then mounted and unmounted in order to respectively load and unload it from the memory. Using this approach comes with great advantages:
- Highly portable applications - if constructed properly (meaning lots and lots of hours of developer work) these applications could be frozen and redeployed elsewhere in the exact same state as they were before they were frozen.
- Intuitive way of handling applications - applications could be deinstalled by deleting and installed by just moving/copying file from one computer to another
- Multiple versions of applications running side by side - rename your file and voila you can run programX v2.0 and v3.0 seamlessly without much confusion or fuss
But you may ask why is this any different from apple's AppDir approach except that it is a compressed folder? Well for one this is a single file meaning that when you overwritte an existing file it doesn't merge new and old files into a single entangled mess like AppDir do.
Of course there is also a great deal of disadvantages when dealing with a single file:
- Meta data retrieval - it is harder to get meta data such as assosiations and icons from a single file unlike the folder structure
- Current application would be hard to transform into an AppFile format - It is pretty much an issue of standardization and order. Some applications might want to store their settings and config files somewhere else on the system leaving behind tails.
Possible solution: Internalize configuration files into the application file, which might be a hard task for some apps
- Bloat - since bascially all apps would carry their own non-core libraries there is a chance that your apps will simultaneously load same version of certain libraries into the memory.
Possible solution: Force AppFiles to check a common library repository for a library they might use before using their internal version.
- Security issues - making the instalation this easy could be exploited by a third party to gain access.
Possible solution: some form of control when accessing the application for the first time
- Updates - Some older versions of the software could use older internal libraries instead of using newer which break compatibility.
Possible solution: Design a way for upgrades to replace your current version while preserving settings.
The list of disadvantages does seem a bit bigger but I believe that the pros though less numerous outweigh the cons.