diff --git a/sites/upsun/src/create-apps/depreciation.md b/sites/upsun/src/create-apps/depreciation.md new file mode 100644 index 0000000000..4c394e04fe --- /dev/null +++ b/sites/upsun/src/create-apps/depreciation.md @@ -0,0 +1,52 @@ +--- +title: "Image Lifecycle & Deprecation Policy" +sidebarTitle: Image Lifecycle +description: Understand the support status and lifecycle timelines for all Upsun runtimes and services. +--- + +{{% vendor/name %}} images follow a clear lifecycle to ensure your applications run on secure, supported, and well-maintained runtimes and services. This policy helps you understand how long an image remains supported, when upgrades are required, and how we communicate lifecycle changes. + +Maintaining safe and up-to-date applications is a shared responsibility: +{{% vendor/name %}} provides secure and stable image updates, while users are expected to track support timelines and upgrade before end-of-life. + +## Image Lifecycle Stages + +Each {{% vendor/name %}} image moves through four lifecycle stages: + +| **Stage** | **Description** | **{{% vendor/name %}} Support** | **User Action** | +| ---- | ---- | ---- | ---- | +| **Active** | Any version currently in upstream active support. These versions receive ongoing maintenance updates. They move to Deprecated once upstream ends active support and security-only support begins | Full support | No action needed | +| **Deprecated** | Upstream version leaves active support. Upsun still maintains the image, but it will be retired soon. | Full support |Start preparing migration | +| **Retired** | Upstream security support ends. Image is frozen, provided as-is and not maintained. The image will be decomissioned in 180 days | Limited support | Upgrade as soon as possible | +| **Decommissioned** | Image is no longer available. +Builds using it will fail. | - | Upgrade required to continue deploying | + +These lifecycle stages are aligned with upstream support timelines for each ecosystem. {{% vendor/name %}} only supports: +- LTS versions for ecosystems with formal LTS (e.g., Node.js), and +- Versions receiving upstream security updates for ecosystems without LTS (e.g., Python, PHP). + +## Deprecation Timeline + +A typical image progresses through the following steps: + +### 1. Active → Deprecated + +An image becomes Deprecated as soon as the upstream runtime or service ends active support: +- {{% vendor/name %}} continues maintaining the image. +- Upgrade nudges appear in the Console, CLI, or API where applicable. + +### 2. Deprecated → Retired + +An image becomes Retired as soon as upstream security support ends. +During this Retired phase: +- The image is frozen and no longer maintained. +- It remains available for a **180-day grace period**. +- Deploying with this version is allowed but strongly discouraged. +- Users must migrate to avoid service interruption. + +#### 3. Retired → Decommissioned (after 180 days) + +Once the 180-day Retired period ends: +- {{% vendor/name %}} reviews usage of the retired image. +- The image is fully decommissioned afterward. +- New and existing projects can no longer build with it. diff --git a/sites/upsun/src/languages/dotnet.md b/sites/upsun/src/languages/dotnet.md index 60e8a95db4..829c2bbf44 100644 --- a/sites/upsun/src/languages/dotnet.md +++ b/sites/upsun/src/languages/dotnet.md @@ -10,12 +10,18 @@ description: | ## Supported versions +{{% images-lifecycle %}} + You can select the major and minor version. Patch versions are applied periodically for bug fixes and the like. When you deploy your app, you always get the latest available patches. -{{< image-versions image="dotnet" status="supported" environment="grid" >}} +- 8.0: `Active`. +- 7.0: `Deprecated`. +- 6.0: `Retired`. + + {{% language-specification type="dotnet" display_name=".Net Core" %}} diff --git a/sites/upsun/src/languages/elixir.md b/sites/upsun/src/languages/elixir.md index 566771f9cf..c7c36cf1de 100644 --- a/sites/upsun/src/languages/elixir.md +++ b/sites/upsun/src/languages/elixir.md @@ -9,12 +9,19 @@ description: "{{% vendor/name %}} supports building and deploying applications w ## Supported versions +{{% images-lifecycle %}} + You can select the major and minor version. Patch versions are applied periodically for bug fixes and the like. When you deploy your app, you always get the latest available patches. -{{< image-versions image="elixir" status="supported" environment="grid" >}} +- 1.18: `Active`. +- 1.15: `Deprecated`. +- 1.14: `Retired`. + + + {{% language-specification type="elixir" display_name="Elixir" %}} diff --git a/sites/upsun/src/languages/go.md b/sites/upsun/src/languages/go.md index b0b058beb7..685f0182ce 100644 --- a/sites/upsun/src/languages/go.md +++ b/sites/upsun/src/languages/go.md @@ -9,12 +9,21 @@ description: "{{% vendor/name %}} supports building and deploying applications w ## Supported versions +{{% images-lifecycle %}} + You can select the major and minor version. Patch versions are applied periodically for bug fixes and the like. When you deploy your app, you always get the latest available patches. -{{< image-versions image="golang" status="supported" environment="grid" >}} +- 1.25: `Active`. +- 1.24: `Deprecated`. +- 1.23: `Retired`. +- 1.22: `Retired`. +- 1.21: `To be decommissionned`. +- 1.20: `To be decommissionned`. + + {{% language-specification type="golang" display_name="Go" %}} diff --git a/sites/upsun/src/languages/java/_index.md b/sites/upsun/src/languages/java/_index.md index df9b863c0a..4729fc7525 100644 --- a/sites/upsun/src/languages/java/_index.md +++ b/sites/upsun/src/languages/java/_index.md @@ -10,18 +10,28 @@ layout: single ## Supported versions +{{% images-lifecycle %}} + You can select the major version. But the latest compatible minor version is applied automatically and can’t be overridden. Patch versions are applied periodically for bug fixes and the like. When you deploy your app, you always get the latest available patches. ### OpenJDK versions: -{{< image-versions image="java" status="supported" environment="grid" >}} + These versions refer to the headless packages of OpenJDK. To save space and reduce potential vulnerabilities, they don't contain GUI classes, which can't be used on the server. -{{% language-specification type="java" display_name="Java" %}} +- 21: `Active`. Will deprecate on `2028-09-30` +- 19: `To be decommissionned`. +- 18: `To be decommissionned`. +- 17: `Active`. Will deprecate on `2026-09-30` +- 11: `Deprecated`. Will retire on `2032-01-31` +- 8: `Deprecated`. Will retire on `2030-12-31` + + + ```yaml {configFile="app"} applications: diff --git a/sites/upsun/src/languages/nodejs/_index.md b/sites/upsun/src/languages/nodejs/_index.md index e6ce5fa21c..82d19638e4 100644 --- a/sites/upsun/src/languages/nodejs/_index.md +++ b/sites/upsun/src/languages/nodejs/_index.md @@ -15,11 +15,17 @@ You can also develop a microservice architecture mixing JavaScript and other app ## Supported versions +{{% images-lifecycle %}} + You can select the major version. But the latest compatible minor version is applied automatically and can’t be overridden. Patch versions are applied periodically for bug fixes and the like. When you deploy your app, you always get the latest available patches. -{{< image-versions image="nodejs" status="supported" environment="grid" >}} +- 24: `Active`. Will retire on `2026-10-20` +- 22: `Deprecated`. Will retire on `2027-03-30` +- 20: `Deprecated`. Will retire on `2026-04-30` + + ### Specify the language diff --git a/sites/upsun/src/languages/php/_index.md b/sites/upsun/src/languages/php/_index.md index 8f664bb05f..86f20b1231 100644 --- a/sites/upsun/src/languages/php/_index.md +++ b/sites/upsun/src/languages/php/_index.md @@ -14,11 +14,19 @@ Also, see how you can [modify your PHP runtime when using the composable image]( ## Supported versions +{{% images-lifecycle %}} + You can select the major and minor version. Patch versions are applied periodically for bug fixes and the like. When you deploy your app, you always get the latest available patches. -{{< image-versions image="php" status="supported" environment="grid" >}} +- 8.5: `Active`. Will deprecate on `2027-12-31` +- 8.4: `Active`. Will deprecate on `2026-12-31` +- 8.3: `Active`. Will deprecate on `2025-12-31` +- 8.2: `Deprecated`. Will retire on `2027-06-30` +- 8.1: `Deprecated`. Will retire on `2026-06-30` + + Note that from PHP versions 7.1 to 8.1, the images support the Zend Thread Safe (ZTS) version of PHP. diff --git a/sites/upsun/src/languages/python/_index.md b/sites/upsun/src/languages/python/_index.md index 86223fb1eb..ecaf288e9e 100644 --- a/sites/upsun/src/languages/python/_index.md +++ b/sites/upsun/src/languages/python/_index.md @@ -11,11 +11,20 @@ You can deploy Python apps on {{% vendor/name %}} using a server or a project su ## Supported versions +{{% images-lifecycle %}} + You can select the major and minor version. Patch versions are applied periodically for bug fixes and the like. When you deploy your app, you always get the latest available patches. -{{< image-versions image="python" status="supported" environment="grid" >}} +- 3.13: `Active`. Will deprecate on `2026-10-01` +- 3.12: `Deprecated`. Will retire on `2028-10-31` +- 3.11: `Deprecated`. Will retire on `2027-10-31` +- 3.10: `Deprecated`. Will retire on `2026-10-31` +- 3.9: `Retired`. Could be decomissioned from `2026-04-30` +- 3.8: `To be decommissioned` + + ### Specify the language diff --git a/sites/upsun/src/languages/ruby.md b/sites/upsun/src/languages/ruby.md index 90a598a6e5..d938665a61 100644 --- a/sites/upsun/src/languages/ruby.md +++ b/sites/upsun/src/languages/ruby.md @@ -10,6 +10,8 @@ description: | ## Supported versions +{{% images-lifecycle %}} + You can select the major and minor version. Patch versions are applied periodically for bug fixes and the like. @@ -17,7 +19,13 @@ When you deploy your app, you always get the latest available patches. ### Ruby -{{< image-versions image="ruby" status="supported" environment="grid" >}} +- 3.4: `Active`. Will deprecate on `2027-03-31` +- 3.3: `Active`. Will deprecate on `2026-03-31` +- 3.2: `Deprecated`. Will retire on `2026-10-31` +- 3.1: `To be decommissioned` +- 3.0: `To be decommissioned` + + {{% language-specification type="ruby" display_name="Ruby" %}} diff --git a/sites/upsun/src/languages/rust.md b/sites/upsun/src/languages/rust.md index d39053e1bc..5fc57a0b85 100644 --- a/sites/upsun/src/languages/rust.md +++ b/sites/upsun/src/languages/rust.md @@ -13,6 +13,8 @@ banner: ## Supported versions +{{% images-lifecycle %}} + You can select the major version. But the latest compatible minor version is applied automatically and can’t be overridden. Patch versions are applied periodically for bug fixes and the like. When you deploy your app, you always get the latest available patches. diff --git a/themes/psh-docs/layouts/shortcodes/images-lifecycle.md b/themes/psh-docs/layouts/shortcodes/images-lifecycle.md new file mode 100644 index 0000000000..f9a70e495e --- /dev/null +++ b/themes/psh-docs/layouts/shortcodes/images-lifecycle.md @@ -0,0 +1,3 @@ +{{ .Site.Params.vendor.name }} runtimes follow a clear lifecycle to keep your applications secure and modern. Each version moves through four stages: **Active**, **Deprecated**, **Retired**, and **Decommissioned**. + +See the [full lifecycle policy for details and timelines](/create-apps/depreciation.html)