Hello Inkscape developers and maintainers,
today I would like to propose an easy way to run and test Inkscape on various Linux distributions. Inkscape used to provide upstream- packaged Autopackages, but since I could no longer find them, I wonder whether this project might be interested in providing AppImages, which are essentially self-mounting ISOs that contain Inkscape and all dependencies it needs to run that cannot be assumed to be part of the base system (Linux distribution). This means that projects like Inkscape can package once and reach users of most desktop Linux distributions. http://www.appimage.org
Linus Torvalds recently wrote about AppImage: "Sure, it means that the end result is much bigger than a distro-native binary would be, but if you want a way to build applications for your users without limiting them to a particular distribution, or having to build fifteen different images, it really looks like it works very well.=EF=BB=BF" - https://plus.google.com/+LinusTorvalds/posts/WyrATKUnmrS
I prepared an AppImage of the bzr version. You can download it from https://bintray.com/probono/AppImages/Inkscape/_latestVersion#files Simply download, chmod a+x, and run.
The recipe script that generated it is is linked below, in case you want to see how it was done and improve it. Using the recipe, it should also be easy to generate an AppImage for 32-bit systems: https://github.com/probonopd/AppImages/tree/master/recipes/inkscape
I have tested it on a couple of different distributions with success: * CentOS-7-x86_64-LiveGNOME-1511.iso * debian-live-8.0.0-amd64-xfce-desktop+nonfree.iso * elementary_OS_0.3_freya_amd64.iso * Fedora-Live-Workstation-x86_64-23-10.iso * ubuntu-16.04-beta2-desktop-amd64.iso
I had to work around an issue with "undefined symbol: g_type_check_instance_is_fundamentally_a" by bundling glib2, this makes it run also on * antergos-2014.08.07-x86_64.iso * linuxmint-17.3-cinnamon-64bit.iso * ubuntu-14.04.1-desktop-amd64.iso Possibly we can find a cleaner way (e.g., use CentOS 6 as the build host) to make this workaround unneccessary.
Most likely it will run on others, too - and with some fine-tuning of the recipe (i.e., bundling additional dependencies) on even more. Probably the recipe is not perfect yet and might be missing some stuff, but that should be relatively easy to fix.
If there is a continuous build system in place, this could be integrated so that continuous/nightly/weekly images get built. Having such builds should allow more users to run the latest bleeding-edge version, test on multiple systems, and give earlier feedback. Of course the AppImage format could also be used to distribute stable/testing versions to users of most Linux distributions.
I have set up a cloud-based build system where I do the builds on travis-ci using a build system living inside a Docker image generated on Docker Hub. You can see this system in action here: https://github.com/probonopd/AppImages/ Of course this would be even more useful if it was integrated into the official Inkscape build system.
There is also an update mechanism in the works which allows users to download binary deltas between the version they have and the latest version. This works without central servers or repositories, you could run it on your own project infrastructure. Makes updating continuous builds really fast and easy. https://github.com/probonopd/AppImageKit/blob/master/ AppImageUpdate.AppDir/README.md (this is purely optional though).
Is the Inkscape project interested in maintaing an upstream-generated AppImage, as projects like Krita, MuseScore, and Scribus already do? Upstream packaging would have the advantage that users/testers get the software exactly in the way the upstream team intended, with the correct versions of the libraries bundled together with the application. What could be improved?
Regards probono