What's new

Thanks to automatic updates, the tools that make up the snap ecosystem are constantly upgrading and evolving in the background, and this can make it difficult to track changes and new features as they appear.

Below, we outline some of the more significant recent changes to these snap-related tools and their associated documentation:

  • Snap daemon: snapd, the core of the snap ecosystem, responsible for the day-to-day running, installation, management and removal or your snaps
  • Snapcraft: the command line tool that easily builds snaps from a huge range of sources
  • Documentation: where you’ll find everything from quickstart guides to in-depth technical specifications

:information_source: For more general information about Snap, take a look at Getting started, and if you want to build your own snaps, see the Snapcraft overview.

Snap daemon

The current stable version of snapd is 2.47.

New features in this release include better XDG desktop portal support, improvements to the CUPS interfaces, and our initial support for disk space awareness. For devices, there’s a new snap reboot command to help a system boot into a recovery mode, and there’s now an option to disable console-conf when initialising an Ubuntu Core device.

Other recent changes in snapd have added a variety of new interfaces, including system-packages-doc to help read system documentation, the uinput interface to access user devices from /dev/uinput, and the system-source-code interface to allow snaps access to the host’s kernel config, source code and headers.

Another new feature, an experimental gdbserver option, can help when a snap is crashing or not behaving as expected.

$ snap run --experimental-gdbserver test-snapd-tools-core18.echo "hello gdb"

The above compliments the snap run --gdb option that can already be used to debug executables running within a snap environment. For more information, see gdbserver option.

A lot of recent work in snapd has been to integrate and support core20, a new base for snap deployment and development. It’s built on the most recent Ubuntu 20.04 LTS (Focal Fossa) release, and brings with it many of the same advantages.

This work has also been integral to the creation of Ubuntu Core 20, the next generation of Ubuntu-built-from-snaps. Ubuntu Core 20 features full disk encryption via TPM, a recovery mode and recovery chooser, along with enhanced Raspberry Pi support. See Ubuntu Core 20 for more details.

For more details on what’s planned for each snapd release, see the snapd roadmap.

Snapcraft

The current stable version of Snapcraft is 4.3.

The Snapcraft team recently announced the release of Snapcraft 4.0, a major update to the tool that most of us use to build snaps.

This update overhauled the plugin system to version 2, which included lots of work to re-engineer older plugins to with the core20, and a new package-repositories schema to add additional repositories and components.

Snapcraft 4 also promoted the --use-lxd option to stable, allowing you to build snaps within an LXD container for faster and less-resource heavy builds.

Since the release of Snapcraft 4.0, there have been several updates:

See Snapcraft release notes for a more detailed look at recent Snapcraft releases.

Documentation

We’ve made some tentative first steps to produce a troubleshooting page to help users identify the most common issues and hopefully their solutions. And with the recent additions of Flutter and ROS (1 and 2) extensions, the list of Snapcraft extensions has grown enough to warrant a separate page, which we’ve called Supported extensions.

For snap developers, we’ve added a guide to help build Flutter applications, a page to describe the differences between Public, Private and Unlisted snaps, the technical details behind our Security policy and sandboxing, and some guidance for Debugging snaps. The latter has been expanded to include details on using the excellent (and snap embedded) gdb and gdbserver.

We’ve also added an example implementation and, some real-world example scripts, to the Add snap configuration documentation. This hopefully makes adding configurable options to your own snaps easier.

There have also been many community contributions to our documentation recently. These include pages to describe Using launchers, building Desktop applications and using Snapcraft Extensions.

If you want to know more about how interface auto-connections are handled, take a look at the interface auto-connection mechanism, where we’ve outlined the process.

We’ve also revised the Snapd REST API reference page and written a guide to Using the REST API. Finally, if you want to look at what’s coming in snapd 2.47, take a look at Disk space awareness.

Most of this documentation can be collaboratively discussed and changed on the respective topic in the doc category of the Snapcraft forum. See the documentation guidelines if you’d like to contribute.

4 Likes

Good update, thanks. Nice to see the new plugins gaining momentum.

The thing I’m most interested to know is, when are we going to see gnome extensions for core20? Is there another gnome-3-XX due any time soon?

Cheers.

1 Like