The Snapcraft roadmap has been a mystery to most. To solve that, I am presenting the current roadmap for Snapcraft for the 21.10 cycle (which is somewhat aligned with the Ubuntu 21.10 cycle).
Tentative versions and their release dates can be tracked. Links to specifications will be added as they are drafted or approved. Feel free to raise a hand if any of these items match your interests or expertise.
The date specified under each proposed version is the tag date; a version is released to the candidate channel on that day, or the next, depending on infrastructure capacity. A call for testing is made for early participation, lasting a week, after a release reaches the candidate channel.
As usual with any plan, it is subject to change if the need arises.
Snapcraft 4.8
- Release date: 2021-05-26T03:00:00Z
- Status: Released
- Release Notes: Release Snapcraft 4.8 · canonical/snapcraft · GitHub
- Call for testing: Snapcraft 4.8
Details
Stories
Remove experimental flag from package repositories
This feature is finally stable and is documented at https://snapcraft.io/docs/package-repositories.
Bug fixes
apt cache: improve error handling when packages do not have candidates available
project: validate snapcraft yaml before using it
ua manager: install ubuntu-advantage-tools as needed
build providers: set hostname for lxd
dotnet plugin: use https for release metadata url
Snapcraft 4.8.1
- Release date: 2021-06-01T03:00:00Z
- Status: Released
- Call for testing: Snapcraft 4.8.1
Details
This release’s theme was mostly about displaying a warning when using core as a base or no base at all.
Tasks
Channel switch warning when using base: core or no base
A warning to be displayed when using no base or base: core
in snapcraft.yaml
, ensuring publishers dependent on this support know they need to move to the 4.x/stable channel.
Bug fixes
Log to stderr
Print warnings and errors to sdtderr and also log warnings to stderr.
repo: normalize if stage-packages and check types
Snapcraft would incorrectly operate on stage-packages even if no debs were defined (affecting stage-snaps). It would also incorrectly glob directories ending in .pc
Snapcraft 4.8.2
- Release date: 2021-06-15T03:00:00Z
- Status: Released
- Call for testing: Snapcraft 4.8.2
Details
Bug fixes
Not able to run snapcraft login on mac m1
Update brew installation command for multipass
Snapcraft 4.8.3
- Release date: 2021-06-18T03:00:00Z
- Status: Released
- Call for testing: Call for testing: Snapcraft 4.8.3
Details
Bug fixes
Remove pysha3 dependency from snapcraft
Fix whoami schema
https://github.com/snapcore/snapcraft/pull/3539
Add ReviewInProgress status
store: Add ReviewInProgress status by 3v1n0 · Pull Request #3533 · canonical/snapcraft · GitHub
Snapcraft 5.0
- Release date: 2021-07-21T03:00:00Z
- Status: Released
- Call for testing: Call for testing: Snapcraft 5.0
This release has an emphasis on cleaning up the code base to remove the use of core. This will be transparently supported on Snapcraft - Snaps are universal Linux packages and Launchpad by using Snapcraft’s 4.x
channel track.
Stories
Snapcraft Metrics command
Add the possibility of viewing the status of a given snaps population segregated by OS/distribution
- Specification: Snapcraft Metrics
Add Metadata Links to snapcraft.yaml
New feature to add links to snapcraft.yaml
in a friendly way that get translated into a more wire protocol friendly syntax for snap.yaml
which in turn would be consumed by the Snap Store for presentation purposes. Links would be those like: donation url, contact, issue or bug tracking, etc.
- Specification: Snapcraft metadata links - #2
Tasks
Replace Snapcraft’s use of the Snap Store’s account-info with whoami
This task has been dropped.
This API endpoint is much faster, older Snap Store APIs require passing in the snap-id
which this can help improve performance on.
Remove unsupported bases from spread tests
The unsupported tests are essentially those that require core
or no base. Those will be kept in the 4.x branch.
Remove support for base core16
While core16
never came to be, Snapcraft has had logic around this to support it once it was available, now that Ubuntu 16.04 has entered ESM, it is no longer useful to have moving forward.
Core base removal by sergiusens · Pull Request #3544 · canonical/snapcraft · GitHub
Remove support for base core
This is one of the reasons for the version bump to 5.0. Publishers needing continued support for base: core
will be using the 4.x track.
Core base removal by sergiusens · Pull Request #3544 · canonical/snapcraft · GitHub
Remove snapcraft-legacy re-exec entry point
Snapcraft has for the longest time, since the introduction of bases, kept two code bases inside the same product. When no base is detected, Snapcraft would have re-executed itself into the old code base. The absence of a base in snapcraft.yaml
triggered this behavior for backwards compatibility. Since the absence of a base essentially meant building for an Ubuntu 16.04 target and this target has entered ESM, it is also being removed and another reason for the version bump to 5.0. Publishers needing continued support for base: core
will be using the 4.x track.
There are various commands that leverage this re execution logic.
Merge pull request #3543 from snapcore/core-legacy-- · canonical/snapcraft@50e034a · GitHub
Convert use of core warning in hard error
A warning was introduced in Snapcraft 4.8.1, this should now be appropriately adapted into an error.
Snapcraft 6.0
- Release date: 2021-09-21T03:00:00Z
- Status: In Progress
- Call for testing: In Progress
This release’s storyline is a bit of a mix, many threads to follow.
The theme is all about making Snapcraft easier to use inside an Enterprise with features like offline mode and use of LXD by default.
The gaming extension comes into play to solve most of the hassles around the nuances required to set up alsa to correctly work within the context of a snap (which most games use) and other bits and pieces (i.e.; common libraries).
Additionally, reusing some of the newer components that have spawned out of Snapcraft’s core, such as craft-providers (the component that handles Multipass and LXD environments). Together with the migration of Snapcraft to core20, Snapcraft will internally benefit from an up to date technology stack.
Stories
Migrate Snapcraft to use craft-providers
This task has been postponed.
Craft Providers is the newer logic around creating build environments, documented on https://craft-providers.readthedocs.io/en/latest/. Code is hosted at GitHub - canonical/craft-providers: Python interfaces for instantiating and executing builds for a variety of target environments.
- Specification:
Gaming extension
This task has been postponed.
Bytecode re compilation for conflicts between parts
This task has been postponed.
Debsource plugin for parts
This task has been postponed.
LXD by default when the host is Linux
This task has been postponed.
- Specification: [DRAFT] LXD by default for Snapcraft when on Linux
snapcraft --offline
Allow for passing in --offline to any of the life cycle commands to ensure no update requests are made on the network. Failing as soon as possible if there is an inconsistency. For the case of build providers, analysis is needed to see if the default network routes can be removed completely to ensure things out of Snapcraft’s control (such as network dependent commands inside the build systems)
- Specification: Snapcraft Offline Mode (proposal)
Tasks
Migrate Snapcraft’s base to core20
This migration is tricky as moving to core20 means dropping i386 support, this is the reason for the major version bump.
- Specification: