AppImage / AppImageSpec

This repository holds the specification for the AppImage format.
http://appimage.org/
MIT License
71 stars 22 forks source link

Feature: Slicing (and merging) AppImages #6

Closed fabianloewe closed 7 years ago

fabianloewe commented 7 years ago

The idea is to be able to add and remove content of an AppImage with the appimagetool or automatically if the appimaged is installed.

Problem: Duplication of files/runtimes/interpreters

Example: Multiple Python apps might come in the future with Python packed into the AppImage. Most modern Python apps use Python 3 today and may then ship the same version.

Solution: It would be nice to have the possibility of locally cutting out stuff you already have installed or present in other AppImages. If you want to share your image with somebody or copy it to another computer you could repack it to its initial state so it works again on every Linux distribution.

Pro:

  1. Deduplication
  2. Data sharing
  3. Maybe some customizations or optimizations

Contra:

  1. Defeat of read-only security feature (which isn't acutally a security feature)
  2. Not enough meta data available to securely cut out/extract files/runtimes/etc. (if AppStream data is provided this might not be the case)

Additional thoughts: Maybe it shouldn't be allowed to repack an AppImage so you would instead have to download the official image. This could improve security by not allowing to embed malicious payloads.

probonopd commented 7 years ago

Besides aesthetic beauty, is this really a problem? AppImage is not optimizing for memory or storage efficiency (use Flatpak if these are your main concerns), but for convenience/ease-of-use (no management tools needed), portability (one file = one app), and robustness (don't have to fiddle around).

What is so bad about, say, Scribus and Inkscape both coming with their private bundled Python environment? It is a big advantage that the person putting together an AppImage can decide what goes inside, and can rely on specific (patched, if needed) versions.

fabianloewe commented 7 years ago

Yes, it is not but it should give the user the option to do so if you ask me. A packager or developer usually decides what goes into it in the hope of targeting as many distributions as possible. An user could optimize it a lot better for his/her system (maybe also using other implementations) or use the generic one for sharing etc. .

It isn't supposed to be a 'must-have'/'must-do' feature, just a nice option to have. I don't want to make people to have to download the daemon I just want to give them more possiblities to work with their AppImages.

probonopd commented 7 years ago

The option is there already now:

  1. Extract the AppImage (e.g., using --appimage-extract on the newer type 2 images)
  2. Delete what you want to be deleted
  3. Optionally, repackage (e.g., using appimagetool)
fabianloewe commented 7 years ago

Ok, that's true. I actually forgot to have this option. My fault...