Canonical had a game changing announcement up its sleeve, one that could seriously shift the Linux landscape. Jack Wallen explains why universal snap packages are a major step forward for Linux and open source.
Every so often, I get to sit in on a phone call, video chat, or conversation that absolutely blows my mind. Tuesday, June 14 was one such occasion. I was invited to hear Mark Shuttleworth (founder of Canonical, which produces Ubuntu Linux) discuss a major announcement. Naturally, I assumed the announcement had something to do with Ubuntu Touch (maybe they'd found a major US carrier for the Ubuntu Phone). Little did I know the announcement would be so profoundly game changing.
What was that announcement? Developers from multiple Linux distributions (and companies) are collaborating on the "snap" universal Linux package format. This universal package would enable a single binary package to work perfectly (and securely) on any Linux desktop, server, cloud, or device. In fact, this community of developers (from Arch, Gentoo, Debian, Fedora, and Ubuntu), have come together to create Snapcraft.io. This website provides a publication mechanism for any software in any Linux environment.
Consider this: Any snap package created on Snapcraft will automatically (and perfectly) run on Arch, Debian,
Fedora, Kubuntu, Lubuntu, Ubuntu GNOME, Ubuntu Kylin, Ubuntu MATE, Ubuntu Unity, and Xubuntu and are currently being validated to work on CentOS, Elementary, Gentoo, Mint, openSUSE, OpenWrt, and RHEL. Top that off with the idea that those snaps can easily be enabled for other Linux distributions and you can see just how much of a game changer this is.
If you cannot see just how much of a tectonic shift in the Linux landscape this is, let me explain.
As it stands, there are applications for Ubuntu, Fedora, openSUSE, Gentoo, Arch, Mint, Manjaro, Debian, Elementary, Bohdi...you get the idea. Now in some instances (say Ubuntu and Elementary or Debian), the packages may install on one another. You may also get dependency errors which could lead to broken packages. In some cases, you'll find tools (such as Alien) that enable the building of a Ubuntu DEB package from a Fedora RPM package. Sometimes that works, sometimes it doesn't. Sometimes you'll wind up pulling out your hair...sometimes you won't.
With snap universal packages, this could be a thing of the past for all Linux distributions.
How amazing is that?
It gets better
The profundity of snaps goes well beyond ease of creation and distribution. In today's world, security takes a back seat to nothing (or at least that's how it should be). Snaps also benefit from kernel isolation and security mechanisms (tailored to the snap) which ensure vulnerabilities in the application are contained, as well as a careful vetting process that ensures the snap only receives the necessary permissions to operate. This means users will not have to make complex security decisions when a snap is installed. It also means that security fixes can be pushed out even faster. Who wouldn't want that?
Updates are also improved with snaps. Snap package updates will be automatically delivered. Should the update fail, it is cancelled. Should the update be buggy, it can be easily rolled back to a previous state. All of this combined will drastically improve the flow of features, fixes, and the feedback cycle for commercial and open source applications.
That last bit should be of great importance.
Snaps are not just about open source desktop applications, but about robust, enterprise-ready applications that are well vetted, can be easily installed, and are automatically updated (without fear of anything breaking). The only caveat to this is that Canonical sent out the alert to Red Hat but has yet to hear back from them. This could mean commercial snaps are limited to SUSE.
One issue that was brought up during the call was the idea of snaps for Android. Shuttleworth made it very clear that this is not just a possibility, but "would be trivial" to create those snaps, since the mechanisms already exist in the Android kernel. The implications for this should be quite clear...Linux apps running on Android (and vice versa). Yes, there would be a bit of development time needed to port the apps for an Android snap, but it could happen.
The big caveat
There is one glaring issue involved with snaps. That issue is X11. The X Window System is "leaky" (as Shuttleworth put it) and to really gain a higher level of security, Linux distributions will need to migrated to the newer platforms, such as Mir or Wayland. X11 was first dreamed up in 1984 and it's way beyond time to retire this windowing system. Hopefully more distributions will join in on the switch, once Ubuntu with Unity 8/Mir is released to prove there is a better solution.
Think about it
Imagine going to any Linux distribution and issuing the command snap install androidsdk. If you've ever had to install the Android SDK software the old fashioned way, you know how much of a challenge it can be (and it pales in comparison to some other app installs). With snaps, that nightmare is retooled into a blissful dream. This will hold true with any snap package on any distribution that supports snap (which, hopefully, will mean all distributions). No more dependencies, no more broken, outdated packages, no more frustration.
This is a major win for the Linux landscape and Canonical (and everyone who has worked tirelessly to get snaps off the ground) should be given the praise they deserve.