From 0f1e2a8f817660ac321bf6d1407fe81287e3a392 Mon Sep 17 00:00:00 2001 From: Thomas di Luccio Date: Tue, 9 Dec 2025 12:31:21 +0100 Subject: [PATCH 1/9] Add Depreciation policy to the docs --- sites/upsun/src/create-apps/depreciation.md | 51 +++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 sites/upsun/src/create-apps/depreciation.md diff --git a/sites/upsun/src/create-apps/depreciation.md b/sites/upsun/src/create-apps/depreciation.md new file mode 100644 index 0000000000..569cf39325 --- /dev/null +++ b/sites/upsun/src/create-apps/depreciation.md @@ -0,0 +1,51 @@ +--- +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 | Latest LTS or community-supported version with ongoing updates. | 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. | Limited support | Upgrade as soon as possible | +| Decommissioned | Image is no longer available. Builds using it will fail. | - | Migration 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. From a14254a20ab8af3874cd84f44a3f09f6309d9495 Mon Sep 17 00:00:00 2001 From: Thomas di Luccio Date: Tue, 9 Dec 2025 13:40:24 +0100 Subject: [PATCH 2/9] Tweaks --- sites/upsun/src/create-apps/depreciation.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/sites/upsun/src/create-apps/depreciation.md b/sites/upsun/src/create-apps/depreciation.md index 569cf39325..524e04ab39 100644 --- a/sites/upsun/src/create-apps/depreciation.md +++ b/sites/upsun/src/create-apps/depreciation.md @@ -15,10 +15,14 @@ Each {{% vendor/name %}} image moves through four lifecycle stages: | **Stage** | **Description** | **{{% vendor/name %}} Support** | **User Action** | | ---- | ---- | ---- | ---- | -| Active | Latest LTS or community-supported version with ongoing updates. | 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. | Limited support | Upgrade as soon as possible | -| Decommissioned | Image is no longer available. Builds using it will fail. | - | Migration required to continue deploying | +| **Active** | Latest LTS or community-supported version with ongoing updates. | 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 From e774932c3e0329ce8bf66d560f01916b541e4e67 Mon Sep 17 00:00:00 2001 From: Thomas di Luccio Date: Tue, 9 Dec 2025 14:29:32 +0100 Subject: [PATCH 3/9] Fix typos with break lines in table --- sites/upsun/src/create-apps/depreciation.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/sites/upsun/src/create-apps/depreciation.md b/sites/upsun/src/create-apps/depreciation.md index 524e04ab39..34e89f1041 100644 --- a/sites/upsun/src/create-apps/depreciation.md +++ b/sites/upsun/src/create-apps/depreciation.md @@ -16,11 +16,8 @@ Each {{% vendor/name %}} image moves through four lifecycle stages: | **Stage** | **Description** | **{{% vendor/name %}} Support** | **User Action** | | ---- | ---- | ---- | ---- | | **Active** | Latest LTS or community-supported version with ongoing updates. | 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 | +| **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 | From 3feea85edfc5b789eb32f1611c5e6704987fd00f Mon Sep 17 00:00:00 2001 From: Thomas di Luccio Date: Tue, 9 Dec 2025 16:10:18 +0100 Subject: [PATCH 4/9] Explore EOL Lifecycle update for PHP --- sites/upsun/src/languages/php/_index.md | 10 ++++++++++ themes/psh-docs/layouts/shortcodes/images-lifecycle.md | 3 +++ 2 files changed, 13 insertions(+) create mode 100644 themes/psh-docs/layouts/shortcodes/images-lifecycle.md diff --git a/sites/upsun/src/languages/php/_index.md b/sites/upsun/src/languages/php/_index.md index 8f664bb05f..26692b8143 100644 --- a/sites/upsun/src/languages/php/_index.md +++ b/sites/upsun/src/languages/php/_index.md @@ -14,10 +14,20 @@ 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. +- 8.5 — Active +- 8.4 — Active +- 8.3 — Deprecated (Retires on 2025-12-31) +- 8.2 — Retired (To be decommissioned from 2027-06-30) +- 8.1 — Retired (To be decommissioned from 2026-06-30) +- 8.0 — To be decommissioned // <- Not available. This is an example + +**TODO** UPDATE BELOW {{< image-versions image="php" status="supported" environment="grid" >}} Note that from PHP versions 7.1 to 8.1, the images support the Zend Thread Safe (ZTS) version of PHP. 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..290911ce28 --- /dev/null +++ b/themes/psh-docs/layouts/shortcodes/images-lifecycle.md @@ -0,0 +1,3 @@ +{{% 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] From d4055b664ffe53bcf3f117f9707ee3318aa58d0d Mon Sep 17 00:00:00 2001 From: Thomas di Luccio Date: Tue, 9 Dec 2025 17:06:03 +0100 Subject: [PATCH 5/9] Fix typo in param names --- themes/psh-docs/layouts/shortcodes/images-lifecycle.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/psh-docs/layouts/shortcodes/images-lifecycle.md b/themes/psh-docs/layouts/shortcodes/images-lifecycle.md index 290911ce28..a780cc3eff 100644 --- a/themes/psh-docs/layouts/shortcodes/images-lifecycle.md +++ b/themes/psh-docs/layouts/shortcodes/images-lifecycle.md @@ -1,3 +1,3 @@ -{{% 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**. +{{ .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] From 286a61b1bee1387c6f4d5c5b3323481725832d4a Mon Sep 17 00:00:00 2001 From: Thomas di Luccio Date: Tue, 9 Dec 2025 17:13:52 +0100 Subject: [PATCH 6/9] More snippet glitches --- sites/upsun/src/languages/php/_index.md | 2 +- themes/psh-docs/layouts/shortcodes/images-lifecycle.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sites/upsun/src/languages/php/_index.md b/sites/upsun/src/languages/php/_index.md index 26692b8143..8434c1670c 100644 --- a/sites/upsun/src/languages/php/_index.md +++ b/sites/upsun/src/languages/php/_index.md @@ -14,7 +14,7 @@ Also, see how you can [modify your PHP runtime when using the composable image]( ## Supported versions -{{< images-lifecycle >}} +{{% images-lifecycle %}} You can select the major and minor version. diff --git a/themes/psh-docs/layouts/shortcodes/images-lifecycle.md b/themes/psh-docs/layouts/shortcodes/images-lifecycle.md index a780cc3eff..f9a70e495e 100644 --- a/themes/psh-docs/layouts/shortcodes/images-lifecycle.md +++ b/themes/psh-docs/layouts/shortcodes/images-lifecycle.md @@ -1,3 +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] +See the [full lifecycle policy for details and timelines](/create-apps/depreciation.html) From 76df2d481dea321bbb0b6f1efb1b541b73feb1ae Mon Sep 17 00:00:00 2001 From: Thomas di Luccio Date: Tue, 9 Dec 2025 17:31:18 +0100 Subject: [PATCH 7/9] Update snippets --- sites/upsun/src/languages/php/_index.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sites/upsun/src/languages/php/_index.md b/sites/upsun/src/languages/php/_index.md index 8434c1670c..b34414db49 100644 --- a/sites/upsun/src/languages/php/_index.md +++ b/sites/upsun/src/languages/php/_index.md @@ -20,12 +20,12 @@ 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. -- 8.5 — Active -- 8.4 — Active -- 8.3 — Deprecated (Retires on 2025-12-31) -- 8.2 — Retired (To be decommissioned from 2027-06-30) -- 8.1 — Retired (To be decommissioned from 2026-06-30) -- 8.0 — To be decommissioned // <- Not available. This is an example +- 8.5: `Active` +- 8.4: `Active` +- 8.3: `Deprecated`. Will retire on `2025-12-31` +- 8.2: `Retired`. Could be decommissioned from `2027-06-30` +- 8.1: `Retired`. Could be decommissioned from `2026-06-30` +- 8.0: `To be decommissioned` // <- Not available. This is an example **TODO** UPDATE BELOW {{< image-versions image="php" status="supported" environment="grid" >}} From d33c9e6cdbb58b586ff5831a18db09661f3998de Mon Sep 17 00:00:00 2001 From: Thomas di Luccio Date: Wed, 10 Dec 2025 10:35:12 +0100 Subject: [PATCH 8/9] Clarify the Active stage of the depreciation lifecycle --- sites/upsun/src/create-apps/depreciation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sites/upsun/src/create-apps/depreciation.md b/sites/upsun/src/create-apps/depreciation.md index 34e89f1041..4c394e04fe 100644 --- a/sites/upsun/src/create-apps/depreciation.md +++ b/sites/upsun/src/create-apps/depreciation.md @@ -15,7 +15,7 @@ Each {{% vendor/name %}} image moves through four lifecycle stages: | **Stage** | **Description** | **{{% vendor/name %}} Support** | **User Action** | | ---- | ---- | ---- | ---- | -| **Active** | Latest LTS or community-supported version with ongoing updates. | Full support | No action needed | +| **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. From d30471ddb42806a2cf88097626406766444b6845 Mon Sep 17 00:00:00 2001 From: Thomas di Luccio Date: Wed, 10 Dec 2025 15:02:05 +0100 Subject: [PATCH 9/9] Manual display outdated information --- sites/upsun/src/languages/dotnet.md | 8 +++++++- sites/upsun/src/languages/elixir.md | 9 ++++++++- sites/upsun/src/languages/go.md | 11 ++++++++++- sites/upsun/src/languages/java/_index.md | 14 ++++++++++++-- sites/upsun/src/languages/nodejs/_index.md | 8 +++++++- sites/upsun/src/languages/php/_index.md | 16 +++++++--------- sites/upsun/src/languages/python/_index.md | 11 ++++++++++- sites/upsun/src/languages/ruby.md | 10 +++++++++- sites/upsun/src/languages/rust.md | 2 ++ 9 files changed, 72 insertions(+), 17 deletions(-) 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 b34414db49..86f20b1231 100644 --- a/sites/upsun/src/languages/php/_index.md +++ b/sites/upsun/src/languages/php/_index.md @@ -20,15 +20,13 @@ 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. -- 8.5: `Active` -- 8.4: `Active` -- 8.3: `Deprecated`. Will retire on `2025-12-31` -- 8.2: `Retired`. Could be decommissioned from `2027-06-30` -- 8.1: `Retired`. Could be decommissioned from `2026-06-30` -- 8.0: `To be decommissioned` // <- Not available. This is an example - -**TODO** UPDATE BELOW -{{< 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.