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.
- 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
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.
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#
Applications
Applications are programs that often provide a GUI and/or use other toolkits, e.g. VTK.
Examples:
- Volview Plugins
- V3D Plugins
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 A2D2 Contributions
Git Topic Branches
Scenario: the refactoring team has been working on a separate repository and have branches for their work.
Checkout their topic branch
git checkout MyWorkingBranch
Update their master
git fetch origin master:master
Merge master into their topic branch
git merge master
See Status
The following command will show any conflicts resulting from the merge
git status
Brainstorming
Raghu1
- New Application (with GUI and Viz)
- New classes (denoising)
Raghu2
- New classes
- Color correction, artifact removal, image registration
Deconvolution
- New classes
- New Internal Module
Video
- New Internal Modules
- Some Bridge Modules
Video Grabber
- New Classes
- Some Bridge Modules
CMU Course
- New Classes
- Some Bridge Modules
- (OpenCV point cloud library)
Shape Modeling
- New Classes
- New Internal Modules
Nikos NRR
- Application
- External Layer ?