Please convince me that we want this, including downsides.
Works with most reasonably recent desktop Linux distributions. Well, almost.
AppImageKit and its predecessor, klik, have been in the making for over a decade.
AppImages can be downloaded and run without installation or the need for root rights.
The key idea of the AppImage format is one app = one file. Every AppImage contains an app and all the files the app needs to run. In other words, each AppImage has no dependencies other than what is included in the targeted base operating system(s).
Providing an AppImage would have, among others, these advantages:
appimagedHere is an overview of projects that are already distributing upstream-provided, official AppImages.
What are the downsides to using AppImage?
It is work to set it up and keep current. It is not integrated with the system's package management (which some consider a downside; others consider it a bug plus).
With more users coming onboard, we need a universal installation method on Linux that will work across Distributions. If Appimage is intended to be that, we should pursue this further.
@zestyr - we also had some discussion on flatpak here: https://github.com/lbryio/lbry-app/issues/570
Do you know which would be the better route to go in order to support the most Linux distros?
I see some comparisons here:
https://www.reddit.com/r/linux/comments/59njka/the_biggest_winner_of_snap_v_flatpak_is_appimage/
https://www.reddit.com/r/linux/comments/4kxbqp/appimage_snaps_flatpak_pros_and_cons_comparison/
Unlike Flatpak packages and other solutions, AppImages run on most Linux systems out of the box, do not need root, and involve no complicated commands on the command line.
Per discussion still happening on #570, it doesn't seem like there is a consensus regarding AppImage vs. Flatpak.
I'm open to changing this, but it's unlikely we're adding 2 new ways to package an app on our least popular OS.
Throwing my hat in; I'm a Fedora user that started playing around with lbry this weekend (exciting project!). Seeing only a .deb I had to build from source, which unfortunately requires setting up a bunch of deps, c libs, nvm, python virtualenv etc. I'm pretty used to having to do this, but I would have liked to have something like an AppImage if I'm just trying out the project.
I prefer Flatpak, but I'm mostly indifferent as long as there is a portable option. If you're evaluating runtimes, I would also consider snappy. They're pretty much the 3 competing solutions, with as far as I can tell, no clear front-runner.
Thanks @eriknelson and glad you were able to still get this set up.
We'll look to get this fixed. Let me know if you'd be interested to contribute on this or elsewhere.
This thread is about AppImage though.
Check out the AppImage support built into electron-builder. Should really make it easy to produce an AppImage.
Since we're using electron-builder which supports AppImage, I would recommend going for AppImage.
Someone already built flatpak support, it think that bridges the gap we were missing (unless I'm mistaken).
https://flathub.org/repo/appstream/io.lbry.lbry-app.flatpakref
As a Linux user, I have no strong opinions about packaging (the existing .deb works fine for me).
To me the best improvement to make here is a better upgrade process (most likely via apt, though possibly just via in-app upgrades). I'd lean towards whatever packaging makes this easiest, though if we can easily distribute both FlatPak and AppImage I'm fine with both.
This may be possible using the publish features of electron-builder. We could publish the app on Bintray which has access from apt if I'm not mistaken.
@IGassmann have you looked at what Alex is doing in https://github.com/lbryio/lbry-app/issues/808? Will publish work well with auto-updates?. apt is ubuntu-specific, which is all we're targeting now, but if there's a good solution to install the app and keep it updated on other linux flavors, that would be great.
I'll look if it's feasible when https://github.com/lbryio/lbry-app/issues/808 will be merged.
New reasons for using AppImage:
An AppImage still seems not to be available from the GitHub Releases page.
@probonopd It'll be available for our next release which should appear next week.
After discussing the fact that you need to change the file permission to launch an AppImage package, it was decided to rollback our changes and not use AppImage. Our app will still be distributed as a .deb package for the time being.
That step is not intuitive and might result in an unpleasant experience for our users.
A possible solution for supporting non-deb distributions in the future will be to use snap builds.
After discussing the fact that you need to change the file permission to launch an AppImage package, it was decided to rollback our changes and not use AppImage.
What?! This is a security feature of Unix-like systems, where an executable needs to have the execute permission in the filesystem.
It is really easy to do:

If you would like to get automatic desktop integration (and automatic setting of the execute permission for all AppImages), you can install the optional appimaged daemon.
Compared to setting the executable bit on an executable (something that is not specifically an AppImage thing but needed for __all__ executables), package mangers and similar systems are _much_ more complicated.
@probonopd when I double click a .deb Ubuntu prompts me to install it. When I double click an AppImage _literally nothing happens_.
This is a clear _step backwards_ from a UX perspective, at least on any system with support for .deb based packaging.
Even more frankly, the fact that you can suggest that there are no UX issues around forcing users to right click and navigate complicated property menus every time they want to install a piece of software gives me doubt that you have proper mentality to understand how to build usable solutions.
I've read enough of of your other comments on threads that I don't expect to convince you that you are wrong about this, though I do hope you will take this as feedback to drop the dogma you have on this issue.
@probonopd I've re-read that comment and feel it may have been overly aggressive. I'm leaving it as-is as an indication of the strength of feelings I have about this issue.
I do like the idea of AppImage a lot and I appreciate the work you are doing for the Linux and open-source community.
@kauffj I agree that Linux desktops should do something useful (e.g., show a dialog) when a user double-clicks an executable (ELF) file that is missing the execute bit.
We have an issue for this:
https://github.com/AppImage/AppImageKit/issues/374
Unfortunately this is not limited to AppImages, and we can't solve this within AppImageKit. Only the desktop environments (GNOME, KDE,...) can fix this.
@probonopd I did some minimal googling but could not find open tickets for the desktop environments. Given age of https://github.com/AppImage/AppImageKit/issues/374 I would guess these exist already? Could that issue be updated?
I'm happy to throw whatever minimal weight we have towards supporting this.
I don't think anyone has opened them so far. Hence the statement,
If you care about this issue, then please open an issue ticket with your favorite desktop environment (...)
Thanks for your support on this topic.
@probonopd ticket submitted for KDE and Gnome.
Most helpful comment
With more users coming onboard, we need a universal installation method on Linux that will work across Distributions. If Appimage is intended to be that, we should pursue this further.