shutter-project / shutter

Screenshot tool for Linux
https://shutter-project.org/
GNU General Public License v3.0
528 stars 35 forks source link

Build and ship official AppImages #325

Open TheAssassin opened 3 years ago

TheAssassin commented 3 years ago

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

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

Moonbase59 commented 3 years ago

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 commented 3 years ago

@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 commented 3 years ago

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 commented 3 years ago

@TheAssassin I wrote a message on IRC, thanks!

vadi2 commented 3 years ago

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

Photon89 commented 3 years ago

@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 commented 3 years ago

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

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 commented 1 year ago

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 commented 1 year ago

@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 commented 1 year ago

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 commented 7 months ago

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: https://github.com/shutter-project/shutter/issues/594#issuecomment-1655534016

ikabod commented 2 weeks ago

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 commented 2 weeks ago

We're always open for contributions! :smiley:

ikabod commented 2 weeks ago

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 commented 2 weeks ago

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