Skip to content

Instantly share code, notes, and snippets.

@dviererbe
Last active September 1, 2023 12:43
Show Gist options
  • Save dviererbe/ea96b0a2d49fac9fda61c2330c0e66d8 to your computer and use it in GitHub Desktop.
Save dviererbe/ea96b0a2d49fac9fda61c2330c0e66d8 to your computer and use it in GitHub Desktop.
Ubuntu SRU Exception for .NET End of Life Process

.NET End of Life Process

This document describes the policy for end of (support) life for .NET packages in a stable supported distro, including LTS.

.NET is an open-source platform for building desktop, web, and mobile applications that can run natively on any operating system. The .NET ecosystem includes tools, libraries, and languages that support modern, scalable, and high-performance software development.

Cananoical collaborates with Microsoft to package .NET releases for the Ubuntu Platform:

Upstream Release Cadence

Major .NET versions are released annually in November. For example:

  • .NET 6 was released November 2021
  • .NET 7 was released November 2022
  • .NET 8 will be released November 2023

Patch updates for supported .NET versions are released monthly on the second Tuesday of each month, also known as Patch Tuesday.

Upstream Support

Each .NET release is defined as either Standard Term Support (STS) or Long Term Support (LTS), at the beginning of the release.

LTS releases are .NET releases with an even-numbered major .NET version number (e.g., .NET 6, .NET 8). STS releases are .NET releases with an odd-numbered major .NET version number (e.g., .NET 7).

The quality of all releases are exactly the same, the only difference is the length of support:

  • LTS releases get free support and patches for 3 years by Microsoft.
  • STS releases get free support and patches for 18 months by Microsoft.

See more details here: .NET Support Policy

Canonicals relation with Upstream

Canonical is a .NET Security Partner and gets early access to .NET patches to ensure a smooth and simultaneous release on all platforms on the same day, secure the software supply chain between .NET and Ubuntu, and provide enterprise-grade support. Canonical's Security Team handles security releases, and Canonical's Toolchains Squad of the Foundations Team handles non-security releases.

Canonicals Ubuntu LTS Strategy

Every .NET LTS release (e.g., .NET 6, .NET 8) will be generally available in an odd-numbered year (e.g. .NET 8 in November 2023). Therefore a .NET LTS release needs to be supported on Ubuntu LTS from one year ago (in the case of .NET 8: 22.04), from the next year (in the case of .NET 8: 24.04) and the one after that (in the case of .NET 8: 26.04).

Every .NET STS (e.g., .NET 7) will be generally available in an even-numbered year (e.g. .NET 7 in November 2022), which is an Ubuntu LTS year. Therefore a .NET STS release needs to be supported on Ubuntu LTS of that year (in the case of .NET 8: 22.04) and in the next LTS two years later (in the case of .NET 8: 24.04).

Canonicals Support / End of Life Strategy

Canonical Foundations Toolchains Squad wants to include LTS .NET releases (e.g., .NET 6, .NET 8) in main (STS releases (e.g., .NET 7) stay in universe), but does not want to extend the Support Period beyond the Upstream Support Period. This deviates from the normal 5 year support period in Ubuntu Long Term Support (LTS) releases +5 years Expanded Security Maintenance (ESM).

The latest released .NET packages after end of support life will remain available in the Ubuntu Archive. Security related bugs will not get fixed and any unsupported .NET packages in main get demoted to universe.

This was discussed with Microsoft and the Security Team.

Canonical Foundations Toolchains Squad wants .NET LTS releases in Ubuntu main as part of Canonicals partnership with Microsoft to shorten the supply chain between Canonical and Microsoft and improve the .NET developer experience on Ubuntu.

This is documented in the debian/README.source of .NET source packages.

Implications for Package Maintainers depending on .NET

Currently no package in main depends on .NET, but a demotion from main to universe could affect future packages in main depending on .NET.

Package Maintainers of such packages can follow two strategies:

  1. Migrate the package to a supported LTS .NET release.
  2. Demote the package to universe and (optionaly) search for a replacement.

An automated migration is not recommended, because this may break some users' use-case or may change the behavior of .NET applications. A human review of any migration between major .NET releases is strongly recommended.

Other Information

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment