2016-07-23 2:46 GMT+02:00 Neal Gompa <ngompa13(a)gmail.com>:
Over the course of this week, I've been involved in the first Snap
sprint focused on making the Snap system broadly useful and workable
across a wide variety of Linux distributions. While I obviously did
not represent Fedora in any official capacity (and I'm not even really
sure it's possible for a person to represent such a diverse community
such as ours), I ensured that Fedora was part of the conversation when
it came to evolving the Snap system.
Thanks Neal for sharing your notes.
It's interesting to have accurate status of snappy on Fedora.
There are some interesting highlights from the event that I think
quite relevant to Fedora:
* Snaps are intended to evolve beyond Ubuntu. While snaps have their
origins in Click for Ubuntu Touch user apps, the Snap system is
clearly designed to support a broader array of capabilities and
systems. Snaps can be used to handle OS components, services, CLI
tools, desktop applications, build environments, web services, and so
Well, I know first hand, that non-Ubuntu system support is still alpha at best.
It's welcome that Canonical is working to expand support to other
distributions, windowing system, and kernel security modules, though.
* Runtimes are supported in snaps. While technically there's no
specific "type" of snap, it's possible to build a snap that contains
common libraries and services that can be connected to other snaps.
This is done through the "plugs" and "slots" that can be used to
create interfaces among them. This is a true superset of the
capability provided by Flatpak through Portals, since it can be used
to export non-DBus oriented communications mechanisms. This is
described on the Snapcraft documentation.
I wouldn't be so affirmative on that, it slightly inaccurante but I'll
let people with more knowledge of flatpak internals answering that.
* SELinux-based confinement is a _very_ high priority. As most know,
snapd currently only works on systems using AppArmor and seccomp, and
only those using AppArmor patches developed by Ubuntu that are in the
process of being upstreamed. For SELinux support, we aren't exactly
sure how this will be pulled off. I proposed something along the lines
of how confinement works for Docker containers and virtual machines
(sVirt), but I'm not sure if that's the right approach for enabling
proper confinement while allowing the sandboxes to support the
interconnection capabilities of snaps. The way that the Snap system
enforces confinement using AppArmor and seccomp is by generating a
profile for the snap on the fly that defines what it can and cannot do
and access for the mounted snap filesystem (from the squashfs image).
This policy is applied, locking down the snap's environment. I'm
curious to hear from others on how the approach should be for
providing confinement using SELinux.
To be more precise, until recently, snappy website recommended to
setenforce 0 as it didn't interact well with SELinux.
That statement was removed though it's still not fixed.
* Detection and auto-configuration of confinement is coming.
Snap-confine currently relies on build time configuration to figure
out whether it should support confinement. However, this will change.
Snap-confine will be merged into snapd and snapd will be set up to
query and set up whatever confinement is possible, given the
information returned from the kernel and systemd about what
confinement mechanisms are supported.
* The snap format is simple and lends itself to being able to be
generated by many kinds of tools. While the current main tool used to
make snaps is Snapcraft, there's no reason someone couldn't build a
"snapbuild" (like rpmbuild, debbuild, and pkgbuild) that could
theoretically use RPM spec format (or a derivative of it) to build
* Snapcraft is currently Ubuntu specific, but will be reworked to
remove that. Snapcraft and the snapcraft.yaml format will change to
enable easily and reproducibly building snaps using Debian and RPM
based distro bases in addition to Ubuntu. The goal is to make it
possible for a distribution like Fedora to be able to easily add
support for building snaps and snap parts from Fedora infrastructure
using Fedora packages/software, along the lines of what we do now for
Docker images, so that people can use them in their own snaps or
* The VideoLAN project now officially offers a VLC snap, and the
Elementary OS folks are working on snaps for their Pantheon Desktop
applications and tying it to an Elementary GTK runtime snap.
Similarly, the KDE Neon folks are developing a KDE Frameworks 5
runtime snap and building application snaps to use them.
* Using snapd with alternative stores is possible. In fact, the tests
done on snapd builds rely on a "fake store" set up locally to be able
to test all the functionality. The store API is fully documented
and there's even a simple implementation of it.
In practice, distributing snap packages requires relying on
Canonical's proprietary store, as the client is tied to that API.
Yes, one can implement its own store, but no guarantee that the API
won't change in the future, nor that Canonical will accept to let the
community participate in defining that API if they want to.
* Support for snaps to offer AppStream metadata is coming. The
development team is highly interested in implementing support for
AppStream so that it's easier for software centers and other tools to
be able to discover and interact with snaps through snapd. Snapd
support for AppStream XML through its API for software centers is
planned as well.
* Fedora packaging of the snap system is under active development.
Zygmunt Krynicki (zyga) is extremely enthused to get the system in
Fedora fully functional, and I'm mentoring him on various aspects of
Fedora packaging, including maintenance and policies.
Great, thanks to Zygmunt!
* Snap development is rather fast, with releases expected to occur
every two weeks. There's no intention to break the API between snapd
and the rest of the system, so interaction points should be fine. The
pace is well-suited for being able to push updates to Fedora in a
timely fashion so that users can get the best experience possible for
using applications and services under the system.
No intention to change interfaces, but still happened recently.
I know that the Workstation WG is very much behind Flatpak right
but I see no reason that we cannot offer both. In fact, it is in the
best interests of our users to fully enable both systems to the best
extent we can, so that they have the freedom to develop and use
applications as they see fit.
There are two things here: first, providing snappy in our
repositories, second, making it our preferred next-gen packaging
format for desktop app.
AFAIK, as long as Fedora Packaging guidelines are respected, there's
nothing preventing the former, it's even encouraged if there are
volunteers to maintain it in Fedora. On the other hand, the latter is
unlikely to happen unlike some company ill-advised marketing press
releases said w/o ever consulting us.
Again, I'm speaking in my own name, but there are significant flaws
that are not in favour of choosing snappy as next-gen packaging
0. flatpak is currently slightly more mature than snappy.
1. contributing to snap requires signing Canonical CLA, that has
proven in the past a powerful repellant to community-based
2. snappy is still essentially a single-vendor project while flatpak
has been developped within the GNOME community by people from various
companies (Red Hat, Collabora, Mozilla, Endless, CodeThink just to
list top contributors).
3. distributing snappy apps still relies on Canonical proprietary
store. Without strong commitment in that read, this will hinder
adoption by other distros.
You can argue that 1 and 2 are non-technical points, but there are
still very relevant within an open source community context.
3. is critical aspect for adoption.
In the end, Fedora contributors will choose whatever projects they
feel like to integrate in Fedora, flatpak, snappy or something
So, what does everyone think of Snappy, given this new information?
Constructive feedback is highly valuable and very welcome, especially
at this early stage!
As a reminder, Neal is no affiliated to Canonical, and I'm grateful
that he accepted to share his vision about snappy.
So please, keep the discussion civilized.
> : http://snapcraft.io/docs/reference/interfaces
> : https://github.com/ascherer/debbuild
> : http://pkgbuild.sourceforge.net/
> : https://bugs.launchpad.net/snapcraft/+bug/1602258
> : https://uappexplorer.com/app/vlc.videolan
> : http://search.apps.ubuntu.com/docs/
> : https://github.com/noise/snapstore
> : https://github.com/snapcore/snapd/blob/master/docs/rest.md
> 真実はいつも一つ！/ Always, there's only one truth!
> devel mailing list