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:MorphologicalContourInterpolation — by far the highest community-demand signal in the Wave 1 queue (34 upstream stars vs. 1–9 for the rest), actively maintained (push 2026-04-23), 3.5 MB repo, owned by @dzenanz. Used heavily for slice-gap filling in 3D medical-image segmentation. Recommend ingesting next.

  • LabelErodeDilateModules/Filtering/ (ENH: Ingest ITKLabelErodeDilate into Modules/Filtering #6171, merged 2026-04-30; 5★ upstream)
  • MorphologicalContourInterpolationModules/Filtering/ (34★, recently maintained — next)
  • IOMeshSTLModules/IO/ (9★, dominant 3D-mesh interchange format)
  • CuberilleModules/Filtering/ (6★, isosurface mesh extraction)
  • SplitComponentsModules/Filtering/ (5★)
  • SubdivisionQuadEdgeMeshFilterModules/Filtering/ (4★)
  • ParabolicMorphologyModules/Filtering/ (3★)
  • SmoothingRecursiveYvvGaussianFilterModules/Filtering/ (2★)
  • IOMeshMZ3Modules/IO/ (2★)
  • IOFDFModules/IO/ (2★)
  • HigherOrderAccurateGradientModules/Filtering/ (1★)
  • PolarTransformModules/Filtering/ (1★)
  • MultipleImageIteratorModules/Filtering/ (1★)

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

  • IOScancoModules/IO/ — wrapping bug IOScanco wrapping fails do to fatal error: 'itkCommand.h' file not found #5920 (closed 2026-03-11) signals active user dependency
  • BoneEnhancementModules/Filtering/
  • BoneMorphometryModules/Filtering/
  • TextureFeaturesModules/Filtering/
  • IsotropicWaveletsModules/Filtering/
  • GrowCutModules/Segmentation/
  • RANSACModules/Registration/
  • VariationalRegistrationModules/Registration/
  • Thickness3DModules/Filtering/
  • StrainModules/Filtering/
  • PhaseSymmetryModules/Filtering/
  • SimpleITKFiltersModules/Filtering/
  • IOScancoModules/IO/

Phase 4 — Tier B (external-dependency or ABI-sensitive; remain remote pending design)

These are explicitly NOT in the ingest queue without further discussion. They depend on optional external libraries, large data caches, or carry niche scope:

  • CudaCommon, RTK, VkFFTBackend — GPU/CUDA stacks, separate licensing/build matrix
  • SCIFIO, IOOpenSlide, IOTransformDCMTK — large external libraries (Bio-Formats, OpenSlide, DCMTK)
  • TubeTK, Ultrasound, LesionSizingToolkit, HASI, SkullStrip, Cleaver — domain-specific toolkits with their own release cadences
  • TractographyTRX, MeshToPolyData, PerformanceBenchmarking, SphinxExamples, WebAssemblyInterface, PrincipalComponentsAnalysis, FixedPointInverseDisplacementField, BSplineGradient, AdaptiveDenoising, AnalyzeObjectLabelMap, BioCell, RLEImage, Shape, FPFH, IOMeshSWC, MinimalPathExtraction, TwoProjectionRegistration, TotalVariation — review case-by-case in Phase 5

Phase 5 — discoverability & docs

Status table — every entry under Modules/Remote/ today

(L = Wave 1 ingest queue · 2 = Wave 2 ingest queue · A = archive without ingest · K = keep remote, Tier B · ✓ = ingested · ? = decide in Phase 5)

Module Disposition Notes
AdaptiveDenoising ?
AnalyzeObjectLabelMap ?
BioCell ?
BoneEnhancement 2
BoneMorphometry 2
BSplineGradient ?
Cleaver K external Cleaver dep
Cuberille L
CudaCommon K CUDA stack
FastBilateral merged via #6159 (2026-04-29)
FixedPointInverseDisplacementField ?
FPFH ?
GrowCut 2
HASI K hierarchical anatomy stack
HigherOrderAccurateGradient L
IOFDF L
IOMeshMZ3 L
IOMeshSTL L
IOMeshSWC ?
IOOpenSlide K OpenSlide dep
IOScanco 2
IOTransformDCMTK K DCMTK dep
IsotropicWavelets 2
LabelErodeDilate merged via #6171 (2026-04-30)
LesionSizingToolkit K toolkit scope
MeshNoise merged via #6161 (2026-04-29); closed #5174
MeshToPolyData ?
MinimalPathExtraction ?
MorphologicalContourInterpolation L⭐ next ingest target — 34★ upstream, actively maintained
MultipleImageIterator L
ParabolicMorphology L
PerformanceBenchmarking K benchmark harness, separate cadence
PhaseSymmetry 2
PolarTransform L
PrincipalComponentsAnalysis ?
RANSAC 2
RLEImage ?
RTK K reconstruction toolkit
SCIFIO K Bio-Formats dep
Shape ?
SimpleITKFilters 2
SkullStrip K toolkit scope
SmoothingRecursiveYvvGaussianFilter L
SphinxExamples K docs harness
SplitComponents L
Strain 2
SubdivisionQuadEdgeMeshFilter L
TextureFeatures 2
Thickness3D 2
TotalVariation ?
TractographyTRX ?
TubeTK K toolkit scope
TwoProjectionRegistration ?
Ultrasound K toolkit scope
VariationalRegistration 2
VkFFTBackend K VkFFT dep
WebAssemblyInterface K wasm build harness

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)
#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

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions