InsightSoftwareConsortium / InsightSoftwareConsortium/ITK
Instrument all ITK source files with SPDX license headers (SBOM step 2 of #4302)
- Dominant language
- C++
- Stars
- 1.7k
- Forks
- 748
- Avg merge
- 1d 1h
- Merged PRs (30d)
- 64
Description
Sub-task of #4302 (SBOM roadmap, step 2: *"adding SPDX headers to ITK source files"*). Filed so this delayed step is not lost.
## What's left
The SBOM infrastructure and the per-file SPDX header instrumentation were developed as a bound pair on the integration branch **`sbom-bulk-tagging`**, and neither has reached `main` yet:
- **#5817** — SBOM tooling (SPDX-2.3 generator, per-module `itk-module.cmake` metadata, validation CTests, `REUSE.toml` + `LICENSES/`, `AddSPDXHeaders.py`, and a `check-spdx-headers` pre-commit hook). Merged **into `sbom-bulk-tagging`** (not `main`).
- **#6084** — the bulk instrumentation: prepends two machine-readable SPDX lines (`SPDX-FileCopyrightText` / `SPDX-License-Identifier`) to all ITK-owned source files (5,703 files, +11,406 lines) and updates the KWStyle header template so new files are enforced to carry SPDX going forward. **Closed unmerged** — the diff is recoverable at commit `25ce5cb90c16dd59602bd3f70fa5d74d8a080c98`.
Instrumenting every source/header file (the #6084 work) is the remaining prerequisite before `sbom-bulk-tagging` can merge to `main`. Without it, the SBOM tooling's per-file provenance (`reuse lint`, per-file license attribution) is incomplete and the KWStyle SPDX enforcement cannot be turned on.
## Definition of done
- [ ] All ITK-owned source files carry `SPDX-FileCopyrightText` + `SPDX-License-Identifier` headers (revive/rebase #6084 @ `25ce5cb9`).
- [ ] KWStyle / pre-commit `check-spdx-headers` enforcement enabled for new files.
- [ ] `reuse lint` reports 0 compliance gaps for non-ThirdParty files.
- [ ] `sbom-bulk-tagging` (tooling from #5817 + these headers) rebased onto current `main` and merged, closing #4302.
## References
- Umbrella / roadmap: #4302
- Tooling PR (on `sbom-bulk-tagging`): #5817
- Bulk header PR (closed, recoverable): #6084 @ `25ce5cb90c16dd59602bd3f70fa5d74d8a080c98`
- Integration branch: `sbom-bulk-tagging` (`ccc0a652304c0ffb46e4f41190434cb7ab696812`)
Contributor guide
Research direction
Start with commit 25ce5cb90c16dd59602bd3f70fa5d74d8a080c98 and the sbom-bulk-tagging branch, then review #5817's tooling and the KWStyle and pre-commit checks. Verify all ITK-owned non-ThirdParty files have both SPDX lines, run reuse lint, confirm check-spdx-headers enforcement, and rebase the combined work onto main.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cmake, cpp, python
- Domain
- build-system, tooling
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 25/100