ITK/Release 4/New Code Contribution Process: Difference between revisions
No edit summary |
No edit summary |
||
Line 7: | Line 7: | ||
== New Classes and Filters == | == New Classes and Filters == | ||
A new class (or filter) must be submitted to the [http://www.insight-journal.org/ Insight Journal]. | A new class (or filter) must be submitted to the [http://www.insight-journal.org/ Insight Journal]. | ||
===Process=== | |||
# Follow [[ITK/Git|the procedure to become an ITK developer and setup your environment]]. | # Follow [[ITK/Git|the procedure to become an ITK developer and setup your environment]]. | ||
# [http://www.insight-journal.org/help/submission Submission to the Insight Journal] | # [http://www.insight-journal.org/help/submission Submission to the Insight Journal] | ||
Line 19: | Line 21: | ||
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. | 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. | ||
===Process=== | |||
=== Process === | |||
# Follow [[ITK/Git|the procedure to become an ITK developer and setup your environment]]. | # Follow [[ITK/Git|the procedure to become an ITK developer and setup your environment]]. | ||
# Follow [[ITK_Release_4/Modularization/_Add_a_module| the procedure to Add an Internal Module]] | |||
# Create a topic branch | # Create a topic branch | ||
# For review purposes: | # For review purposes: | ||
Line 42: | Line 37: | ||
#* Notify ITK developers list, requesting your branch to be merged into ITK master | #* Notify ITK developers list, requesting your branch to be merged into ITK master | ||
=== | ===Examples=== | ||
* Video classes | |||
* GPU Support | |||
* Deconvolution | |||
Examples | == Bridge Modules == | ||
A bridge module is one that depends on third party headers not distributed with ITK. A bridge modules usually connects clsses that interface to two toolkits. | |||
===Process=== | |||
TBD | |||
===Examples=== | |||
* Connecting ITK to VTK | * Connecting ITK to VTK | ||
* Connecting ITK to OpenCV | * Connecting ITK to OpenCV | ||
* Connecting ITK to dcmtk | * Connecting ITK to dcmtk | ||
== External Modules == | == 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. | 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. | ||
===Process=== | |||
# Follow [[ITK/Git|the procedure to become an ITK developer and setup your environment]]. | # Follow [[ITK/Git|the procedure to become an ITK developer and setup your environment]]. | ||
# [[ITK_Release_4/Modularization/Add_an_external_module_%28external_module%29|Then add an external module]] | # [[ITK_Release_4/Modularization/Add_an_external_module_%28external_module%29|Then add an external module]] | ||
Examples | ===Examples=== | ||
* Lesion Sizing Toolkit | * Lesion Sizing Toolkit | ||
** see the [http://public.kitware.com/LesionSizingKit/index.php/Main_Page Lesion Sizing Toolkit]. | ** see the [http://public.kitware.com/LesionSizingKit/index.php/Main_Page Lesion Sizing Toolkit]. | ||
Line 76: | Line 75: | ||
Software that presents a different interface to ITK. | Software that presents a different interface to ITK. | ||
Examples | ===Process=== | ||
TBD | |||
===Examples=== | |||
* SimpleITK | * SimpleITK | ||
Line 90: | Line 92: | ||
*** The superbuild will group the external layer along with ITK into a larger distribution... | *** The superbuild will group the external layer along with ITK into a larger distribution... | ||
== | ==Application == | ||
Applications are programs that often provide a GUI and/or use other toolkits, e.g. [http://vtk.org/ VTK]. | Applications are programs that often provide a GUI and/or use other toolkits, e.g. [http://vtk.org/ VTK]. | ||
Examples | ===Process=== | ||
TBD | |||
===Examples=== | |||
* Volview Plugins | * Volview Plugins | ||
* V3D Plugins | * V3D Plugins | ||
=== Open Questions === | ===Open Questions=== | ||
* Alternatives | * Alternatives | ||
Line 118: | Line 123: | ||
Bug fixes are contributions that repair defects reported in the [http://public.kitware.com/Bug/view_all_bug_page.php Mantis Bug Tracker] or repair daily defects that creep into ITK. | Bug fixes are contributions that repair defects reported in the [http://public.kitware.com/Bug/view_all_bug_page.php Mantis Bug Tracker] or repair daily defects that creep into ITK. | ||
===Process=== | |||
# Follow [[ITK/Git/Develop|the procedure to become an ITK developer]]. | # Follow [[ITK/Git/Develop|the procedure to become an ITK developer]]. | ||
# Post as a [[ITK/Git/Develop#Workflow|Gerrit Patch]] | # Post as a [[ITK/Git/Develop#Workflow|Gerrit Patch]] | ||
Line 124: | Line 131: | ||
# After Gerrit peer-review, [[ITK/Git/Develop#Merge_a_Topic|merge the topic]]. | # After Gerrit peer-review, [[ITK/Git/Develop#Merge_a_Topic|merge the topic]]. | ||
== Wiki Examples == | ==Wiki Examples== | ||
Wiki examples are independent, compilable examples that illustrate ITK concepts. | Wiki examples are independent, compilable examples that illustrate ITK concepts. | ||
===Process=== | |||
Follow [[ITK/Examples/Instructions/ForDevelopers|this procedure]] to add a Wiki example. | Follow [[ITK/Examples/Instructions/ForDevelopers|this procedure]] to add a Wiki example. | ||
Revision as of 17:54, 19 June 2011
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.
Process
- 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.
Process
- Follow the procedure to become an ITK developer and setup your environment.
- Follow the procedure to Add an Internal Module
- 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
Examples
- Video classes
- GPU Support
- Deconvolution
Bridge Modules
A bridge module is one that depends on third party headers not distributed with ITK. A bridge modules usually connects clsses that interface to two toolkits.
Process
TBD
Examples
- Connecting ITK to VTK
- Connecting ITK to OpenCV
- Connecting ITK to dcmtk
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.
Process
- Follow the procedure to become an ITK developer and setup your environment.
- Then add 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.
Process
TBD
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...
Application
Applications are programs that often provide a GUI and/or use other toolkits, e.g. VTK.
Process
TBD
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.
Process
- 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.
Process
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)
ITK Algorithms for Analyzing Time-varying Shape with Application to Longitudinal Heart Modeling
- New Classes
- New Internal Modules
3D Real-time Physics-based Non-rigid Registration for Image-guided Neurosurgery
- Application
- External Layer ?
Denoising Microscopy, MRI, and Ultrasound Images
- New Classes
- New Internal Modules