News today from the Linux world about a new Linux package format, developed by Canonical, that has surprisingly seen buy-in and collaboration from a host of different distributions.
For those unaware of the trials and tribulations of the Linux world, there are many individual distributions with seemingly arcane differences, which makes building applications for Linux a far from simple thing. Application vendors can't simply "build for Linux" -- they need to build to a huge variety of different distributions from initiatives such as Arch, CentOS, Debian, Elementary, Fedora, Gentoo, Kubuntu, Lubuntu, Mint, OpenSUSE, OpenWrt, RHEL, Ubuntu GNOME, Ubuntu Kylin, Ubuntu MATE, Ubuntu Unity and Xubuntu.
But what would happen if there was a standardized Linux packaging format which would enable applications to run instantly on any Linux desktop, server, cloud or device?
That is, somewhat unintentionally, the result of the years that Canonical (home of Ubuntu) has spent on a mobile journey. When Canonical first considered introducing a mobile phone a couple of years ago, it needed to work out how to resolve the issues around delivering Ubuntu-specific applications onto a mobile device. Its solution was the snap Linux package format.
But in a gradual awakening, the realization was made that the snap approach was applicable beyond simply a mobile phone -- snaps were a wholly appropriate way of delivering applications within internet of things (IoT) use cases. With that solution found, the next obvious use case was cross-distribution software delivery.
But of course, having an idea for a standard that will resolve issues is a very different thing from actually achieving broad buy-in to that standard. And this is where things get interesting.
As Mark Shuttleworth, founder of Canonical, says it, other people came to him stating that the snap format made lots of sense and that they would be keen to collaborate on the format. On one level, that makes lots of sense -- Ubuntu has, after all, the lion's share of the application support that exists for Linux.
By accepting snaps as a standard, other distros not only get to leverage Ubuntu's exposure, but also generally increase the support for Linux from application developers who now have a one-stop approach toward Linux -- a single package format that is easy to create, offers significant security and management benefits, and removes many of the obstacles to third-party Linux app distribution, from cloud databases to consumer games. For software vendors, it is a tremendous simplification to publish a snap rather than manage diverse package formats and security update mechanisms across many Linux distributions.
"We strive to offer users a great experience and make Firefox available across many platforms, devices and operating systems," said Nick Nguyen, vice president of product, Firefox at Mozilla. "With the introduction of snaps, we are able to continually optimize Firefox, providing Linux users the most up-to-date features."
Canonical, which has the most popular Linux distribution, is in the unique position of (arguably) needing broad support for snaps least, but also being the creator of the snap format. The snap format, designed by Canonical, is handled by snapd, a free software project on GitHub. Porting snapd to a wide range of Linux distributions has proven straightforward, and the community has grown to include contributors from a wide range of Linux backgrounds.
"Most vendors target Ubuntu because of its popularity," said Shuttleworth. "Snaps bring those apps to every Linux desktop, server, device or cloud machine, giving users freedom to choose any Linux distribution while retaining access to the best apps."
IoT gateways and smart edge devices benefit from secure updates
This move isn't only going to benefit application developers and end users, however. Snaps are isolated and can be updated or rolled back automatically, making them a good candidate for IoT devices. Multiple vendors have already launched IoT devices using snaps as the packaging system for apps on this new class of "smart edge" computing.
"We believe snaps address the security risks and manageability challenges associated with deploying and running applications on a single IoT gateway," said Jason Shepherd, director, IoT strategy and partnerships, Dell. "This trusted and universal app format is essential for Dell, our IoT solutions partners and commercial customers to build a scalable, IT-ready and vibrant ecosystem of IoT applications."
A new class of container, designed purely for apps
Snaps are a new type of container class, one that has been designed specifically for apps. The key advantage of snaps over other container formats is that snaps integrate directly with one another and with the system through a set of declared and managed interfaces that provide file sharing, device sharing or other services. This balances security with ease of use.
Each snap is run confined using a range of kernel isolation and security mechanisms, tailored to the snap, ensuring that vulnerabilities in the application are contained to the greatest degree currently possible. A community review process ensures that snaps only receive the permissions they require to operate, which means that users do not have to make complex security decisions when installing the snap.
Updated snaps are delivered automatically, improving the flow of features and fixes as well as the feedback cycle both for commercial applications and for open source applications. Many cloud and web applications make daily or weekly releases. Snaps enable vendors to move at a faster speed, while targeting the stable distributions that are popular with their users.
Complementary to existing Linux packages
Snaps sit alongside the native packages of the base Linux operating system. Each distribution has its own mechanisms to provide the base OS and its updates. Snaps complement the base OS with universal apps that cannot interfere with the base OS or one another. As such, this approach removes some of the inherent complexity that comes from having multiple distributions of Linux available.
MyPOV
This is great -- the plethora of different distributions that exist is confusing and, frankly, annoying. Especially so since it reduces the applicability of applications between distributions. Widespread support for snap will resolve this issue.
Of course, some issues remain, and it will be interesting to see how the other distributions position around this move. While supporting snap, they will likely still try to justify their particular approach and justify distribution divergence -- the very thing that makes snap such a logical move.
This seems to be a win for Canonical on a number of levels, but also a win for both upstream and downstream stakeholders -- one to watch as it progresses, I think.