Snap Package for Linux distribution

proposal

#1

Hi, so I have been using Julia for about 7-8 months now, and I have noticed that while there is a package for CentOS/RedHat/Fedora, I noticed that there is no longer an official julia apt package. Now, Ubuntu’s maker, Canonical, has been really pushing this new thing called Snaps. They are now universal across pretty much all the major Linux distributions. I was wondering if there was any talk about making an official Julia Snap package, then all Linux distro’s have a simple setup?


#2

Yes, it’s been discussed recently here, but no work has been done so far. The main issue is that only recent distributions support Snap or Flatpak, so we will still need to provide generic binary tarballs anyway. But a contribution to support Snap would certainly be appreciated (either as a community-maintained effort or even maybe as an official download). It appears that a simple way of creating a package would be to simply re-bundle the binary tarballs without even rebuilding Julia.


#3

I have been wary of snap for a while (yet another damn update mechanism), but I have been using it for 3 months now and it is really seamless. Once you authenticate, you no longer need to be root, and updating is really simple (snap refresh).

It is my impression that many FOSS projects that release more frequently than 3-6 months have decided that they need something in between tarballs (a bit too manual) and distro packages (high maintenance for all the distros out there) went with snap.

The only issue I can see for Julia is the confinement model; which restricts file system access to $HOME. But if I understand correctly, there is a classic mode which would get around this globally (but it requires manual review from the snap organization), and in any case, the user can override this so maybe this is not much of a hassle.


#4

Update:

A snap called julia-stable (https://snapcraft.io/julia-stable) is available. It’s sourced from: https://git.fmind.me/fmind/snap-julia-stable and is just a dump of the official tar.gz file.
The problem is that it’s not up-to-date (=1.0.0) and doesn’t carry the “right” name i.e julia.

@mortenpi has a similar snap in his repo (https://github.com/mortenpi/julia-snaps), which predates the above one but isn’t registered.

It would be really good if the Julia creators could take the existing snaps and turn them into an official snap with bells and whistles (integration into CI/release process, utilizing multiple channels (LTS vs most current), …).


#5

I also think it would be good to have something like a snap, distribution agnostic and auto update from the repository. However, I would prefer flatpak. Snap is more of an Ubuntu thing that kinds of work in other distributions. But flatpak support is generally better in most distributions:
https://flathub.org/home
https://flatpak.org/

Even on Ubuntu, I have replaced most of snaps by flatpak version of the apps. On Fedora, I have no problems with Flatpak but snap support was not so good.

However, there are still some issues regarding how to expose command line applications in flatpak:


#6

I think the strict confinement model could actually be an advantage to a Julia snap for people concerned about all the issues discussed here: Pkg: attack vectors . Malicious packages might not be a major problem if Julia can’t see your home directory.


#7

The major issue with Flatpak is the integration with Atom and VSCode, which currently can’t be got to work (see this issue and this thread). But that doesn’t prevent creating a Julia Flatpak which is usable from the commandline. Users have to create a symlink manually, which is inconvenient but not the end of the world either.

I had made a Flatpak for Julia 0.6. If somebody wants to update it to 1.1 and publish it to FlatHub that would be useful. Most/all of the work should be updating the versions of dependencies.


#8

On most machines this would make Julia perfectly unusable, except for sending commands and receiving output via pipes.

I was enthusiastic about snap first, but I think that the installers/tarballs are now very convenient and impose much less of a maintenance burden (cf install-julia). I guess a snap/flatpak/etc package will be maintained when someone really wants to do it.


#9

I’ve looked through the available programming related snaps (languages and IDEs): most of them use classic confinement mode.

Snaps declaring their confinement as “classic”, have access to the rest of the system, as most legacy (debian packages for example) packaged apps do, while still benefiting from the ci-integrated store model, with automated updates, rollbacks to older versions, release channels, etc. (From https://blog.ubuntu.com/2017/01/09/how-to-snap-introducing-classic-confinement)

With this the connection to atom shouldn’t be a problem.

Being able to use a OS supported installation/rollback method instead of manual scripts sounds compelling to me.

With all the talk about Julia should be easy for beginners e.g. by shielding them from understanding scoping, I wonder why it is never a problem for teachers to require the shell, tar, symbolic links and environment variables like PATH until you can start Julia.