ITK/Release 4/New Code Contribution Process
This page describes the multiple mechanisms available to contribute code to the ITK Ecosystem.
Overview
Level of Contribution
New Classes and Filters
A new class (or filter) must be submitted to the Insight Journal.
- Follow the procedure to become an ITK developer and setup your environment.
- Submission to the Insight Journal
- Code Reviewed using the Checklist
- Posted as Gerrit Patches
- Peer-reviewed
- Cdash@home tested
- Merged
Internal Modules
Internal modules are full fledged modules that are actually intended to be integrated with the ITK git repository and to be distributed as part of ITK.
Examples:
- Video classes
- GPU Support
- Deconvolution
Xiaoxiao: Will add here link to Wiki page with instructions on how to configure an Internal module.
Process
- Follow the procedure to become an ITK developer and setup your environment.
- Create a topic branch
- For review purposes:
- Rebase topic branch on top of master
- git checkout -b topicbranchforreview topicbranch
- git rebase origin/master
- Squash topic branch and submit to Gerrit
- The patch in Gerrit is not intended to be merged directly into ITK. It is here ONLY to be reviewed.
- Rebase topic branch on top of master
- When approved in Gerrit:
- Go back to topic branch
- Merge master into topic branch
- Notify ITK developers list, requesting your branch to be merged into ITK master
Bridge Modules
A bridge module is one that depends on third party headers not distributed with ITK.
Examples:
- Connecting ITK to VTK
- Connecting ITK to OpenCV
- Connecting ITK to dcmtk
A bridge module involves:
- Connecting classes that interface two toolkit
External Modules
External modules are ITK-like modules that cannot be included in ITK because of license issues or should not be included in ITK because of scope and/or specialized use.
Xiaoxiao: Will add here link to Wiki page with instructions on how to configure an External module.
Examples:
- Lesion Sizing Toolkit
- see the Lesion Sizing Toolkit.
- PETSc
- Numerical Libraries that too large to be included in ITK proper
- FFTW
- Library distributed under GPL (overriding the ITK's Apache License)
External Layers
Software that presents a different interface to ITK.
Examples:
- SimpleITK
- see SimpleITK.
- ManagedITK
- Wrapping for C#
Open Questions
- Alternatives
- Use the CMake find_package(ITK) command from th external layer (library or application).
- Use ITK as an external project in a Superbuild approach ?
- The superbuild will group the external layer along with ITK into a larger distribution...
Applications
Applications are programs that often provide a GUI and/or use other toolkits, e.g. VTK.
Examples:
- Volview Plugins
- V3D Plugins
Open Questions
- Alternatives
- Use the CMake find_package(ITK) command from th external layer (library or application).
- Use ITK as an external project in a Superbuild approach ?
- The superbuild will group the external layer along with ITK into a larger distribution...
Adding Data
Data may be needed as part of testing code and/or examples on how to run new layers. Please see the following link for instructions on how to add data:
(new page will be added soon...)
Bug Fixes
Bug fixes are contributions that repair defects reported in the Mantis Bug Tracker or repair daily defects that creep into ITK.
- Follow the procedure to become an ITK developer.
- Post as a Gerrit Patch
- Gerrit provides a Peer-review mechanism for the patch
- Gerrit uses Cdash@home to provide automated testing of patches
- After Gerrit peer-review, merge the topic.
Wiki Examples
Wiki examples are independent, compilable examples that illustrate ITK concepts. Follow this procedure to add a Wiki example.
NOTE: The examples illustrate existing ITK classes and do not introduce new classes.
Brainstorming suggestion for workflow:
- Enable users to add Examples in the Wiki
- Automatically take the new examples and push them as patches to a Gerrit system (with cdash@home testing)
- After approval: merging it into a Git repository of Examples (separate from the current ITK Git).
ITKv4 Refactoring
FEM Refactoring
- Modified existing classes
Level Sets Refactoring
- New Classes
- Modified existing classes
Registration Refactoring
- New Classes
- Modified existing classes
Pipeline Refactoring
- ??
GPU
- New classes
- New Internal Module
DICOM
- GDCM level ?
- Integrated with GDCM upstream ?
SimpleITK
- External Layer
WrapITK
- Internal Layer
ITKv4 A2D2 Contributions
A Comprehensive Workflow for Robust Characterization of Microstructure for Cancer Studies
- New Application (with GUI and Viz)
- New classes (denoising)
Comprehensive Workflow for Large Histology Segmentation and Visualization
- New classes
- Color correction, artifact removal, image registration
Adding Deconvolution Algorithms to ITK
- New classes
- New Internal Module
ITK Extensions for Video Processing
- New Internal Modules
- Some Bridge Modules
Real-Time Image Capture for ITK through a Video Grabber
- New Classes
- Some Bridge Modules
Methods in Medical Image Analysis: an ITK-based course
- New Classes
- Some Bridge Modules
- (OpenCV point cloud library)
Shape Modeling
- New Classes
- New Internal Modules
Nikos NRR
- Application
- External Layer ?
Denoising Microscopy
- New Classes
- New Internal Modules