Skip to content

Commit 2b40f09

Browse files
committed
add deprecation guide for uenv
1 parent 51f0e98 commit 2b40f09

File tree

2 files changed

+43
-6
lines changed

2 files changed

+43
-6
lines changed

docs/software/prgenv/prgenv-gnu.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ It is the go to programming environment on all systems and target node types, th
1010

1111
The [`linalg`][ref-uenv-linalg] environment is similar to prgenv-gnu, with additional linear algebra and mesh partitioning algorithms.
1212

13+
[](){#ref-uenv-prgenv-gnu-versioning}
1314
## Versioning
1415

1516
The naming scheme is `prgenv-gnu/<version>`, where `<version>` has the `YY.M[M]` format, for example November 2024 is `24.11`, and January 2025 would be `25.1`.

docs/software/uenv/deploy.md

Lines changed: 42 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -184,18 +184,19 @@ uenv image copy build::<SOURCE> deploy::<DESTINATION> # (1)!
184184
uenv image copy deploy::prgenv-gnu/24.11:v1@daint%gh200 deploy::prgenv-gny/24.11@santis%gh200
185185
```
186186

187+
[](){#ref-uenv-remove}
187188
### Removing a uenv
188189

189190
To remove a uenv, you can use the `uenv` command line tool:
190191

191192
```bash
192-
uenv image delete --token=${HOME}/.ssh/jfrog-token deploy::<IMAGE>
193+
uenv image delete --token=${HOME}/.ssh/jfrog-token <NAMESPACE>::<IMAGE>
193194
```
194195

195196
!!! danger
196197

197-
Removing a uenv is disruptive.
198-
Please have a look at out [uenv removal policy][ref-uenv-removal] for more information.
198+
Removing a uenv that has been deployed (i.e. is in the `deploy::` namespace) is potentially disruptive for users.
199+
Please see the [uenv lifecycle][ref-uenv-lifecycle] guide for more information.
199200

200201
## Source code access
201202

@@ -226,10 +227,45 @@ Permissions to access restricted resources is set on a per-pipeline basis
226227
| `vasp` | `vasp6`, `cscs-uenv-admin` | `uenv-sources/vasp` | VASP requires a paid license to access source | Simon Frasch |
227228
| `vmd` | `uenv-sources-csstaff` | `uenv-sources/vmd` | VMD requires an account to download the source code | Alberto Invernizzi |
228229

229-
[](){#ref-uenv-removal}
230-
## Deprecation and removal of uenv
230+
[](){#ref-uenv-lifecycle}
231+
## uenv lifecycle
231232

232-
!!! todo "Finalize and document the deprecation process"
233+
Scientific applications and tools have different release cycles (e.g. annual, quarterly or irregular), and the communities that use them have different expectations (e.g. ML users expect tools released in the last 3 months, while some scientific communities value support for old versions of software).
234+
For this reason, there is not a universal release and deprecation schedule for supported applications and programming environments - how often to release, how long to provide support, and when to remove old versions is up to the maintainer of the uenv, based on their user's requirements and the overheads of maintaining old versions.
233235

236+
While the frequency of updates and deprecation policy is defined by the uenv maintainer, the following release cycle with tag names should be followed when possible:
237+
238+
- [optional] tag pre-releases with `:rc1`, `:rc2`, etc
239+
- uenv tagged as release candidates are intended for early testing only, and can be removed at any point.
240+
- e.g. `prgenv-gnu/25.6:rc1` is released for users to do early testing and give feedback.
241+
- Tag `:v1` for the first official release.
242+
- [optional] release updated versions of uenv with tags ()`:v2`, `:v3`, ...) with patches and fixes.
243+
- Remove old versions according to a deprecation policy.
244+
245+
A uenv's release and support policy should be part of the uenv's documentation under the "Versioning" section, see [prgenv-gnu][ref-uenv-prgenv-gnu-versioning] for example.
246+
247+
The versioning section should provide the following information:
248+
249+
* the release schedule;
250+
* the support, update and deprecation policy for the uenv;
251+
* details about the currently deployed versions, changelogs and relevant information how to upgrade if appropriate.
252+
253+
!!! example "Example deprecation policy"
254+
A scientific application `sciapp` is released annually by the developers, and projects using the software on CSCS systems expect support for two years.
255+
256+
* Release a new version annually and version with the year, for example `sciapp/2025` being the most recent version in 2025.
257+
* CSCS provides full support for the current release, and partial support for old releases:
258+
* `sciapp/2025`: provide updates and fixes with new tags, take feature requests, and respond to questions about usage and how to upgrade to this version.
259+
* `sciapp/2024`: only support the most recent tag and only create new tags to fix breaking changes.
260+
* `sciapp/2023`: provided "as is" for the first quarter of 2025 while users have the chance to upgrade.
261+
* If there is a major breaking change to the system that would require a large effort to continue providing last year's version, and would require users to also update their workflow, we might choose to encourage deprecate early and help users upgrade to the latest version.
262+
263+
Generally speacking, uenv are removed (deleted from the `deploy::` namespace) under the following circumstances:
264+
265+
- when they are no longer supported as per the deprecation policy of the uenv;
266+
- when release candidates are superceded by a new release candidate or an official `:v1` release;
267+
- when a new tag of a `name/version` is deployed to replace a "broken" uenv:
268+
- there might have been a critical issue affecting security, correctness or performance that means all users should update.
269+
- _do not_ remove uenv tags that continue to meet the needs of users (e.g. if a new tag was introduced to fix an issue that only affected specific users or use cases).
234270

235271
[uenv-sources]: https://jfrog.svc.cscs.ch/artifactory/uenv-sources/

0 commit comments

Comments
 (0)