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: also known as snapd, this is core of the snap ecosystem, responsible for the day-to-day running, installation, management and removal of 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.
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.
The current stable version of snapd (the snap daemon) is 2.59, released on the 20th April 2023 to coincide with the release of Ubuntu 23.04 (Lunar Lobster).
The big addition for this release is improved Refresh awareness. Updates for running snaps are now downloaded in the background and only applied when their respective running applications are closed. This works in harmony with held updates, which were introduced in our previous release (snapd 2.58).
Snap refreshes for all and specific snaps can now be delayed (or held, in our terminology) for any period of time, including indefinitely:
$ snap refresh --hold=24h Auto-refresh of all snaps held until 2023-05-26T14:25:58+01:00
Another great addition in snapd 2.59 is the ability to have your home directories anywhere you want. With a single new setting, snaps can now store there user data wherever you store your home. See Home directories for further details.
For more details on holding updates, see Postpone updates with refresh hold.
The previous release included quota group support for journal log limits and the ability for snaps to be signed with an alternative delegated authority with their own constraints.
Previous releases in 2022 contain a lot of background engineering to support Ubuntu Core 22. However, there are a couple of user-facing features, including new support for starred developers and the ability to factory reset a device running Ubuntu Core.
Alongside support for side-loading multiple snaps via the API, and RISC-V support for snap’s security layer, the previous snapd release added a new shared-memory interface. This interface will help snap developers share messages and data between their snaps via the
/dev/shm shared memory device. The kernel-module-load interface is also new and is going to be most useful on embedded devices that need to control their hardware.
Other recent releases have also added significantly to snap’s interface list, including scsi-generic for accessing SCSI Generic (sg) devices, the polkit interface to help with authorisation, desktop-launch to launch snaps from other snaps, raw-input for accessing raw devices directly and the netlink-driver to help transfer data between kernel and user space.
Ubuntu Core remains a focus for snapd development, with new options for setting the swap size, kernel command line customisation (with UC20, UC22 and Grub gadgets), API support for recovery systems and extra snapctl commands to power-off a device after installation and for probing the system mode. These feature follow earlier developments to customise UC2x kernel command line arguments and to create a solution to avoid the need for synchronous kernel and DTB update on a Raspberry Pi, using the little-known (but powerful!) assumes keyword. See Changes in pi/pi-kernel DTB handling for further details.
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.
For more details on snapd releases, take a look at our Release notes or the snapd roadmap on the forum.
The current stable version of Snapcraft is 7.3, released on the 24th February 2023.
The 7.3 release includes the following highlights:
- New Flutter plugin with
- A new kde-neon extension with new content snaps
- Added core22 support to the SCons, Ant and Maven plugins
Previous recent releases added automatic linting with the
core22 base, easy switching between LXD and Multipass build providers and a new store authentication mechanism.
Snapcraft now includes its own linter functionality when working with snaps using the
core22 base. Snapcraft linters run automatically when a snap is packed, and will report any detected errors unless otherwise disabled.
The 7.0 release marked the end of an initial process to rebuild our tools to work across a variety of projects, and many of the changes reflect that development work. This includes a new lifecycle and the introduction of Craft Parts as a generic cross-project mechanism for obtaining data from different sources.
See Snapcraft release notes for a more detailed look at recent Snapcraft releases.
We recently finished a new Snapcraft quickstart guide to help new snap developers familiarise themselves with the process. But there’s also been new documentation on Quota groups, migrating from
core22 and Snapcraft linters.
The release of Ubuntu Core 22 (UC22) was accompanied by a glut of new documentation, including guides for the Raspberry Pi and Intel NUC. We also documented the remodelling process and provided a guide on using remodelling to upgrade a UC20 device to UC22. Another big part of this release, and the wider snap ecosystem, is the introduction of Quota groups. These allow you to set resource limits, such as memory or CPU usage, for a set of snaps.
New documentation has also tracked both snapd and Snapcraft releases, with documentation for all the new interfaces, a new interface template with examples, and new docs on Snapcraft metrics, Snap install modes and Super-privileged interfaces.
Before this, there were new pages on Validation sets and Customising UC20 kernel command line arguments. We also have new installation instructions for one of the latest and most rapidly evolving Linux distributions, Installing snap on Rocky Linux.
Now that Ubuntu 16.04 LTS has reached the end of its standard support period, we’ve documented the process of Snapcraft and Extended Security Maintenance to keep old snaps built with patched packages, plus there’s a new page on Migrating between bases to help updating those old snaps to newer bases.
Other recent updates include pages on Debugging snaps with snap try, Progressive releases, which enable you to deploy your snap in phases, and Package repositories to add extra package sources to your snap build.
We’ve also 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.
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.