ITK/Release 4/New Code Contribution Process

From KitwarePublic
Jump to navigationJump to search

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.

  1. Submission to the Insight Journal
  2. Code Reviewed using the Checklist
  3. Posted as Gerrit Patches
  4. Peer-reviewed
  5. Cdash@home tested
  6. 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:

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

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