Updated: July 13, 2018
Self-contained app mechanisms are gaining traction in the Linux world. A workaround to multi-distro fragmentation, frameworks like Snap, AppImage and Flatpak seek to offer simple click-to-install, click-to-use software management to common users. Every now and then, I do some extra rigorous testing, to see whether the new approach makes sense, and whether it's masses ready.
To that end, spurred by a recommendation from a reader, I set about testing Flatpak in CentOS 7.4. I've recently updated my CentOS instance on the G50 laptop, and I'm always trying my best to keep this distro relevant, modern and elegant, like adding the latest 4.x family of kernels. We've also seen how to add latest software to the distro, but now let's try taking it to the very edge of bleeding with Flatpak. After me.
It's quite easy, and the official documentation confirms it. Open a terminal window and type:
yum install flatpak
This will configure the Flatpak framework on your machine. So far so good. The next step is to install Flatpak packages. For the time being at least, Flathub acts as a de-facto almost-official repository for Flatpaks, and you can search for software there, if you're not keen on using the command line interface. Indeed, the lack of a dedicated GUI tool, plus the fact not all GUI software managers support (seamlessly) these frameworks - Flatpak et al - is one of the big drawbacks in this approach. On one hand, you give users simplicity, on the other you force them to do something they didn't want to do in the first place.
I decided to do it the "dumb" way. I downloaded several Flatpaks - which are actually manifests for what the framework needs to do to setup specific programs. When I double-clicked on the downloaded Flatpaks, Gnome Software launched, trying to be the good guy and help me install the programs.
This actually failed quite miserably:
It turns out Gnome Software does not know how to satisfy dependencies for Flatpaks. Anyway, the solution is to use the command line, and this is what I ended up doing. On Flathub, each Flatpak has a mini-description with commands both for how to install and run the software. At least that.
This is NOT trivial. You need to specify the repo you want to use - flathub is there, but I'm not sure about any other (I am, but imagine the ordinary user). Then, the naming convention of programs is weird. Most have the reverse domain name convention, with lots of little dots, like GIMP is actually org.gimp.GIMP - not sure why the word GIMP is needed twice. For Kdenlive, it's org.kde.kdenlive. For Steam, com.valvesoftware.Steam. Very confusing. And nerdy. We've see this with Winepak, too, if you recall.
I started installing some of these latest and greatest software versions - some but very few of which are not available in the conventional distro (third-party) repos. I had to satisfy multiple dependencies, mostly runtime libraries and such (similar to Windows software and games packaging their own dotNET and alike). There was a hefty space penalty, as each program ended up weighing a good 200-300 MB.
flatpak install flathub org.gimp.GIMP
Required runtime for org.gimp.GIMP/x86_64/stable (org.gnome.Platform/x86_64/3.28) is not installed, searching...
Found in remote flathub, do you want to install it? [y/n]:
Then, once you have the software installed, running it is equally quirky. Do not be surprised if you see errors:
error: Invalid id flathub: Names must contain at least 2 periods
flatpak run org.gimp.GIMP
Gtk-Message: 14:10:19.358: Failed to load module "pk-gtk-module"
Missing fast-path babl conversion detected, Implementing missing babl fast paths accelerates GEGL, GIMP and other software using babl, warnings are printed on first occurance of formats used where a conversion has to be synthesized programmatically by babl based on format description
*WARNING* missing babl fast path(s): "R'G'B' double" to "CIE Lab double"
Gtk-Message: 14:11:58.362: Failed to load module "pk-gtk-module"
Well, yes, kind of. But far from perfect. Krita only comes at version 3.3.3, and I've already reviewed version 4.0 several months ago. Furthermore, you can have latest software with standard repos anyway. For instance, Chrome, Skype, Steam will all setup their own repos anyway, so you don't really see any improvement using Flatpaks - and CentOS isn't the most popular desktop distro, like at all, yet it manages just fine. Flatpaks would make a lot more sense if the distro had no third-party software available, which may happen somewhere, some day, but that's not the reality here.
And then, you get the expected discrepancies in how the software is built and packaged. For example, we've seen that snap versions and repo versions of the same program do not always behave the same way. Or look identical. Snap VLC comes with a Qt interface (with a hard-coded DPI), so it looks out of place both in Plasma and especially Gnome desktops.
Here, I had a similar issue. With GIMP 2.10, I installed GIMP extras and GIMP FX Foundry, but this set of plugins was only available for the repo version of Gnome, i.e. 2.8. The latest Flatpak ignored the stuff, which is really a shame, because GIMP needs the extras. And as I tested along, I encountered a few other niggles and issues, none of which are supposed to be there.
I like the approach. I really do. It's sensible, it's practical, it's the right thing for ordinary people, and it can help avoid dependency nightmares when one little library breaks and then the damage propagates across the entire distro stack. But for the time being, the standalone app mechanisms aren't robust enough, and my latest CentOS escapade with Flatpak shows it. Not bad but needs improvement.
Specifically, installations should be entirely GUI - no fiddling - and if the GUI package managers in this or that distro can't handle it, then Flatpak ought to provide its own frontend. There should be no games with command line and ugly dot separated package names. Programs ought to work seamlessly - and be equivalent in quality and capabilities to the ordinary repo stock. Finally, the question of fragmentation remains, because if we end with a dozen Snap-like or Flatpak-like tools, we haven't really done anything. You should try Flatpak in your CentOS, and you will be able to grab some nice and cool applications, but be aware that the experience is still rough, and the road to seamless fun is still long. Take care.