|
| 1 | +# Release note Formats |
| 2 | + |
| 3 | +Release notes are available in a combination of markdown and JSON formats. The intent is to make all release notes available in markdown and also in JSON if there is a scenario that requires structured data. This content is [licensed](./license-information.md) for broad use. |
| 4 | + |
| 5 | +Our approach has evolved over time. The following descripions are for our latest practices. |
| 6 | + |
| 7 | +## Monthly patch release notes (markdown) |
| 8 | + |
| 9 | +We typically release an update each month. These often include security fixes for vulberabilities (AKA CVEs) disclosed on the same day. |
| 10 | + |
| 11 | +Example: [8.0.1](8.0/8.0.1/8.0.1.md) |
| 12 | + |
| 13 | +These markdown files include the following information: |
| 14 | + |
| 15 | +- Links to binaries |
| 16 | +- Notable changes, including CVEs |
| 17 | +- Compatibility information |
| 18 | +- Updates packages |
| 19 | + |
| 20 | +## Monthly preview release notes (markdown) |
| 21 | + |
| 22 | +We typically release a preview for the next major version each month. These are much the same as the monthly patches, however, will not include CVE information until the new major release is supported (starting with RC1). |
| 23 | + |
| 24 | +Example: [.NET 9 Preview 6](./9.0/preview/preview6/README.md) |
| 25 | + |
| 26 | +These markdown files are primarily composed of dense feature descriptions. This content is used as source material for [What's New](https://learn.microsoft.com/dotnet/core/whats-new/dotnet-9/overview) pages in official Microsoft docs, which are [often updated](https://github.com/dotnet/docs/pulls?q=is%3Apr+What%27s+New) on the same day as a preview release. |
| 27 | + |
| 28 | +Preview release notes are always in a `preview` folder. This approach was adopted so that preview releases do distract from stable releases once preview releases are no longer relevant. |
| 29 | + |
| 30 | +## Releases Index (json) |
| 31 | + |
| 32 | +The `releases-index.json` file is the entrypoint into all other JSON files. This file is relatively small, about a dozen lines per major version. The file includes support phase, latest version, and whether the latest version included CVE fixes. |
| 33 | + |
| 34 | +- File: [`releases-index.json`](./releases-index.json) |
| 35 | +- Schema: [`dotnet-releases-index.json`](https://json.schemastore.org/dotnet-releases-index.json) |
| 36 | + |
| 37 | +The following example demonstrates a version object from the file. |
| 38 | + |
| 39 | +```json |
| 40 | +{ |
| 41 | + "channel-version": "8.0", |
| 42 | + "latest-release": "8.0.7", |
| 43 | + "latest-release-date": "2024-07-09", |
| 44 | + "security": true, |
| 45 | + "latest-runtime": "8.0.7", |
| 46 | + "latest-sdk": "8.0.303", |
| 47 | + "product": ".NET", |
| 48 | + "support-phase": "active", |
| 49 | + "eol-date": "2026-11-10", |
| 50 | + "release-type": "lts", |
| 51 | + "releases.json": "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/8.0/releases.json", |
| 52 | + "supported-os.json": "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/8.0/supported-os.json" |
| 53 | +} |
| 54 | +``` |
| 55 | + |
| 56 | +Each version object includes links to more detailed release-specific information. |
| 57 | + |
| 58 | +The links are to a blob storage location, not to GitHub. We chose the blog storage links as the default because we knew some users were using the JSON files from within Azure and we also better understood the reliability characteristics of Azure. |
| 59 | + |
| 60 | +`releases-index.json` and all the files it references are stored in blob storage and in GitHub. It is straightforward to programmatically transform the [blob storage links](https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/releases-index.json) to [`raw` GitHub links](https://raw.githubusercontent.com/dotnet/core/main/release-notes/releases-index.json) should that be desired. |
| 61 | + |
| 62 | +## Releases (json) |
| 63 | + |
| 64 | +The `releases.json` file contains expansive release information for the life of a major release. It includes much the same information as the Monthly and preview markdown release notes. |
| 65 | + |
| 66 | +Examples: |
| 67 | + |
| 68 | +- [8.0 `releases.json`](./8.0/releases.json) |
| 69 | +- [9.0 `releases.json`](./9.0/releases.json) |
| 70 | + |
| 71 | +This files can grow to be quite large. We are considering producing release-specific versions of this file, for example for `8.0/8.0.1/release.json`. |
| 72 | + |
| 73 | +## Supported OS (json and markdown) |
| 74 | + |
| 75 | +Supported OS information is published for each release. This information indicates to users which OSes they can expect an app (or the .NET SDK) to run on for a given .NET version. It also indicates which OSes are supported and when they transitioned to EOL status. |
| 76 | + |
| 77 | +Examples: |
| 78 | + |
| 79 | +- [.NET 8 Supported OSes (json)](./8.0/supported-os.json) |
| 80 | +- [.NET 8 Supported OSes (markdown)](./8.0/supported-os.md) |
| 81 | +- [.NET 9 Supported OSes (json)](./9.0/supported-os.json) |
| 82 | +- [.NET 9 Supported OSes (markdown)](./9.0/supported-os.md) |
| 83 | + |
| 84 | +Schema: [dotnet-support-matrix](./schema/dotnet-support-matrix.json) |
| 85 | + |
| 86 | +## Linux packages (json and markdown) |
| 87 | + |
| 88 | +Linux package information is published for each release. This information indicates which packages must be installed on a given distro for a .NET app (or the .NET SDK) to run. [.NET packages](../linux.md) are available for multiple distros, which automatically install all required packages |
| 89 | + |
| 90 | +Examples: |
| 91 | + |
| 92 | +- [.NET Linux packages (json)](9.0/linux-packages.json) |
| 93 | +- [.NET Linux packages (markdown)](9.0/linux-packages.md) |
| 94 | + |
| 95 | +Schema: [dotnet-requires-packages](./schema/dotnet-required-packages.json) |
0 commit comments