ITK/Release 4/New Code Contribution Process: Difference between revisions

From KitwarePublic
< ITK‎ | Release 4
Jump to navigationJump to search
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.


Examples:
===Process===
 
* Video classes
* GPU Support
* Deconvolution
 
Xiaoxiao: Will add here link to Wiki page with instructions on how to configure an Internal module.
 
=== 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


=== Bridge Modules ===
===Examples===  


A bridge module is one that depends on third party headers not distributed with ITK.
* 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
A bridge module involves:
# Connecting classes that interface two toolkit


== 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.


Follow this 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]].
# [[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...


== Applications ==
==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

  1. Follow the procedure to become an ITK developer and setup your environment.
  2. Submission to the Insight Journal
  3. Code Reviewed using the Checklist
  4. Posted as Gerrit Patches
  5. Peer-reviewed
  6. Cdash@home tested
  7. 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

  1. Follow the procedure to become an ITK developer and setup your environment.
  2. Follow the procedure to Add an Internal Module
  3. Create a topic branch
  4. 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.
  5. 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

  1. Follow the procedure to become an ITK developer and setup your environment.
  2. Then add an external module

Examples

  • 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
  • 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

  1. Follow the procedure to become an ITK developer.
  2. Post as a Gerrit Patch
    1. Gerrit provides a Peer-review mechanism for the patch
    2. Gerrit uses Cdash@home to provide automated testing of patches
  3. 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:

  1. Enable users to add Examples in the Wiki
  2. Automatically take the new examples and push them as patches to a Gerrit system (with cdash@home testing)
  3. After approval: merging it into a Git repository of Examples (separate from the current ITK Git).

ITKv4 Refactoring

ITKv4 Development Team

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

A2D2 Development Team

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

Framework for Automated Parameter Tuning of ITK Registration Pipelines

SCORE: Systematic Comparison through Objective Rating and Evaluation

SCORE++: Crowd sourced data, automatic segmentation, and ground truth for ITK4

Fostering Open Science for Lung Cancer Lesion Sizing