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.
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.
LabelErodeDilate → Modules/Filtering/ (ENH: Ingest ITKLabelErodeDilate into Modules/Filtering #6171 , merged 2026-04-30; 5★ upstream)
⭐ MorphologicalContourInterpolation → Modules/Filtering/ (ENH: Ingest ITKMorphologicalContourInterpolation (stacked on #6208) #6209 , merged 2026-05-07)
IOMeshSTL → Modules/IO/IOMeshSTL/ (ENH: Ingest ITKIOMeshSTL into Modules/IO #6206 , merged 2026-05-05)
Cuberille → Modules/Filtering/ (6★, isosurface mesh extraction)
SplitComponents → Modules/Filtering/SplitComponents/ (ENH: Ingest ITKSplitComponents into Modules/Filtering #6212 , merged 2026-05-05)
SubdivisionQuadEdgeMeshFilter → Modules/Filtering/SubdivisionQuadEdgeMeshFilter/ (ENH: Ingest ITKSubdivisionQuadEdgeMeshFilter into Modules/Filtering (v4, stacks on #6204) #6229 , merged 2026-05-07)
ParabolicMorphology → Modules/Filtering/ (ENH: Ingest ITKParabolicMorphology into Modules/Filtering #6260 , merged 2026-05-13; 3★)
SmoothingRecursiveYvvGaussianFilter → Modules/Filtering/ (ENH: Ingest ITKSmoothingRecursiveYvvGaussianFilter into Modules/Filtering #6243 , merged 2026-05-13; 2★)
IOMeshMZ3 → Modules/IO/IOMeshMZ3/ (ENH: Ingest ITKIOMeshMZ3 into Modules/IO #6214 , merged 2026-05-05)
IOFDF → Modules/IO/IOFDF/ (ENH: Ingest ITKIOFDF into Modules/IO #6215 , merged 2026-05-05)
HigherOrderAccurateGradient → Modules/Filtering/ (ENH: Ingest ITKHigherOrderAccurateGradient into Modules/Filtering #6242 , merged 2026-05-12; 1★)
PolarTransform → Modules/Filtering/PolarTransform/ (ENH: Ingest ITKPolarTransform into Modules/Filtering #6211 , merged 2026-05-05)
MultipleImageIterator → Modules/Core/ (ENH: Ingest MultipleImageIterator into Modules/Core #6263 , merged 2026-05-13; 1★)
RLEImage → Modules/Filtering/RLEImage/ (ENH: Ingest ITKRLEImage into Modules/Filtering #6208 , merged 2026-05-05)
AdaptiveDenoising → Modules/Filtering/AdaptiveDenoising/ (Ingest ITKAdaptiveDenoising into Modules/Filtering #6235 , merged 2026-05-08)
PrincipalComponentsAnalysis → Modules/Numerics/PrincipalComponentsAnalysis/ (ENH: Ingest ITKPrincipalComponentsAnalysis into Modules/Numerics #6240 , merged 2026-05-09)
AnalyzeObjectLabelMap — disposition A (dropped, deprecated; not ingested per COMP: Drop AnalyzeObjectLabelMap remote module (deprecated, not ingested) #6207 , 2026-05-06)
Wave 2 (richer or external-data-heavy). ⭐ = recent user-filed issue raises priority.
⭐ IOScanco → Modules/IO/ (ENH: Ingest ITKIOScanco into Modules/IO #6266 , OPEN) — wrapping bug IOScanco wrapping fails do to fatal error: 'itkCommand.h' file not found #5920 (closed 2026-03-11) signals active user dependency
BoneEnhancement → Modules/Filtering/ (ENH: Ingest ITKBoneEnhancement into Modules/Filtering/BoneEnhancement #6272 , OPEN draft)
BoneMorphometry → Modules/Filtering/ (ENH: Ingest ITKBoneMorphometry into Modules/Filtering/BoneMorphometry #6273 , OPEN draft)
TextureFeatures → Modules/Filtering/TextureFeatures/ (ENH: Ingest ITKTextureFeatures into Modules/Filtering #6238 , merged 2026-05-09)
IsotropicWavelets → Modules/Filtering/ (ENH: Ingest ITKIsotropicWavelets into Modules/Filtering #6267 , OPEN)
GrowCut → Modules/Segmentation/ (ENH: Ingest ITKGrowCut into Modules/Segmentation/GrowCut #6274 , OPEN draft)
RANSAC → Modules/Registration/ (ENH: Ingest ITKRANSAC into Modules/Registration/RANSAC #6275 , OPEN draft)
VariationalRegistration → Modules/Registration/ (ENH: Ingest ITKVariationalRegistration into Modules/Registration/VariationalRegistration #6276 , OPEN draft)
Thickness3D → Modules/Filtering/ (ENH: Ingest ITKThickness3D into Modules/Filtering/Thickness3D #6268 , OPEN draft)
Strain → Modules/Filtering/ (ENH: Ingest ITKStrain into Modules/Filtering/Strain #6269 , OPEN draft)
PhaseSymmetry → Modules/Filtering/ (ENH: Ingest ITKPhaseSymmetry into Modules/Filtering/PhaseSymmetry #6270 , OPEN draft)
MinimalPathExtraction → Modules/Filtering/ (ENH: Ingest ITKMinimalPathExtraction into Modules/Filtering/MinimalPathExtraction #6271 , OPEN)
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)
Bucket 2 — Phase 4 gated ingest (behind existing option; no new external dep)
Bucket 3 — Keep remote / do NOT ingest
DO NOT INCLUDE SimpleITKFilters → Modules/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 )
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.cmaketo a small, well-curated set, by either (a) ingesting active modules into the main ITK tree under their natural group (Modules/<Group>/<Name>/) preserving upstreamgit 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)
INGESTION_STRATEGY.md)ingest-remote-module.shwith--audit-onlyand--dry-run— deprecated 2026-04-28 as linearizing the upstream merge graph; replacement merge-preserving rewriter in COMP: Deprecate linearizing ingest helper; add merge-preserving rewriter #6162 (OPEN)normalize-ingest-commits.py(per-commit pre-commit replay; subject-prefix normalization)cid-normalize.sh(md5 → IPFS CID baseline migration)verify-cid-access.sh,verify-whitelist-history.shPruneSupersededCiCaches.py(CI cache hygiene; PR COMP: Prune superseded GitHub Actions ccache entries from CI #6151)Phase 1 — completed ingests
Modules/Filtering/(ENH: Ingest AnisotropicDiffusionLBR into Modules/Filtering #6093, merged 2026-04-23)Modules/Registration/Montage/(ENH: Ingest ITKMontage remote module into Modules/Registration/Montage #6103, merged 2026-04-25)Modules/Filtering/(ENH: Ingest ITKGenericLabelInterpolator into Modules/Filtering #6135, merged 2026-04-27)Modules/IO/MGHIO/(ENH: Ingest ITKMGHIO into Modules/IO #6137, merged 2026-04-28)Modules/Filtering/(ENH: Ingest ITKFastBilateral into Modules/Filtering (supersedes #5134) #6159, merged 2026-04-29; supersedes ENH: Integrate FastBilateralImageFilter from remote module #5134)Modules/Filtering/MeshNoise/(ENH: Ingest ITKMeshNoise into Modules/Filtering (closes #5174) #6161, merged 2026-04-29; closes Compile error inMeshNoise/test/itkAdditiveGaussianNoiseMeshFilterTest.cxx:56#5174)Modules/Filtering/(ENH: Ingest ITKLabelErodeDilate into Modules/Filtering #6171, merged 2026-04-30)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.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.
Modules/Filtering/(ENH: Ingest ITKLabelErodeDilate into Modules/Filtering #6171, merged 2026-04-30; 5★ upstream)Modules/Filtering/(ENH: Ingest ITKMorphologicalContourInterpolation (stacked on #6208) #6209, merged 2026-05-07)Modules/IO/IOMeshSTL/(ENH: Ingest ITKIOMeshSTL into Modules/IO #6206, merged 2026-05-05)Modules/Filtering/(6★, isosurface mesh extraction)Modules/Filtering/SplitComponents/(ENH: Ingest ITKSplitComponents into Modules/Filtering #6212, merged 2026-05-05)Modules/Filtering/SubdivisionQuadEdgeMeshFilter/(ENH: Ingest ITKSubdivisionQuadEdgeMeshFilter into Modules/Filtering (v4, stacks on #6204) #6229, merged 2026-05-07)Modules/Filtering/(ENH: Ingest ITKParabolicMorphology into Modules/Filtering #6260, merged 2026-05-13; 3★)Modules/Filtering/(ENH: Ingest ITKSmoothingRecursiveYvvGaussianFilter into Modules/Filtering #6243, merged 2026-05-13; 2★)Modules/IO/IOMeshMZ3/(ENH: Ingest ITKIOMeshMZ3 into Modules/IO #6214, merged 2026-05-05)Modules/IO/IOFDF/(ENH: Ingest ITKIOFDF into Modules/IO #6215, merged 2026-05-05)Modules/Filtering/(ENH: Ingest ITKHigherOrderAccurateGradient into Modules/Filtering #6242, merged 2026-05-12; 1★)Modules/Filtering/PolarTransform/(ENH: Ingest ITKPolarTransform into Modules/Filtering #6211, merged 2026-05-05)Modules/Core/(ENH: Ingest MultipleImageIterator into Modules/Core #6263, merged 2026-05-13; 1★)Modules/Filtering/RLEImage/(ENH: Ingest ITKRLEImage into Modules/Filtering #6208, merged 2026-05-05)Modules/Filtering/AdaptiveDenoising/(Ingest ITKAdaptiveDenoising into Modules/Filtering #6235, merged 2026-05-08)Modules/Numerics/PrincipalComponentsAnalysis/(ENH: Ingest ITKPrincipalComponentsAnalysis into Modules/Numerics #6240, merged 2026-05-09)Wave 2 (richer or external-data-heavy). ⭐ = recent user-filed issue raises priority.
Modules/IO/(ENH: Ingest ITKIOScanco into Modules/IO #6266, OPEN) — wrapping bug IOScanco wrapping fails do to fatal error: 'itkCommand.h' file not found #5920 (closed 2026-03-11) signals active user dependencyModules/Filtering/(ENH: Ingest ITKBoneEnhancement into Modules/Filtering/BoneEnhancement #6272, OPEN draft)Modules/Filtering/(ENH: Ingest ITKBoneMorphometry into Modules/Filtering/BoneMorphometry #6273, OPEN draft)Modules/Filtering/TextureFeatures/(ENH: Ingest ITKTextureFeatures into Modules/Filtering #6238, merged 2026-05-09)Modules/Filtering/(ENH: Ingest ITKIsotropicWavelets into Modules/Filtering #6267, OPEN)Modules/Segmentation/(ENH: Ingest ITKGrowCut into Modules/Segmentation/GrowCut #6274, OPEN draft)Modules/Registration/(ENH: Ingest ITKRANSAC into Modules/Registration/RANSAC #6275, OPEN draft)Modules/Registration/(ENH: Ingest ITKVariationalRegistration into Modules/Registration/VariationalRegistration #6276, OPEN draft)Modules/Filtering/(ENH: Ingest ITKThickness3D into Modules/Filtering/Thickness3D #6268, OPEN draft)Modules/Filtering/(ENH: Ingest ITKStrain into Modules/Filtering/Strain #6269, OPEN draft)Modules/Filtering/(ENH: Ingest ITKPhaseSymmetry into Modules/Filtering/PhaseSymmetry #6270, OPEN draft)Modules/Filtering/(ENH: Ingest ITKMinimalPathExtraction into Modules/Filtering/MinimalPathExtraction #6271, OPEN)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)
4; INGEST FIRST (COMPILE_DEPENDS of BSplineGradient/others; ITKCommon/Mesh only)4(ITKCommon/ImageGrid/IOImageBase)4(after MeshToPolyData)4(ITK registration stack)4(ITKEigen3 in-tree)4(ITKMesh/Transform; non-ISC upstream)4(ITKRegistrationCommon)4(ITKIOMeshBase)Bucket 2 — Phase 4 gated ingest (behind existing option; no new external dep)
4; ingestEXCLUDE_FROM_DEFAULTgated byModule_ITKDCMTK(DCMTK already bundled in-tree)Bucket 3 — Keep remote / do NOT ingest
Modules/Filtering/BUILD_EXAMPLES-gatedBucket 4 — Still needs investigation
trx-cpp; licensing review needed before any ingest decisionPhase 5 — discoverability & docs
Modules/Remote/Doxygen disablement reason no longer applies module-by-module (Re-enable doxygen processing of the "Remote" directories. #990)Documentation/docs/migration_guides/itk_6_migration_guide.mdwith the consolidated remote-module disposition tableStatus 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)
Also tracked outside
Modules/Remote/:Subsumed and related issues
MeshNoise/test/itkAdditiveGaussianNoiseMeshFilterTest.cxx:56#5174 (seanm, 2025-01-24) — MeshNoise compile error; resolved by ENH: Ingest ITKMeshNoise into Modules/Filtering (closes #5174) #6161 (merged 2026-04-29).Modules/Remote/; folded into Phase 5.Recent PR activity (past three weeks)