Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build and ship official AppImages #325

Open
TheAssassin opened this issue Apr 29, 2021 · 15 comments
Open

Build and ship official AppImages #325

TheAssassin opened this issue Apr 29, 2021 · 15 comments
Labels
enhancement New feature or request packaging

Comments

@TheAssassin
Copy link

Providing an AppImage would have, among others, these advantages:

  • Applications packaged as an AppImage can run on many distributions (including Ubuntu, Fedora, openSUSE, CentOS, elementaryOS, Linux Mint, and others)
  • One app = one file = super simple for users: just download one AppImage file, make it executable, and run
  • No unpacking or installation necessary
  • No root needed
  • No system libraries changed
  • Works out of the box, no installation of runtimes needed
  • Optional desktop integration
  • Optional binary delta updates, e.g., for continuous builds (only download the binary diff) using AppImageUpdate
  • Can optionally sign your AppImages (inside the file) using gpg2
  • Works on Live ISOs
  • Can use the same AppImages when dual-booting multiple distributions
  • Can be listed in the AppImageHub central directory of available AppImages
  • Can double as a self-extracting compressed archive with the --appimage-extract parameter

Here is an overview of projects that are already distributing upstream-provided, official AppImages.

@TheAssassin TheAssassin added the enhancement New feature or request label Apr 29, 2021
@Moonbase59
Copy link

That’d be a great option. I hate Snap, don’t really like FlatPak, but somehow like AppImage, for the reasons stated above.

But please also keep the PPA for us Debian/Ubuntu/Mint users …

@Photon89
Copy link
Member

@TheAssassin I looked into AppImages and am somewhat on the fence regarding this topic. Problems I see:

  1. Shutter has quite many dependencies which would need to be bundled with it making the AppImage bloated (possibly containing many libraries which are already present on the user's machine).
  2. Now that Shutter has got rid of deprecated dependencies, it can reenter the distros' repos so the main advantage of AppImages becomes less relevant.
  3. Don't know about the other Shutter team memebers, but I personally have no experience with AppImages. While packaging a simple app looks quite easy, it seems to be rather involved to bundle all the dependencies. Any kind of support is appreciated though!

What do you think about it?

@TheAssassin
Copy link
Author

I want to mention that I've been a maintainer of AppImage for years now.

possibly containing many libraries which are already present on the user's machine

That's a general issue with all the technologies for authors to ship their own applications. Generally, I'd say, we should try it. Even if it were 50 MiB, that's not a lot nowadays. Plus, AppImageUpdate does really efficient binary delta updates, so you have to download the entire thing once only.

Now that Shutter has got rid of deprecated dependencies, it can reenter the distros' repos so the main advantage of AppImages becomes less relevant.

I had been using the distro-provided version for years, and I have always loved shutter, it's my favorite screenshot application. However, these versions were quite old and you had to apply some hacks to get the editor to work, etc...

Distro-provided versions can be good enough. However, AppImage gives users a lot more freedom. You can easily test and use new versions, you can have multiple different versions at once, ... Also, distro means outdated, generally.

Shipping an AppImage (if well done) also allows users of older distros to use your application, because I'm sure it will take years for all major distros to include any version of Shutter.

Don't know about the other Shutter team memebers, but I personally have no experience with AppImages. While packaging a simple app looks quite easy, it seems to be rather involved to bundle all the dependencies. Any kind of support is appreciated though!

Well, I have not packaged Perl applications before either. Like with any scripting language, framework, we could start working on a linuxdeploy plugin for this. See https://github.com/linuxdeploy/awesome-linuxdeploy for more information.

Please feel free to join our IRC channel, there's plenty users who can help.

@Photon89
Copy link
Member

@TheAssassin I wrote a message on IRC, thanks!

@vadi2
Copy link
Contributor

vadi2 commented May 24, 2021

I support this - I've been using appimages myself in another app successfully, they pretty much solved the distribution problem.

@Photon89
Copy link
Member

Photon89 commented May 24, 2021

@vadi2 We are discussing this on IRC right now, looks like we would need to bundle not only all the perl dependencies but also perl itself, as some of the dependencies are built against a particular perl version. I'm excited how big the AppImage will become!

@Moonbase59
Copy link

Moonbase59 commented May 24, 2021

I do of course prefer, top-to-bottom priority

  • a version in the distro if not too old,
  • a PPA maintained by the original creators (or the AUR),
  • an AppImage.

An AppImage is also great if you have to "carry it around" on different systems when you have to maintain several systems or do lecturing/teaching, like I do. If well done, it will usually "just work", and creating a .desktop file for it is easy. Or you can use the AppImage Launcher.

@TheAssassin
Copy link
Author

I haven't even noticed that Shutter hasn't seen releases in over a year. Not sure how much development has happened since (looking at the commit log, there have been a few changes indeed). Most projects make building AppImages part of their regular CI scripts. If we started building AppImages of Shutter, they could be continuously released on GitHub (i.e., creating binaries on every commit and uploading them to a prerelease tag; pyuploadtool simplifies this quite a bit).

@Photon89
Copy link
Member

@TheAssassin To be honest, we were discussing releasing a new version internally recently, but so far other things came up, so nothing has happened yet...

As far as I remember, you started work on an AppImage for Shutter in May 2021, but I don't recall whether there was a working version already?

@TheAssassin
Copy link
Author

I think I had some basic working AppImage. It's not that hard, after all. Some patches will be required to make the app completely relocatable (i.e., reference resources relative to the main binary rather than having absolute builtin prefixes).

Maybe I'll pick it up again when the new release is available.

@Photon89
Copy link
Member

Maybe I'll pick it up again when the new release is available.

We just released a new version, so if you have some spare time, please have a look into it! I tried it as well at some point, but got stuck with many problems though: #594 (comment)

@ikabod
Copy link

ikabod commented Oct 21, 2024

My vote for an AppImage, since it makes it easy to switch the Distro and/or reinstall the system. I hate all the (permanent) problems with dependencies after a system update and would accept, if an AppImage is much bigger than an installed version.

You can also have your config within the folder of the AppImage and never have to care about the settings too: https://docs.appimage.org/user-guide/portable-mode.html

@Photon89
Copy link
Member

We're always open for contributions! 😃

@ikabod
Copy link

ikabod commented Oct 22, 2024

I already tried to build some AppImages from installed software. I have no problem to pack the binary and some dependencies to an AppImage with the AppImageTool, but it is a different thing to get the AppImage running on a new machine without dependencies installed. Something is always missing or there is a problem with environment vars (vars can be set in the AppRun file).

I'm not a Linux programmer by the way and the documentation recommends not without a reason that AppImages should be maintained by the developer of the App:

AppimageKit is designed with “upstream packaging” in mind. This means that we want the original author of an application to be the person that packages it as an AppImage, distributes it to end users, and supports it.

And yes: It is not as simple to build an AppImage as it sounds in the documentation (at least not for me).

@vadi2
Copy link
Contributor

vadi2 commented Oct 22, 2024

It is not simple for us either, and we face the same issues, unfortunately. Help is indeed welcome in this area.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request packaging
Projects
None yet
Development

No branches or pull requests

5 participants