AppImage suggestion

As exercise, I have converted one application; “horizon-eda” from the deb depository to AppImage using pkg2appimage script. Conversion went very well w/o any major problems, however the AppImage created here is more then ten times larger than original deb package. I understand, that it is a cost-benefits of the AppImage project. Also, I understand that this AppImage could be optimized, hence I’m sure not all components in the container are needed. Unfortunately, as a end-user I’m not in position to do this optimization. In addition, considering my case (CAD design) it would be very difficult to benefit from this project. My CAD software consists many independent smaller apps that work toward final product, converting all of them to AppImage would take unreasonable large space. I have couple suggestions to alleviate this problem and improve the project:

  • Add the ability to run several applications from the single container. I’m planning to write small “launcher” that can launch several apps listed as dependencies. It would be nice if as part of the project, you can suggest the utility that could run several closely related applications from the single AppImage.
  • Also, it would be nice if AppImage documentation (and standard) will lists minimum software requirements to run AppImage (the documentation may contain this information somewhere, but I could not find it?). Inside the container is pretty much the complete system including shell. It is clear that all hardware access (kernel, xorg, fuse?, etc.) have to be outside the container, but what else is needed? What could be left outside?

I would very much appreciate your comment.

Hello bill.

Also, I understand that this AppImage could be optimized, hence I’m sure not all components in the container are needed.

Correct. This is why we think AppImages should be made (and tested, and supported) by the application authors, because they know how the applications work and what they really need to run. An application author gets full control over what ends up in an AppImage.

Add the ability to run several applications from the single container.

In general, we follow the “one app = one file” principle which makes AppImages so simple to use. But for some rare edge cases, it is possible to have more than one application inside the same AppImage, and launching them using either command line parameters or using differently named symlinks.

Also, it would be nice if AppImage documentation (and standard) will lists minimum software requirements to run AppImage

That depends on which system(s) the author of an application (and its AppImage) wants to target. Our recommendation is to target the oldest still-supported LTS release of Ubuntu, in the hope that newer distributions will be compatible to it (if they aren’t, then we consider it as a bug…)

Inside the container is pretty much the complete system including shell.

No. Inside the container is everything that the application needs to run that cannot be expected to come in the default installation/Live ISOs of the most commonly used desktop distributions. A shell is not required to run most applications.

FUSE 2 needs to be on the host system. And “all libraries that are normally part of commonly used desktop distributions”. it is vague by design, because it really depends on what an application developer wants.

It is even possible to include all libraries an application needs inside the AppImage, in which case the AppImage does not need anything from the host system (apart from FUSE 2 and the X server).