ITK/Release 4/Migration Plan/Phases

From KitwarePublic
Jump to navigationJump to search

Overview

We propose a Transition Plan that includes the following six phases

  • Phase I: Sequestering Reference Applications
  • Phase-II: Basic Clean Up
  • Phase-III: Update CMake Flags

Phase-I: Sequestering Reference Applications

Fork, Freeze and Sequester Reference ITK-Exercising Code

  • ITK Testing directory
  • ITK Examples directory
  • Insight Applications
  • Slicer3 clone
  • ITK-SNAP Clone
  • Brains clone

Configure them all to submit Nightly builds to the TKv4 External Builds section of the ITK Dashboard.

This will be the reference for Backward Compatibility.

From now on, classes that break these tests, must provide Migration Form (**) before they make it into Master.


Phase-II: Basic Clean Up

  • Release ITK 3.20: July 15
  • Fork ITK 3.20 into a Git repository
  • Remove work-arounds for lack of partial specialization
  • Remove conditional code related to deprecated compilers
    • VS6, VS7, BCC 5.5, Sun CC, IRIX
  • Remove over-sized image data files from
    • Testing/Data/Input and Examples/Data
      • (any image larger than 100K)
      • This is done to avoid the large size of a Git repository with history.
      • or remove them All (?) and move them to a downloadable module ?

Phase-III: Update CMake Flags

  • Update CMake requirement to 2.8.2
  • Move CMake Flags defaults forward:
    • Consolidated Morphology ON
    • ITK_USE_REVIEW:BOOL=ON
    • ITK_USE_REVIEW_STATISTICS:BOOL=ON
    • ITK_USE_OPTIMIZED_REGISTRATION_METHODS:BOOL=ON,
    • ITK_USE_PORTABLE_ROUND:BOOL=ON
    • ITK_USE_CENTERED_PIXEL_COORDINATES_CONSISTENTLY:BOOL=ON
    • ITK_USE_TRANSFORM_IO_FACTORIES:BOOL=ON
    • Or remove the flags altogether and remove the code that corresponds to their OFF behavior.

Phase-IV: Update third party libraries

  • Update GDCM 1.2 to GDCM 2.0
  • Update OpenJpeg to V2
  • Add JPEG2000ImageIO (from NAMIC Sandbox)
  • Update TIFF
  • Update PNG
  • Update JPEG


Phase-V: Create Topic Branches

  • Fork Git and create topic branch for WrapITK team
  • Fork Git and create topic branch for Level Sets team
  • Fork Git and create topic branch for Registration team
  • Fork Git and create topic branch for SimpleITK team
  • Create Emtpy Git Master Repository
  • Implement Stringent Testing Infrastucture in Master


Phase-VI: Modularize

  • Move Code/Review directory to a separate module.
  • Review Kernel classes
  • Move Kernel classes into Master
  • Define groups for Core Modules
  • For i to N: Review Module: Move Module into Master
    • Configure CMake acquisition of modules outside Core
  • Release ITK 4.0: Beta