UbuntuProForWSLUpdates

Differences between revisions 19 and 28 (spanning 9 versions)
Revision 19 as of 2023-11-27 11:02:58
Size: 14975
Editor: paelzer
Comment: Updated the last remaining paragraph that was still discussed with the wording provided by Steve Langasek
Revision 28 as of 2024-09-09 11:59:37
Size: 16201
Editor: jibel
Comment:
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
Ubuntu Pro is a suite of additional services provided by Canonical on top of Ubuntu. It is an essential part of the Ubuntu ecosystem: as well as providing services often required by commercial Ubuntu users, it also provides a mechanism to fund Ubuntu development itself.

Ubuntu Pro provides packages outside Ubuntu's main archive, so it is often necessary to enable extra apt repositories to receive Ubuntu Pro services. In many cases, further system configuration changes are also required.

Ubuntu Pro provides tooling to make these configuration changes easy for users. However, this results in a circular UX problem: if this tooling were shipped in the additional Ubuntu Pro apt archives, then users would face complexity in the form of multiple steps to fully configure their systems for Ubuntu Pro services.
Ubuntu Pro is a suite of additional services provided by Canonical on top of Ubuntu. It is an
essential part of the Ubuntu ecosystem: as well as providing services often required by commercial
Ubuntu users, it also provides a mechanism to fund Ubuntu development itself.

Ubuntu Pro for WSL extends Ubuntu Pro services specific to WSL. It offers compliance services
tailored for WSL instances and manages these instances by automatically attaching to Pro and
registering them in Landscape.

In a large organisation, numerous repetitive steps are necessary to maintain compliance. Ubuntu Pro
for Windows streamlines this process by automating these tasks across the entire enterprise
landscape.

Ubuntu Pro for Windows is beneficial for corporate security teams, system administrators, and
desktop users, who would otherwise have to individually and manually manage instances.

The project is made of 2 components:

 * A Windows agent installed from the Microsoft Store
 * An Ubuntu service installed from the archive.

For context, on WSL, only LTS releases are published and supported. There are three categories of
images:

 * '''Ubuntu Preview''': This is the current development release. Given it's development nature, it is outside of the scope of this exception.

 * '''Ubuntu LTS''': These are all the supported LTS versions of Ubuntu starting from 18.04 onward. Those are updated regularly to .1, .2, .3 following Ubuntu release cycle.

 * '''Ubuntu''': It is another application in the Microsoft Store of the latest stable LTS release of Ubuntu . The base image must be the same as the latest LTS published to the store. This will be updated to .1, .2, .3.

The scope of the SRU is the Ubuntu Pro service on LTS releases back to 20.04.
Line 11: Line 36:
Since we want to make access to Ubuntu Pro easy for Ubuntu users, we resolve the circular UX problem by making the exception that we will place and maintain the facilities that enable access to Ubuntu Pro in the main Ubuntu archive itself. This includes feature updates to these facilities as services provided by Ubuntu Pro change over time and as tooling is improved, including in stable Ubuntu releases during their lifetimes.

We do not generally accept changes in the main Ubuntu archive after an Ubuntu release has reached End of Standard Support, but we make an exception for Ubuntu Pro facilitation since Ubuntu Pro services include support in the time period between End of Standard Support and End of Life, and significant updates to facilitation tooling are often required in this period.

The primary package providing Ubuntu Pro facilitation is ubuntu-advantage-tools. Other packages are also involved and exceptions for those will be handled by the SRU team on a case-by-case basis. Updates to ubuntu-advantage-tools are required more frequently, so below we define specific policy and process and requirements for handling these exceptional uploads to ubuntu-advantage-tools, in order to reduce review iteration and changes for these updates.

Since these feature changes may land in stable releases at any time, adhering to feature freeze during the development cycle would be counterproductive as those changes would be forced to land after release instead. Therefore, feature freeze will not apply when the changes are in scope of this document. However, from beta freeze on uploads of this package will be subject to the same additional scrutiny by the Release Team as any other package.
Ubuntu Pro for WSL, being an extension of the Ubuntu Pro suite,
[[https://wiki.ubuntu.com/UbuntuAdvantageToolsUpdates|adheres to similar exceptions]]. In
particular, we will place and maintain the facilities that enable access to Ubuntu Pro in the main
Ubuntu archive itself. This includes feature updates to these facilities as services provided by
Ubuntu Pro for WSL change over time and as tooling is improved, including in stable Ubuntu releases
during their lifetimes.

We do not generally accept changes in the main Ubuntu archive after an Ubuntu release has reached
End of Standard Support, but we make an exception for Ubuntu Pro facilitation since Ubuntu Pro
services include support in the time period between End of Standard Support and End of Life, and
significant updates to facilitation tooling are often required in this period.

The key package enabling Ubuntu Pro on WSL is {{{wsl-pro-service}}}, which relies solely on
{{{ubuntu-pro-client}}}, already an exception. In cases where frequent updates to
{{{wsl-pro-service}}} are needed, we have established specific policies and processes to manage
these exceptional updates efficiently, minimising review iterations and changes.

Given that these updates may occur in stable releases at any time, adhering strictly to the feature
freeze during development cycles would be impractical, as it would delay necessary changes until
after release. Therefore, feature freeze rules do not apply to changes covered in this document.
However, starting from the beta freeze, uploads of this package will undergo the same rigorous
review by the Release Team as any other package.
Line 23: Line 63:
 1. [TB] Facilities that enable access to Ubuntu Pro may be added to the main Ubuntu archive and installed by default.

 1. [SRU] Feature updates are permitted subject to SRU team review on a case-by-case basis, and for the ubuntu-advantage-tools package according to the policies, processes and limitations specified by the SRU team and documented below.

 1. [TB? SRU? Unclear] Updates shall be permitted as usual for SRUs and additionally after EoSS.

 1. [Release team] Feature freeze in the development release shall not apply.

= Updating the ubuntu-advantage-tools package =
 1. [TB] Facilities that enable access to Ubuntu Pro for WSL may be added to the main Ubuntu archive and installed by default.

 2. [SRU] Feature updates are permitted subject to SRU team review on a case-by-case basis, and for the wsl-pro-service package according to the policies, processes and limitations specified by the SRU team and documented below.

 3. [TB/SRU] Updates shall be permitted as usual for SRUs and additionally after EoSS.

 4. [Release team] Feature freeze in the development release shall not apply.

= Updating the wsl-pro-service package =
Line 35: Line 75:
The ubuntu-advantage-tools package has key interactions with the following system components:

 * apt and snapd
 * upda
te-manager, update-notifier and unattended-upgrades
The wsl-pro-service package has key interactions with the following system components:

 * ubunt-pro-client (formerly ubuntu-advantage-tools)
Line 42: Line 81:
Even though Pro itself is opt-in, this package that provides it is installed on all Ubuntu systems (see LP: #1950692), and therefore we have to be very careful that all reasonable use cases, not just Pro use cases, will remain unaffected by any changes made to this package.

Sometimes this extends beyond what we might consider to be supportable configurations; we try to stretch so that no user who appears to have an otherwise functional system is affected by this package or by changes to it.
Even though the service itself is opt-in and requires a subscription, this package is installed on
all Ubuntu WSL systems, and therefore we ha
ve to be very careful that all reasonable use cases, not
just Pro use cases, will remain unaffected by any changes made to this package.

Sometimes this extends beyond what we might consider to be supportable configurations; we try to
stretch so that no user who appears to have an otherwise functional system is affected by this
package or by changes to it.
Line 49: Line 92:
Line 51: Line 93:

* Users who have modified their system Python installations.

 * Users
who have taken efforts to remove or disable Pro somehow, such as modifications and removals of configuration files in /etc, disabling or masking of systemd services, or any other generally supported mechanism.
 * Users who have taken efforts to remove or disable Ubuntu Pro or wsl-pro-service somehow, such as modifications and removals of configuration files in /etc, disabling or masking of systemd services, disabling or restricting Windows interoperability or any other generally supported mechanism. In this case, the instance will stop being managed by Ubuntu Pro for WSL. It may still be registered in Landscape though.
Line 58: Line 96:
In general we should avoid taking any additional action unless a user has specifically opted in to Ubuntu Pro services, such as Internet access, steps during boot that would take additional time, or enabling system services or timers. Where default system configuration is affected, we should leave a documentation trail starting at any point a user might observe it that will give non-Pro users confidence as to why their system will not be affected.

For example, in previous updates we have done the following:

 1. We limited the scope of auto-attach checks by only checking for this on clouds that support the feature, since cloud-init already knows what cloud we're on. This makes auto-attach detection have zero side effects on the majority of Ubuntu systems.

 1. We mark files that we drop in /etc with appropriate documentation for non-Pro users.
In general we should avoid taking any additional action unless a user has specifically opted in to
Ubuntu Pro services, such as interoperability settings, general WSL settings, Internet access, steps
during boot that would take additional time, or enabling system services or timers. Where default
system configuration is affected, we should leave a documentation trail starting at any point a user
might observe it that will give non-Pro users confidence as to why their system will not be
affected.
Line 68: Line 105:
As the Pro service evolves, new versions of the Pro client implement upgrade paths to seamlessly move Pro users to updated and supported Pro system configurations. For example, ubuntu-advantage-tools.postinst contains upgrade path code that moves or otherwise migrates files that contain state, and the latest Pro client depends on the updated state formats and locations.

This has the consequence that upgrade paths need to be maintained nearly forever. For example, within a single release, a user might not be installing updates for years whether with or without Pro enabled, then upgrades everything. Upgrading from the release pocket version of the Pro client
all the way up to the latest version must therefore be supported. For us, this effectively means that we have to support upgrading from any version that the user could have installed all the way up to the latest version.

We do have the rule that prior to a release upgrade, users are expected to be fully up-to-date, and that we do not support upgrading further than an LTS at once. This does set an upper bound and allow us to discard code supporting very old upgrade paths, but you’ll note that since the Pro client is maintained as a single source tree that applies to all releases, the code base going into the development release still has to carry all the old baggage going all the way back to the oldest non-EOL release at that time.

This is a considerable burden and should be considered when designing components that require state, or in deciding upon making changes to state schema.
As the Pro for WSL service evolves, new versions implement upgrade paths to seamlessly move Pro
users to updated and supported Pro system con
figurations. For example, wsl-pro-service.postinst must
contain upgrade path code that moves or otherwise migrates files that contain state, and the latest
WSL
Pro Service depends on the updated state formats and locations.

This has the consequence that upgrade paths need to be maintained near
ly forever. For example,
within a single release, a user might not be installing updates for years whether with or without
Pro enabled, then upgrades everything. Upgrading from the release pocket version of the WSL Pro
service
all the way up to the latest version must therefore be supported. For us, this effectively
means that we have to support upgrading from any version that the user could have installed all the
way up to the latest version.

We do have the rule that prior to a release upgrade, users are expected to be fully up-to-date, and
that we do not support upgrading further than an LTS at once. This does set an upper bound and allow
us to discard code supporting very old upgrade paths, but you'll note that since the WSL Pro service
is maintained as a single source tree that applies to all releases, the code base going into the
development release still has to carry all the old baggage going all the way back to the oldest
non-EOL release at that time.
Line 78: Line 126:
 * If an update targets one stable release, it must also target all subsequent releases (whether interim or LTS) and the development release.

 * All releases shall share the same source tree, with the only difference being the additional backport entry at the top of debian/changelog. This is to make the process simpler, and so the process documented here assumes this.
 * Interim releases are not produced nor supported for WSL. If an update targets one stable release, it must also target all subsequent LTS releases and the development release.

 * Wsl-pro-service will be uploaded to non-LTS interim releases for consistency. However, since we do not produce WSL images for non-LTS interim releases, it cannot be verified.

 *
All releases shall share the same source tree, with the only difference being the additional "backport" entry at the top of debian/changelog. This is to make the process simpler, and so the process documented here assumes this.
Line 84: Line 134:
ubuntu-advantage-client repo has a suite of automated integration tests that cover AWS Pro, LXD container and KVM images and exercises the bulk of features functionality delivered on all supported releases, i.e. LTS releases both active or ESM, and the active interim releases. . CI runs both tip of main against daily cloud-images and against any https://github.com/canonical/ubuntu-advantage-client/pulls before merging.

Updates to tip of [[https://github.com/canonical/ubuntu-advantage-client/tree/main|ubuntu-advantage-tools:main]] go through the following process:
The QA process is detailed in [[https://canonical-ubuntu-pro-for-wsl.readthedocs-hosted.com/en/latest/dev/reference/09-qa-process-reference/|upstream QA documentation]].

[[https://github.com/canonical/ubuntu-pro-for-windows/actions/workflows/qa.yaml|wsl-pro-service repo]]
has a suite of automated integration tests that cover WSL in Azure and on real hardware. It
exercises the bulk of features functionality delivered on all supported releases, i.e. LTS releases
both active or ESM from 20.04 onwards, as well as the development release.

CI runs both tip of main against daily [[https://cloud-images.ubuntu.com/wsl/|cloud-images]] and
against any [[https://github.com/canonical/ubuntu-pro-for-windows/pulls|Pull requests]] before
merging.

Updates to tip of
[[https://github.com/canonical/ubuntu-pro-for-windows/tree/main|ubuntu-pro-for-windows:main]] go
through the following process:
Line 96: Line 157:
Further details to the upstream release process are documented in the [[https://github.com/canonical/ubuntu-pro-client/blob/docs/dev-docs/howtoguides/release_a_new_version.md|“how to release guide”]].  * Upgrades to interim releases are not supported and will not be tested.
Line 102: Line 164:
The change log will contain a reference to the SRU process bug, as well as all pre-existing Launchpad and GitHub bugs that are fixed; however, not all changes will be represented by an individual Launchpad bug.

Major changes must be called out, especially where changed behavior is not backward compatible.

Any packaging changes (e.g. a dependency change) need to be stated, and appropriate separate test cases provided.
The change log will contain a reference to the SRU process bug, as well as all pre-existing
Launchpad and [[https://github.com/canonical/ubuntu-pro-for-windows/issues|GitHub]] bugs that are
fixed; however, not all changes will be represented by an individual bug tracker's bug.

Major changes must be called out, especially where changed behaviour is not backward compatible.

Any packaging changes (e.g. a dependency change) need to be stated, and appropriate separate test
cases provided.
Line 112: Line 177:
 1. How the tool interacts with apt.
Line 115: Line 178:
 1. How the tool interacts with ubuntu-pro-client (formerly ubuntu-advantage-tools).
 1. Anything that changes Windows interoperability.
 1. Anything that changes WSL default behaviour.
Line 117: Line 182:
Line 119: Line 183:
Line 121: Line 184:
Line 124: Line 186:
Normally SRUs are expected to be well tested upstream or in the development release to gain confidence in correctness. In this case we don't get wide exposure since the nature of the package is that it is widely used in LTSes only. Normally SRUs are expected to be well tested upstream or in the development release to gain
confidence in correctness.  In this case we don't get wide exposure since the nature of the package
is that it is widely used in LTS only.
However it is still worth testing on non-WSL system that the service doesn't start.
Line 128: Line 193:
Using the normal process would mean that if something is asked to be changed in SRU review, the change has already been uploaded to the development release, and to keep things aligned the development release then has to change again, or we have to diverge causing development and review pain.

Instead, once upstream are ready, all reviewing for the subsequent Ubuntu uploads are done from a single merge proposal on Launchpad:
Using the normal process would mean that if something is asked to be changed in SRU review, the
change has already been uploaded to the development release, and to keep things aligned the
development release then has to change again, or we have to diverge causing development and review
pain.

Instead, once upstream are ready, all reviewing for the subsequent Ubuntu uploads are done from a
single merge proposal on GitHub
:
Line 134: Line 203:
 1. The SRU team then also reviews the proposed upload as they would for a normal SRU review but '''prior to upload''' and iterates on code changes and SRU documentation as required. This is done from the MP rather than the Unapproved queue. To minimise the effort involved in handling the many required uploads to stable releases, the SRU team expects to review just this one MP for the development release, and expects that the subsequent uploads to the stable releases will be identical to what was reviewed except for the straight backport package version and changelog changes.  1. The SRU team then also reviews the proposed upload as they would for a normal SRU review but
'''prior to upload''' and iterates on code changes and SRU documentation as required. This is done from the MP rather than the Unapproved queue. To minimise the effort involved in handling the many required uploads to stable releases, the SRU team expects to review just this one MP for the development release, and expects that the subsequent uploads to the stable releases will be identical to what was reviewed except for the straight backport package version and changelog changes.
Line 138: Line 208:
  a. a commit by commit review as presented by upstream, looking for the types of issues [[#Mitigating_Risk|described above]]. This is because that list is not exhaustive, and we have caught multiple issues this way either at this step or later on that have needed fixing.

  a. The usual SRU review checks, such as that all changes made appear to fit within the definition of the exception, that the version numbers are sensible, the Test Plan is reasonable given the specific changes being made, and so forth.
    1. a commit by commit review as presented by upstream, looking for the types of issues
   
[[https://wiki.ubuntu.com/UbuntuProForWSLUpdates#Mitigating_Risk|described above]].  This is because that list is not exhaustive, and we have caught multiple issues this way either at this step or later on that have needed fixing.

    1. The usual SRU review checks, such as that all changes made appear to fit within the definition of the exception, that the version numbers are sensible, the Test Plan is reasonable given the specific changes being made, and so forth.
Line 150: Line 221:
For each Ubuntu release that is targeted by the SRU, successful results of integration testing of the -proposed package for at least the following platforms must be provided.

 * LXD VM and container of all LTS and interim releases targeted by the SRU.
 * EC2 Ubuntu Pro images and standard Ubuntu cloud images on all LTS releases
 * Azure Ubuntu Pro images and standard Ubuntu cloud images on all LTS releases
 * GCP Ubuntu Pro images and standard Ubuntu cloud images on all LTS releases
 * LTS to LTS upgrade test of attached machine for all affected LTS
 * LTS to LTS upgrade test of unattached machine for all affected LTS

If the Test Plan calls for any additional manual testing, such testing and its results must be documented, usually in the associated bugs linked from the changelog.
For each Ubuntu release that is targeted by the SRU, successful results of integration testing of
the -proposed package for at least the following platforms must be provided.

 * Azure Windows 10+ VM with WSL LTS releases targeted by the SRU.
 * Real hardware with Windows 10+ and WSL LTS releases targeted by the SRU.
 * LTS to LTS upgrade test of attached machine for all affected LTS.
 * LTS to LTS upgrade test of unattached machine for all affected LTS.

If the Test Plan calls for any additional manual testing, such testing and its results must be
documented, usually in the associated bugs linked from the changelog.

Interim releases are not produced. Therefore they are not supported and not tested, even for
upgrades.
Line 166: Line 240:
This release brings both bug-fixes and new features for the Pro Client, and we would like to make sure all of our supported customers have access to these improvements on all releases. This release brings both bug-fixes and new features for the Ubuntu Pro for WSL service, and we would
like to make sure all of our supported customers have access to these improvements on all releases.
Line 169: Line 244:
Line 176: Line 252:
https://wiki.ubuntu.com/UbuntuAdvantageToolsUpdates

The Pro Client developers will be in charge of attaching the artifacts of the appropriate test runs to the bug, and will not mark ‘verification-done’ until this has happened.

Besides the full integration test runs, manual tests were executed to verify bugs:

<https://wiki.ubuntu.com/UbuntuProForWSLUpdates>

The Ubuntu Pro for WSL developers will be in charge of attaching the artefacts of the appropriate
test runs to the bug, and will not mark 'verification-done' until this has happened.

Besides the full integration test runs, manual tests were executed to verify bugs:
Line 185: Line 264:
In order to mitigate the regression potential of the changes in this version, the results of the integration tests suite runs are attached to this bug. In order to mitigate the regression potential of the changes in this version, the results of the
integration tests suite runs are attached to this bug.
Line 189: Line 269:
 * Think about what the upload changes in the software. Imagine the change is wrong or breaks something else: how would this show up?

 * This must '''never''' be "None" or "Low", or entirely an argument as to why your upload is low risk.

 * This both shows the SRU team that the risks have been considered, and provides guidance to testers in regression-testing the SRU.
* Think about what the upload changes in the software. Imagine the change is wrong or breaks
something else: how would this show up?

* This must '''never''' be "None" or "Low", or entirely an argument as to why your upload
is low risk.

* This both shows the SRU team that the risks have been considered, and provides guidance to
testers in regression-testing the SRU.
Line 197: Line 280:
 * Anything else you think is useful to include

 * Anticipate questions from users, SRU, +1 maintenance, security teams and the Technical Board and address these questions in advance
* Anything else you think is useful to include

* Anticipate questions from users, SRU, +1 maintenance, security teams and the Technical Board and
address these questions in advance

Background

Ubuntu Pro is a suite of additional services provided by Canonical on top of Ubuntu. It is an essential part of the Ubuntu ecosystem: as well as providing services often required by commercial Ubuntu users, it also provides a mechanism to fund Ubuntu development itself.

Ubuntu Pro for WSL extends Ubuntu Pro services specific to WSL. It offers compliance services tailored for WSL instances and manages these instances by automatically attaching to Pro and registering them in Landscape.

In a large organisation, numerous repetitive steps are necessary to maintain compliance. Ubuntu Pro for Windows streamlines this process by automating these tasks across the entire enterprise landscape.

Ubuntu Pro for Windows is beneficial for corporate security teams, system administrators, and desktop users, who would otherwise have to individually and manually manage instances.

The project is made of 2 components:

  • A Windows agent installed from the Microsoft Store
  • An Ubuntu service installed from the archive.

For context, on WSL, only LTS releases are published and supported. There are three categories of images:

  • Ubuntu Preview: This is the current development release. Given it's development nature, it is outside of the scope of this exception.

  • Ubuntu LTS: These are all the supported LTS versions of Ubuntu starting from 18.04 onward. Those are updated regularly to .1, .2, .3 following Ubuntu release cycle.

  • Ubuntu: It is another application in the Microsoft Store of the latest stable LTS release of Ubuntu . The base image must be the same as the latest LTS published to the store. This will be updated to .1, .2, .3.

The scope of the SRU is the Ubuntu Pro service on LTS releases back to 20.04.

Exceptions

Ubuntu Pro for WSL, being an extension of the Ubuntu Pro suite, adheres to similar exceptions. In particular, we will place and maintain the facilities that enable access to Ubuntu Pro in the main Ubuntu archive itself. This includes feature updates to these facilities as services provided by Ubuntu Pro for WSL change over time and as tooling is improved, including in stable Ubuntu releases during their lifetimes.

We do not generally accept changes in the main Ubuntu archive after an Ubuntu release has reached End of Standard Support, but we make an exception for Ubuntu Pro facilitation since Ubuntu Pro services include support in the time period between End of Standard Support and End of Life, and significant updates to facilitation tooling are often required in this period.

The key package enabling Ubuntu Pro on WSL is wsl-pro-service, which relies solely on ubuntu-pro-client, already an exception. In cases where frequent updates to wsl-pro-service are needed, we have established specific policies and processes to manage these exceptional updates efficiently, minimising review iterations and changes.

Given that these updates may occur in stable releases at any time, adhering strictly to the feature freeze during development cycles would be impractical, as it would delay necessary changes until after release. Therefore, feature freeze rules do not apply to changes covered in this document. However, starting from the beta freeze, uploads of this package will undergo the same rigorous review by the Release Team as any other package.

Summary of exceptions

These specific exceptions require approval by the team indicated.

  1. [TB] Facilities that enable access to Ubuntu Pro for WSL may be added to the main Ubuntu archive and installed by default.
  2. [SRU] Feature updates are permitted subject to SRU team review on a case-by-case basis, and for the wsl-pro-service package according to the policies, processes and limitations specified by the SRU team and documented below.
  3. [TB/SRU] Updates shall be permitted as usual for SRUs and additionally after EoSS.
  4. [Release team] Feature freeze in the development release shall not apply.

Updating the wsl-pro-service package

Integrations and Interactions

The wsl-pro-service package has key interactions with the following system components:

  • ubunt-pro-client (formerly ubuntu-advantage-tools)

Mitigating Risk

Even though the service itself is opt-in and requires a subscription, this package is installed on all Ubuntu WSL systems, and therefore we have to be very careful that all reasonable use cases, not just Pro use cases, will remain unaffected by any changes made to this package.

Sometimes this extends beyond what we might consider to be supportable configurations; we try to stretch so that no user who appears to have an otherwise functional system is affected by this package or by changes to it.

This includes:

  • Regressions caused by the introduction of new dependencies conflicting with existing deployments; for this reason the introduction of new dependencies will generally not be acceptable.
  • Performance regression, for example in boot speed.
  • Users who have taken efforts to remove or disable Ubuntu Pro or wsl-pro-service somehow, such as modifications and removals of configuration files in /etc, disabling or masking of systemd services, disabling or restricting Windows interoperability or any other generally supported mechanism. In this case, the instance will stop being managed by Ubuntu Pro for WSL. It may still be registered in Landscape though.
  • Users running air-gapped or with limited Internet connectivity, and with related system configurations such as proxies and local mirrors.

In general we should avoid taking any additional action unless a user has specifically opted in to Ubuntu Pro services, such as interoperability settings, general WSL settings, Internet access, steps during boot that would take additional time, or enabling system services or timers. Where default system configuration is affected, we should leave a documentation trail starting at any point a user might observe it that will give non-Pro users confidence as to why their system will not be affected.

Maintaining upgrade paths

As the Pro for WSL service evolves, new versions implement upgrade paths to seamlessly move Pro users to updated and supported Pro system configurations. For example, wsl-pro-service.postinst must contain upgrade path code that moves or otherwise migrates files that contain state, and the latest WSL Pro Service depends on the updated state formats and locations.

This has the consequence that upgrade paths need to be maintained nearly forever. For example, within a single release, a user might not be installing updates for years whether with or without Pro enabled, then upgrades everything. Upgrading from the release pocket version of the WSL Pro service all the way up to the latest version must therefore be supported. For us, this effectively means that we have to support upgrading from any version that the user could have installed all the way up to the latest version.

We do have the rule that prior to a release upgrade, users are expected to be fully up-to-date, and that we do not support upgrading further than an LTS at once. This does set an upper bound and allow us to discard code supporting very old upgrade paths, but you'll note that since the WSL Pro service is maintained as a single source tree that applies to all releases, the code base going into the development release still has to carry all the old baggage going all the way back to the oldest non-EOL release at that time.

Requirements

  • Interim releases are not produced nor supported for WSL. If an update targets one stable release, it must also target all subsequent LTS releases and the development release.
  • Wsl-pro-service will be uploaded to non-LTS interim releases for consistency. However, since we do not produce WSL images for non-LTS interim releases, it cannot be verified.
  • All releases shall share the same source tree, with the only difference being the additional "backport" entry at the top of debian/changelog. This is to make the process simpler, and so the process documented here assumes this.

Upstream QA

The QA process is detailed in upstream QA documentation.

wsl-pro-service repo has a suite of automated integration tests that cover WSL in Azure and on real hardware. It exercises the bulk of features functionality delivered on all supported releases, i.e. LTS releases both active or ESM from 20.04 onwards, as well as the development release.

CI runs both tip of main against daily cloud-images and against any Pull requests before merging.

Updates to tip of ubuntu-pro-for-windows:main go through the following process:

  • Reviewed and approved by a member of the development team (Canonical Ubuntu server team only)
  • Daily integration tests on tip
  • Successful run of unit tests, style and integration tests based on the branch
  • Branch manually set to the merged state by the approving development member with commit access.
  • Upgrades to interim releases are not supported and will not be tested.

Upload Process

Documentation

The change log will contain a reference to the SRU process bug, as well as all pre-existing Launchpad and GitHub bugs that are fixed; however, not all changes will be represented by an individual bug tracker's bug.

Major changes must be called out, especially where changed behaviour is not backward compatible.

Any packaging changes (e.g. a dependency change) need to be stated, and appropriate separate test cases provided.

Any architecture-specific fixes need to be noted and architecture-specific test cases provided.

The following types of changes must be called out for explicit SRU review:

  1. How the tool interacts with systemd.
  2. How the tool interacts with ubuntu-pro-client (formerly ubuntu-advantage-tools).
  3. Anything that changes Windows interoperability.
  4. Anything that changes WSL default behaviour.
  5. Anything that changes network traffic patterns, including anything that might "phone home".
  6. Anything that changes the use of persistent processes or scheduled jobs.
  7. Changes that affect what part of the namespace in PATH we consume.
  8. Actions that take place without an explicit user opt-in (running the CLI to perform a specific task counts as opt-in for that task).

Normally SRUs are expected to be well tested upstream or in the development release to gain confidence in correctness. In this case we don't get wide exposure since the nature of the package is that it is widely used in LTS only. However it is still worth testing on non-WSL system that the service doesn't start.

Review/Sponsoring

Using the normal process would mean that if something is asked to be changed in SRU review, the change has already been uploaded to the development release, and to keep things aligned the development release then has to change again, or we have to diverge causing development and review pain.

Instead, once upstream are ready, all reviewing for the subsequent Ubuntu uploads are done from a single merge proposal on GitHub:

  1. A person who has permission to upload the package to the development release performs a review but does not upload and iterates with upstream as required.

  2. The SRU team then also reviews the proposed upload as they would for a normal SRU review but

    prior to upload and iterates on code changes and SRU documentation as required. This is done from the MP rather than the Unapproved queue. To minimise the effort involved in handling the many required uploads to stable releases, the SRU team expects to review just this one MP for the development release, and expects that the subsequent uploads to the stable releases will be identical to what was reviewed except for the straight backport package version and changelog changes.

  3. Currently, the SRU review includes:
    1. a commit by commit review as presented by upstream, looking for the types of issues

      described above. This is because that list is not exhaustive, and we have caught multiple issues this way either at this step or later on that have needed fixing.

    2. The usual SRU review checks, such as that all changes made appear to fit within the definition of the exception, that the version numbers are sensible, the Test Plan is reasonable given the specific changes being made, and so forth.
  4. During review, areas warranting additional testing may be identified, and these will be added to the Test Plan for manual testing, or automated testing added, for testing at SRU review time.
  5. After both the uploader and an SRU team member has approved, the uploader uploads the package to the development release, and also uploads to all stable releases as straight backports.
  6. The SRU team member who approved the MP verifies that all SRU uploads are identical to what they reviewed, and then accepts the stable uploads from Unapproved.

Verification

For each Ubuntu release that is targeted by the SRU, successful results of integration testing of the -proposed package for at least the following platforms must be provided.

  • Azure Windows 10+ VM with WSL LTS releases targeted by the SRU.
  • Real hardware with Windows 10+ and WSL LTS releases targeted by the SRU.
  • LTS to LTS upgrade test of attached machine for all affected LTS.
  • LTS to LTS upgrade test of unattached machine for all affected LTS.

If the Test Plan calls for any additional manual testing, such testing and its results must be documented, usually in the associated bugs linked from the changelog.

Interim releases are not produced. Therefore they are not supported and not tested, even for upgrades.

SRU Bug Template

[ Impact ]

This release brings both bug-fixes and new features for the Ubuntu Pro for WSL service, and we would
like to make sure all of our supported customers have access to these improvements on all releases.

The most important changes are:

<create a list with the spotlight fixes and features>

See the changelog entry below for a full list of changes and bugs.

[ Test Plan ]

The following development and SRU process was followed:

<https://wiki.ubuntu.com/UbuntuProForWSLUpdates>

The Ubuntu Pro for WSL developers will be in charge of attaching the artefacts of the appropriate
test runs to the bug, and will not mark 'verification-done' until this has happened.

Besides the full integration test runs, manual tests were executed to verify bugs:

<list bugs which required manual testing>

[ Where problems could occur ]

In order to mitigate the regression potential of the changes in this version, the results of the
integration tests suite runs are attached to this bug.

Other considerations not covered by the integration test suite are:

* Think about what the upload changes in the software. Imagine the change is wrong or breaks
something else: how would this show up?

* This must '''never''' be "None" or "Low", or entirely an argument as to why your upload
is low risk.

* This both shows the SRU team that the risks have been considered, and provides guidance to
testers in regression-testing the SRU.

[ Other Info ]

* Anything else you think is useful to include

* Anticipate questions from users, SRU, +1 maintenance, security teams and the Technical Board and
address these questions in advance

[ Changelog ]

<insert changelog entry>

UbuntuProForWSLUpdates (last edited 2024-09-09 11:59:37 by jibel)