Published using Google Docs
Snapd SRU Special Case Documentation - Snapd Approved
Updated automatically every 5 minutes

Snapd SRU Special Case Documentation

Introduction

This document explains how SnapD updates deviate from the standard SRU policy, outlining the background, key deviations, and the responsibilities of the SnapD, sponsor, and SRU teams in managing quality and risk. It replaces an earlier version that had become outdated and lacked sufficient detail.

Summary

SnapD is a core Ubuntu component that requires a special SRU process.

Key deviations from the standard SRU model include:

These deviations are necessary to keep Ubuntu systems secure, up-to-date, and consistent across distributions, while enabling developers to use new system capabilities without delay.

Risks are tightly managed through:

This process ensures SnapD delivers at the pace required by its role, while maintaining the stability and trust expected of Ubuntu releases.

Background

SnapD is a background service that manages and maintains installed snaps. It is used on classic Ubuntu (and other distributions) as well as on Ubuntu Core. From the perspective of the SnapD team, a release usually involves both a deb and snap package to serve the needs of desktop, server, cloud and IOT use cases.

An important goal of the SnapD project is to always keep systems up-to-date with the latest security fixes, bug fixes and the latest features, while also enabling developers to access system resources that are initially restricted by interfaces but may be opened in a controlled manner to support new solutions. The SnapD value proposition is to allow installing robust software that can move at a different pace than distributions, in a rolling release model. In order to fulfill this, it needs to provide a security-maintained, consistent and up-to-date runtime environment for them across distributions and distribution versions. The SnapD design, development and release processes have been designed to minimize the risks associated with maintaining this level of “up-to-dateness”.

Classic systems

Ubuntu Core systems

Exceptions

Categorization

SnapD falls into the following overlapping special types of SRU:

This process deviates from the standard guidelines to accommodate its goal to always keep systems up-to-date with the latest bug fixes and features

Updates to SnapD may involve minor upstream releases (dot releases) that focus exclusively on fixing bugs

SnapD updates may also include upstream releases that introduce new features. These major updates are carefully designed to ensure backward compatibility. It is possible to gate new features using experimental flags that require user opt-in to be enabled. This is used when deemed necessary by the SnapD architect.

Interfaces enable controlled access to a specific set of system resources and other snaps. It regularly happens that new interfaces or extensions are necessary to empower creators with the system resources they need to develop and enhance their applications.

All SnapD releases, regardless of the exact category, are required to comply with the same thorough QA process.

Deviations requiring sign-off

SnapD requires the following deviations from what is acceptable to SRU to support its goal of always keeping systems up-to-date and enable creators to access not-yet-supported system resources.

Process

Package behavior

Quality Assurance

Refer to the SnapD release process for details.

Release Targets

Releases for the different targets must share the same source tree, with the only difference being the additional “backport” entry at the top of debian/changelog. See SnapD versioning.

Key Integrations and Interactions

Refer to the SnapD Key Integrations/Interactions on Classic Systems for more details.

Upload Process

Refer to the SRU Bug template for details about the required documentation.

Review/Sponsoring

The SnapD team requires the help of a dedicated Ubuntu Team member (core-dev) to copy the applicable source packages available in `ppa:snappy-dev/image` to -unapproved for all targeted Ubuntu releases. This must be explicitly requested by the SnapD release manager as shown in the SRU bug template. In the future when SnapD Team member(s) qualify as sponsors, this dependency may fall away.

Workflow and responsibilities

Preparation:

Development release:

Interim and LTS releases:

Review

It is generally not required to review all the individual pull requests, with the exception of  packaging and service changes. A review should cover at least the following:

SRU Template

Sponsoring Request

The following information is required from the SnapD release manager to initiate the upload process:

This is a new SnapD release.

SnapD [bugfix only] release 2.XX[.X] should be released to:

 - [Development Release]

 - [Latest LTS]

 - ...

 - [Oldest LTS]

The SnapD package deviates from the standard SRU process. The following special SRU process was followed: https://documentation.ubuntu.com/sru/en/latest/reference/exception-Snapd-Updates

Release preparation: < Github release PR URL >

Release preparation test results: < Github release PR test results URL >

Release notes: < Changelogs commit URL >

Launchpad bugs addressed: <URL(filter)>

Packaging and Service changes:

 - [Packaging changes]

 - [Service changes]

Content overview:

 - [Features]

 - [Bug fixes]

 - [Creator support changes]

 - [Other]

Areas of potential regressions:

 - <Potential regression | <URLs to relevant PR(s)>

...

Source packages on `ppa:snappy-dev/image` for upload to -proposed:

 - < Development Release URL>

 - < Interim release URL>

 - < Latest LTS URL >

 - ...

 - < Oldest LTS URL >

Validation already completed:

 - Release PR test results: <URL to relevant PR >

 - QA beta validation: <JIRA URL>

 - SnapD deb testing on `ppa:snappy-dev/image`: <JIRA URL>

Validation required before release:

- Autopkgtests on -proposed for all targeted releases

- SnapD deb testing on -proposed

- SnapD snap testing

Final Test Feedback

The following updates from the SnapD QA engineer is required before considering releasing to -updates:

Autopkgtests on -proposed for all targeted releases: <RESULT>

SnapD deb testing on -proposed: <RESULT>

SnapD snap testing: <RESULT>

Open discussion points & board meeting prep (SnapD internal)

Document History

Date

Status

Author(s)

Comment

2023-12-06

Drafting

Ernest Lotter

Created draft document incorporating information from existing https://wiki.ubuntu.com/SnapdUpdates and providing more detail as requested by SRU Team to be closer to https://wiki.ubuntu.com/UbuntuAdvantageToolsUpdates.

2023-12-12

Drafting

Ernest Lotter

Made corrections according to Samuele Pedroniinitial review.

2025-01-08

Drafting

Ernest Lotter

Made corrections according to Andreas Hasenackinitial review.

2025-01-08

Drafting

Ernest Lotter

After meeting with Andreas Hasenackimproved Upload Process details regarding sponsorship and reviews.

2025-01-10

Drafting

Ernest Lotter

Investigated and added a more comprehensive list of Key Integrations and Interactions.

2025-01-15

Drafting

Ernest Lotter

After meeting with Gustavo Niemeyer, Samuele Pedroniextended explanation of Snapd goal as justification for auto-install & re-execution.

2025-01-20

Pending Review

Ernest Lotter

Minor improvements after Sergio Cazzolatoreview

2025-01-20

Pending Review

Ernest Lotter

Minor improvements after Alex Murrayreview

2025-01-28

Pending Review

Ernest Lotter

Incorporated feedback from Christian Ehrhardtfollowing meeting on 21 Jan. Also made improvements  based on a comment from Robie Basak.

2025-02-19

Pending Review

Ernest Lotter

Made tweaks based on review feedback from Julian Andres Klode

2025-03-05

Pending Review

Ernest Lotter

Cleaned up and added the open points summary section.

2025-08-29

Pending Review

Nick Dyer

Review (this was done on old document, comments was carried over by Ernest Lotter)

2025-09-23

Approved

Ernest Lotter

Approved by Snapd Team, which includes input from reviews from other teams as well.