Skip to content

ENH: Master tracking — Remote-module ingestion, archival, and consolidation #6160

@hjmjohnson

Description

@hjmjohnson

Primary tracking issue for all remote-module work in ITK 6. Supersedes #3371, #6060, #5174, #4263, #4786, #5557, and is related to #990. The v3 ingestion strategy is documented at Utilities/Maintenance/RemoteModuleIngest/INGESTION_STRATEGY.md.

Goal

Reduce the ~57 entries in Modules/Remote/*.remote.cmake to a small, well-curated set, by either (a) ingesting active modules into the main ITK tree under their natural group (Modules/<Group>/<Name>/) preserving upstream git blame, or (b) archiving unmaintained / superseded upstream repos read-only. Every disposition must be intentional; no module remains as a configure-time fetch unless that is the documented best fit.

Action checklist (live)

Phase 0 — infrastructure (DONE)

Phase 1 — completed ingests

Phase 2 — upstream archival (post-ingest follow-up PRs)

For each merged ingest, an archival PR on the original upstream repo deletes the whitelisted files, adds MIGRATION_README.md, and the repo is marked Archived in GitHub settings.

  • ITKAnisotropicDiffusionLBR — archive
  • ITKMontage — archive
  • ITKGenericLabelInterpolator — archival PR open: #43
  • ITKMGHImageIO — archival PR open: #50
  • ITKFastBilateral — archival PR open: #16
  • ITKMeshNoise — archival PR open: #37
  • ITKNeuralNetworks — already archived upstream (subsumes NeuralNetworks (Numerics) module missing in recent versions #5557; close that issue with this resolution)
  • ITKTBBImageToImageFilter — archive without ingestion (superseded by ITK's built-in TBB threading via PoolMultiThreader)

Phase 3 — Tier A ingest queue (pure ITK, no external deps)

The order below is the proposed ingest sequence. Modify each commit's checklist as PRs land.

Wave 1 (Filtering / IO, smallest footprint, fastest review). ⭐ = open user-filed issue or high upstream-stars community-demand signal raises priority.

Next up: the v4 ingest pipeline (#6204) is driving Wave-1 modules through quickly. Wave-1 ingest queue is now fully merged (AdaptiveDenoising #6235, TextureFeatures #6238, PrincipalComponentsAnalysis #6240, HigherOrderAccurateGradient #6242, SmoothingRecursiveYvvGaussianFilter #6243, ParabolicMorphology #6260, MultipleImageIterator #6263, RLEImage #6208). Wave-2 batch of 12 draft PRs (#6266#6277) is currently in flight, each driven by the v4 ingest pipeline.

Wave 2 (richer or external-data-heavy). ⭐ = recent user-filed issue raises priority.

Phase 4 — Tier B disposition (refined per .devlocal/remote-module-ingest-report.md)

Bucket 1 — Phase 4 ingest queue (ITK-core-only deps; ingest in dependency order)

  • MeshToPolyData — disposition 4; INGEST FIRST (COMPILE_DEPENDS of BSplineGradient/others; ITKCommon/Mesh only)
  • FixedPointInverseDisplacementField — disposition 4 (ITKCommon/ImageGrid/IOImageBase)
  • BSplineGradient — disposition 4 (after MeshToPolyData)
  • TwoProjectionRegistration — disposition 4 (ITK registration stack)
  • TotalVariation — disposition 4 (ITKEigen3 in-tree)
  • Shape — disposition 4 (ITKMesh/Transform; non-ISC upstream)
  • FPFH — disposition 4 (ITKRegistrationCommon)
  • IOMeshSWC — disposition 4 (ITKIOMeshBase)

Bucket 2 — Phase 4 gated ingest (behind existing option; no new external dep)

  • IOTransformDCMTK — disposition 4; ingest EXCLUDE_FROM_DEFAULT gated by Module_ITKDCMTK (DCMTK already bundled in-tree)

Bucket 3 — Keep remote / do NOT ingest

  • DO NOT INCLUDE SimpleITKFiltersModules/Filtering/
  • SphinxExamples — keep remote: doc/data repo, content stale since v5.3.0 (only 2026 CI-lint plumbing), 13.6 MB, BUILD_EXAMPLES-gated
  • WebAssemblyInterface — keep remote: 300 MB active polyglot monorepo (ITK-Wasm); subtree ingest impractical
  • CudaCommon, RTK, VkFFTBackend — GPU/CUDA stacks, separate licensing/build matrix
  • SCIFIO, IOOpenSlide — large external libraries (Bio-Formats, OpenSlide)
  • TubeTK, Ultrasound, LesionSizingToolkit, HASI, SkullStrip, Cleaver — domain-specific toolkits with their own release cadences
  • BioCell — keep remote: legacy near-dead cell-sim demo (ITKCommon/Mesh-only but not worth ingesting)

Bucket 4 — Still needs investigation

  • PerformanceBenchmarking — clean deps (ITKCommon) but policy call: benchmark harness in core vs. separate build against installed ITK
  • TractographyTRX — vendors non-ISC trx-cpp; licensing review needed before any ingest decision

Phase 5 — discoverability & docs

Status table — every entry under Modules/Remote/ today

(L = Wave 1 ingest queue · 2 = Wave 2 ingest queue · 4 = Phase 4 queued ingest (core-only or gated) · A = archive without ingest · K = keep remote, Tier B · ✓ = ingested · ? = needs investigation)

Module Disposition Notes
AdaptiveDenoising merged via #6235 (2026-05-08)
AnalyzeObjectLabelMap A dropped (deprecated, not ingested) via #6207 (2026-05-06)
BioCell K legacy near-dead cell-sim demo; not worth ingesting
BoneEnhancement 2
BoneMorphometry 2
BSplineGradient 4 ingest after MeshToPolyData
Cleaver K external Cleaver dep
Cuberille L
CudaCommon K CUDA stack
FastBilateral merged via #6159 (2026-04-29)
FixedPointInverseDisplacementField 4 core-only deps
FPFH 4 core-only deps
GrowCut 2
HASI K hierarchical anatomy stack
HigherOrderAccurateGradient merged via #6242 (2026-05-12)
IOFDF L
IOMeshMZ3 L
IOMeshSTL L
IOMeshSWC 4 core-only deps
IOOpenSlide K OpenSlide dep
IOScanco 2
IOTransformDCMTK 4 gated: EXCLUDE_FROM_DEFAULT behind Module_ITKDCMTK (no new external dep)
IsotropicWavelets 2
LabelErodeDilate merged via #6171 (2026-04-30)
LesionSizingToolkit K toolkit scope
MeshNoise merged via #6161 (2026-04-29); closed #5174
MeshToPolyData 4 INGEST FIRST (COMPILE_DEPENDS of others)
MinimalPathExtraction L⭐ Wave-1 ingest, open #6271
MorphologicalContourInterpolation L⭐ next ingest target — 34★ upstream, actively maintained
MultipleImageIterator merged via #6263 (2026-05-13)
ParabolicMorphology merged via #6260 (2026-05-13)
PerformanceBenchmarking ? clean deps; policy: core vs. separate build against installed ITK
PhaseSymmetry 2
PolarTransform L
PrincipalComponentsAnalysis merged via #6240 (2026-05-09)
RANSAC 2
RLEImage merged via #6208 (2026-05-05)
RTK K reconstruction toolkit
SCIFIO K Bio-Formats dep
Shape 4 core-only deps; non-ISC upstream
SimpleITKFilters 2
SkullStrip K toolkit scope
SmoothingRecursiveYvvGaussianFilter merged via #6243 (2026-05-13)
SphinxExamples K doc/data repo, stale since v5.3.0, 13.6 MB, BUILD_EXAMPLES-gated
SplitComponents L
Strain 2
SubdivisionQuadEdgeMeshFilter L
TextureFeatures merged via #6238 (2026-05-09)
Thickness3D 2
TotalVariation 4 ITKEigen3 in-tree
TractographyTRX ? vendors non-ISC trx-cpp; licensing review needed
TubeTK K toolkit scope
TwoProjectionRegistration 4 ITK registration stack
Ultrasound K toolkit scope
VariationalRegistration 2
VkFFTBackend K VkFFT dep
WebAssemblyInterface K 300MB polyglot monorepo (ITK-Wasm); subtree ingest impractical

Also tracked outside Modules/Remote/:

Repo Disposition Notes
ITKNeuralNetworks ✓ archived already archived; resolves #5557
ITKTBBImageToImageFilter A archive without ingest; superseded by built-in TBB threading
Subsumed and related issues
Recent PR activity (past three weeks)
PR State Title
#6093 merged 2026-04-23 ENH: Ingest ITKAnisotropicDiffusionLBR into Modules/Filtering
#6103 merged 2026-04-25 ENH: Ingest ITKMontage remote module into Modules/Registration/Montage
#6135 merged 2026-04-27 ENH: Ingest ITKGenericLabelInterpolator into Modules/Filtering
#6137 merged 2026-04-28 ENH: Ingest ITKMGHIO into Modules/IO
#6159 merged 2026-04-29 ENH: Ingest ITKFastBilateral into Modules/Filtering (supersedes #5134)
#6161 merged 2026-04-29 ENH: Ingest ITKMeshNoise into Modules/Filtering (closes #5174)
#6208 merged 2026-05-05 ENH: Ingest ITKRLEImage into Modules/Filtering
#6235 merged 2026-05-08 ENH: Ingest ITKAdaptiveDenoising into Modules/Filtering
#6238 merged 2026-05-09 ENH: Ingest ITKTextureFeatures into Modules/Filtering
#6240 merged 2026-05-09 ENH: Ingest ITKPrincipalComponentsAnalysis into Modules/Numerics
#6242 merged 2026-05-12 ENH: Ingest ITKHigherOrderAccurateGradient into Modules/Filtering
#6243 merged 2026-05-13 ENH: Ingest ITKSmoothingRecursiveYvvGaussianFilter into Modules/Filtering
#6260 merged 2026-05-13 ENH: Ingest ITKParabolicMorphology into Modules/Filtering
#6263 merged 2026-05-13 ENH: Ingest MultipleImageIterator into Modules/Core
#6266#6276 open (Wave 2 batch) ENH: Wave-2 ingest PRs driven by v4 pipeline (IOScanco, IsotropicWavelets, Thickness3D, Strain, PhaseSymmetry, MinimalPathExtraction, BoneEnhancement, BoneMorphometry, GrowCut, RANSAC, VariationalRegistration)
#6277 closed ENH: Ingest ITKSimpleITKFilters (abandoned per Tier-B disposition)
#6162 open COMP: Deprecate linearizing ingest helper; add merge-preserving rewriter
#6151 open COMP: Prune superseded GitHub Actions ccache entries from CI
#6085 closed ENH: Add Modules/Beta/ container (alternative approach abandoned in favor of natural-group ingest)
#6086 closed WIP: Ingest 10 beta modules under Modules/Beta/ (stacked on #6085, abandoned)
#6072 closed WIP: REMOTE_MODULE_TEST DCMTK external module compatibility (parked)
#6061 closed WIP: Combine many remote to few remote module groups (alternative approach abandoned)
#5134 closed dzenanz's original FastBilateral integration (superseded by #6159)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions