# Sustainability action plan: ROOT

From the EIC Software Sustainability Review, pass `2026-10-12-2`, assessed at commit `14a58f742115`. Full assessment: https://eic.github.io/SoftwareSustainabilityReview/projects/root.html

Levels: 0 Absent · 1 Initial · 2 Established · 3 Sustained. Each item names the step to the next level.

## High priority

- [ ] Fix the `CLING_GIT_TOKEN` checkout in `.github/workflows/sync_cling.yml` or disable the workflow. *(`eng.ci`, now level 1, effort S)*
- [ ] Add a `GOVERNANCE.md` naming the project leader and core team, how decisions are made, and how contributors become reviewers or code owners. *(`com.governance`, now level 1, effort S)*
- [ ] Add `CODE_OF_CONDUCT.md` (Contributor Covenant or the CERN Code of Conduct) with a reporting contact, and link it from the README. *(`com.conduct`, now level 1, effort S)*
- [ ] Put the full LGPL-2.1 text in `LICENSE` (moving the notice to the README) so GitHub detects `LGPL-2.1-or-later`, and add `LICENSES/` entries for GPL and RooFit parts. *(`via.license`, now level 1, effort S)*
- [ ] Mark the ubuntu2610, fedora44, mac27 and mac-beta jobs as non-blocking (or fix issue 23675 and the platform failures) so `ROOT CI` on `master` passes. *(`eng.ci`, now level 1, effort M)*

## Medium priority

- [ ] Add a ruleset on `master` requiring one approving review (CODEOWNERS review where an owner exists). *(`eng.change-control`, now level 2, effort S)*
- [ ] Add minimum versions for each required library to https://root.cern/install/dependencies/ (matching `SearchInstalledSoftware.cmake`). *(`doc.user`, now level 2, effort S)*
- [ ] Add a troubleshooting page for common build and runtime errors to the manual. *(`doc.user`, now level 2, effort S)*
- [ ] Document building and testing ROOT inside the public `registry.cern.ch/root-ci/<os>:buildready` images, or add `.devcontainer/devcontainer.json` based on one. *(`doc.contributing`, now level 2, effort S)*
- [ ] Add a second owner to each single-owner path in `.github/CODEOWNERS`. *(`com.bus-factor`, now level 2, effort S)*
- [ ] Document the release procedure (tagging, `root-src-tarball.yml`, `root-relpage-ci.yml`, binaries) in `README/DEVELOPMENT.md`. *(`com.bus-factor`, now level 2, effort S)*
- [ ] Add `CITATION.cff` with the concept DOI and the reference paper, and update `README/CREDITS` at each release. *(`via.citation`, now level 2, effort S)*
- [ ] Review the 282 issues open longer than one year and close, or label and milestone, each one. *(`com.responsiveness`, now level 1, effort M)*
- [ ] Add the minimum supported version to every `ROOT_FIND_REQUIRED_DEP` and `find_package` call in `cmake/modules/SearchInstalledSoftware.cmake`. *(`dist.dependencies`, now level 1, effort M)*
- [ ] Publish `rootproject/root:<version>-<os>` images from a workflow triggered by each release tag. *(`dist.reproducibility`, now level 2, effort M)*
- [ ] (EIC side) Add an eic/containers job that builds the eic_xl environment with the next ROOT release candidate and runs the EICrecon tests. *(`eic.environment`, now level 2, effort M)*

## Low priority

- [ ] Add `.github/dependabot.yml` for `github-actions`. *(`dist.dependencies`, now level 1, effort S)*
- [ ] Document on root.cern the institutions committed to maintenance, their areas, and how ownership transfers when a team member leaves. *(`via.support`, now level 2, effort S)*
- [ ] Document which libraries can be linked without Cling (for example the RNTuple and histogram v7 libraries) and test such a minimal consumer in CI. *(`eng.modularity`, now level 2, effort M)*
