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:
- https://canonical.com/blog/install-dotnet-on-ubuntu
- https://devblogs.microsoft.com/dotnet/dotnet-6-is-now-in-ubuntu-2204/
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.
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
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.
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).
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.
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:
- Migrate the package to a supported LTS .NET release.
- 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.
- Do not confuse .NET with .NET Framework (proprietary, closed-source, Windows-only platform).
- The MIR Team already acknowledged the MIR of .NET 6 on the condition that the SRU exception is given.
- The .NET source code is distributed over several public repositories. Starting with .NET 8, all the code needed to build the .NET SDK from source is bundled in .NET's Virtual Monolithic Repository.
- .NET packages in the Archive (at the time of writing):
- .NET repository to track efforts to produce a source tarball of the .NET Core SDK and all its components: https://github.com/dotnet/source-build