Skip to content

WIP: Combine many remote to few remote module groups#6061

Draft
hjmjohnson wants to merge 2 commits intoInsightSoftwareConsortium:mainfrom
hjmjohnson:wip-remote-analysis-consolidation
Draft

WIP: Combine many remote to few remote module groups#6061
hjmjohnson wants to merge 2 commits intoInsightSoftwareConsortium:mainfrom
hjmjohnson:wip-remote-analysis-consolidation

Conversation

@hjmjohnson
Copy link
Copy Markdown
Member

WIP proof of concept for #6060: hierarchical remote module sub-groups.

Adds itk_fetch_module_group() and demonstrates consolidating 7 individual remote repos + SSIM into a single ITKRemoteAnalysis category repo with 8 modules and 1660 preserved commits. All 77 module tests pass locally.

CMake changes (~160 lines, 3 files)
  • CMake/ITKModuleEnablement.cmake — add 4-level glob so Modules/Remote/Analysis/TextureFeatures/itk-module.cmake is discovered
  • CMake/ITKModuleRemote.cmake — new itk_fetch_module_group() function: clones a category repo into Modules/Remote/<Category>/, respects freeze and tag override
  • CMake/ITKGroups.cmake — sub-group request propagation: when ITKGroup_Remote_Analysis=ON, all modules in the Analysis directory are requested for build
Usage
# Enable the Analysis sub-group (clones ITKRemoteAnalysis repo)
cmake -DITKGroup_Remote_Analysis=ON ...

# Modules without EXCLUDE_FROM_DEFAULT build automatically:
#   IsotropicWavelets, PerformanceBenchmarking, RANSAC, StructuralSimilarity

# Modules with EXCLUDE_FROM_DEFAULT need explicit enable:
cmake -DITKGroup_Remote_Analysis=ON \
      -DModule_TextureFeatures=ON \
      -DModule_BoneMorphometry=ON \
      -DModule_BoneEnhancement=ON \
      -DModule_Thickness3D=ON ...
Test results (77/77 pass)
Module Tests Status
BoneEnhancement 2 Pass
BoneMorphometry 4 Pass
IsotropicWavelets 2 Pass
PerformanceBenchmarking 2 Pass
RANSAC 3 Pass
StructuralSimilarity 32 (GTest) Pass
TextureFeatures 25 Pass
Thickness3D 2 Pass
What's NOT in this PR (future work)
  • The ITKRemoteAnalysis repo is local only — needs ISC org repo creation and push
  • The .remote.cmake currently points at a local path; will be updated to GitHub URL
  • CI for the category repo (shared workflow) not yet configured
  • Python wheel packaging for the category repo
  • Other categories (IO, Filtering, Mesh, etc.) follow the same pattern

@github-actions github-actions bot added type:Infrastructure Infrastructure/ecosystem related changes, such as CMake or buildbots area:Remotes Issues affecting the Remote module labels Apr 14, 2026
@hjmjohnson hjmjohnson changed the title WIP: Add itk_fetch_module_group() for remote module consolidation WIP: Combine many remote to few remote module groups Apr 15, 2026
@hjmjohnson hjmjohnson force-pushed the wip-remote-analysis-consolidation branch from 3491800 to d7f44e1 Compare April 15, 2026 00:22

itk_fetch_module_group(Analysis
"Analysis domain: TextureFeatures, BoneMorphometry, BoneEnhancement, Thickness3D, IsotropicWavelets, RANSAC, PerformanceBenchmarking, StructuralSimilarity"
GIT_REPOSITORY https://github.com/hjmjohnson/ITKRemoteAnalysis.git
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it would be helpful to bring these modules into the ITK repository. But not dump them in a different repository, which complicates ownership and maintenance. Or, create a Remote Module Group, that groups the individual repositories.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adding them to the main repository would make sense too, especially for the more well established ones. If doing so, we would need to expand on the concept of "Review" module (which was the path to entering the main repository in the past), including building everything into python packages.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For the remote modules for which we have strong evidence that only the core developers maintain them, I would 100% support bringing them into the ITK repository. That is an enormous maintenance burden relief! I understand the rationale behind the remote modules, but the implementation realities are that it is an extraordinary developer burden.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not sure why effort is being put into consolidating the modules into a single module without bring the modules into ITK. If the rationale that it is an extraordinary developer burdern for ITK developers to maintain all the ITK Remote Modules as Remote modules (and the assumption is that ITK core developers should maintain all Remote Modules, which I did not intend to be the case), then bring them into the ITK repository. Part of the rationale behind remote modules is that non-ITK core developers can create and maintain them outside the ITK repository. This is lost with such an ITKRemoteAnalysis repository.

Add hierarchical sub-group support for remote modules, enabling
consolidation of many single-module repos into category repos.

CMake changes (~160 lines across 3 files):
- ITKModuleEnablement.cmake: add 4-level glob for sub-grouped modules
- ITKModuleRemote.cmake: new itk_fetch_module_group() function
- ITKGroups.cmake: sub-group request propagation for ITKGroup_Remote_*

Proof of concept: ITKRemoteAnalysis replaces 7 individual .remote.cmake
files with a single category repo containing 8 modules (TextureFeatures,
BoneMorphometry, BoneEnhancement, Thickness3D, IsotropicWavelets, RANSAC,
PerformanceBenchmarking, StructuralSimilarity). All 77 tests pass.

Usage:
  cmake -DITKGroup_Remote_Analysis=ON ...
  # Modules with EXCLUDE_FROM_DEFAULT need explicit Module_<name>=ON

Ref: InsightSoftwareConsortium#6060
- Point GIT_REPOSITORY at hjmjohnson/ITKRemoteAnalysis on GitHub
  (was local path, inaccessible to CI)
- Enable ITKGroup_Remote_Analysis and all EXCLUDE_FROM_DEFAULT
  modules in Pixi configure-ci so CI builds and tests all 8
  analysis modules

This is a WIP commit for CI validation — the pyproject.toml changes
will be reverted before merge. The final .remote.cmake will point
at InsightSoftwareConsortium/ITKRemoteAnalysis.

Ref: InsightSoftwareConsortium#6060
@hjmjohnson hjmjohnson force-pushed the wip-remote-analysis-consolidation branch from d7f44e1 to c0a9400 Compare April 16, 2026 02:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:Remotes Issues affecting the Remote module type:Infrastructure Infrastructure/ecosystem related changes, such as CMake or buildbots

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants