InsightSoftwareConsortium / InsightSoftwareConsortium/ITK

Instrument all ITK source files with SPDX license headers (SBOM step 2 of #4302)

Open
#6,679 0 comments 1 reaction 0 assignees View on GitHub
type:Enhancement
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.