ITK/Release 4/Modularization: Difference between revisions

From KitwarePublic
< ITK‎ | Release 4
Jump to navigationJump to search
No edit summary
Line 1: Line 1:
== Why Modularization? ==
== why ITK went modular ==
Modularization is a common design answer to the problem of managing complexity and growth.
Modularization is a common design answer to the problem of managing complexity and growth.


Line 21: Line 21:




== Main  Goals ==
== Main  Goals of Modularization==


1) Find / label / remove the trash in ITK.
1) Find / label / remove the trash in ITK.
Line 38: Line 38:




== Use Cases ==
== Information for  ITK Users ==


* [[ITK_Release_4/Modularization/Use Cases|Use Cases]]
* [[ITK_Release_4/Modularization/Obtain ITK|Obtain ITK]]
 
* [[ITK_Release_4/Modularization/Configure ITK|Configure ITK]]
 
* [[ITK_Release_4/Modularization/Build  ITK|Build  ITK]]


== Transition Plan ==
* [[ITK_Release_4/Modularization/Add user classes|Add user classes]]


* [[ITK_Release_4/Modularization/Transition Plan|Transition Plan]]


== Code Reviews ==
== Information for developers ==
* [[ITK_Release_4/Modularization/Add new classes|Add new classes]]
* [[ITK_Release_4/Modularization/ Add tests|Add tests]]
 
* [[ITK_Release_4/Modularization/ Add modules|Add modules]]


* [[ITK_Release_4/Modularization/Code Reviews|Code Reviews]]


==  Latest Progress ==


=== Access modularized ITK ===
== A Collection of Use Cases ==
Here is a spreadsheet version of the Manifest file for your convenience to explore the classes in ITK:[[Media:Manifest1.xlsx|Manifest.xlsx]]


We have also put up a in-progress modularized ITK  (produced at Feb 1st ) in the public git repository:
* [[ITK_Release_4/Modularization/Use Cases|Use Cases]]
  http://itk.org/tmp/modularITK.git
It is a good start point to investigate the new directory structures and the new CMake packaging mechanism in modularized ITK.
 
We also encourage you to run the modularization scripts yourself to get a latest version of the modularized ITK:


[[ITK_Release_4/Modularization/Modulizer|Run Modulziation Scripts]]


=== Build modularized ITK  ===
== Code Reviews ==
  cd  <path to bin>/bin/modularITK
  ccmake  <HeadOfModuarITKTree>
  make


Users could choose to build certain groups of modules by turning the ITKGroup_<xxx> ON.
* [[ITK_Release_4/Modularization/Code Reviews|Code Reviews]]


The grouping of modules are listed in:  <HeadOfModuarITKTree>/CMake/ITKGroups.cmake.


The nightly dashboard  for the modularized ITK can be found at:
[http://www.cdash.org/CDash/index.php?project=ITKModular&display=project]




=== FAQs (under construction)  ===
How to contribute to modularized ITK?
 
How to use modularized ITK in my application?
What about the backward compatibility of modularized ITK? Can I have a code base that compile with both itkv3 and itkv4?


How does modularization will affect Slicer4?


== Development history==
== Development history==


Initial Goals [[ITK_Release_4/Modularization/Purposes|Steps and tools]]
Initial plan [[ITK_Release_4/Modularization/Purposes|Steps and tools]]
 
Prototype  [Iowa Meeting, Nov, 2010]  [[ITK_Release_4/Modularization/Prototype|Prototype]]


Prototype [Iowa Meeting, Nov, 2010] [[ITK_Release_4/Modularization/Prototype|Prototype]]
Progress  report in TCon [[ITK_Release_4/Modularization/Tcon-2010-12-03|2010-12-03]]


TCon [[ITK_Release_4/Modularization/Tcon-2010-12-03|2010-12-03]]
Major progress report [Boston Meeting  Feb 3, 2011]    [[Media:ITKBostonModularization.pptx|PPTX]]


Progress [Boston Meeting  Feb 3, 2011]    [[Media:ITKBostonModularization.pptx|PPTX]]
Transition [[ITK_Release_4/Modularization/Transition Plan|Transition Plan]]

Revision as of 03:45, 30 March 2011

why ITK went modular

Modularization is a common design answer to the problem of managing complexity and growth.

From the Linux Kernel: http://www.ibm.com/developerworks/linux/library/l-lkm/index.html?ca=dgr-lnxw07LinuxLKM&S_TACT=105AGX59&S_CMP=GR

to KDE: https://wiki.archlinux.org/index.php/KDE_Packages#Terminology

to Boost: http://ryppl.github.com/index.html

to Qt: http://labs.qt.nokia.com/2010/10/26/qt-is-going-modular/ http://labs.qt.nokia.com/2011/01/21/status-of-qt-modularization/

Details on the goals of modularization were presented here: http://www.itk.org/Wiki/ITK_Release_4/Modularization/Tcon-2010-12-03 In particular in: http://www.itk.org/Wiki/images/1/16/ITKv4-Modularization-2010-12-03.odp http://www.itk.org/Wiki/images/7/75/ITKv4-Modularization-2010-12-03.pdf


Main Goals of Modularization

1) Find / label / remove the trash in ITK.

2) Organize the ~2,330 files into conceptual cohesive groups.

3) Test and label each group according to measures of quality control : Code coverage, correctness, style, dynamic testing, documentation...

4) Raise the quality bar for critical components. For example, the itkObject must have 100% code coverage, while we could live with the Blox classes having 30%.

5) Maintain that level of quality as more code is added to the toolkit.

6) Facilitate the use of Add-ons with ITK without having to include them in the toolkit.


Information for ITK Users


Information for developers


A Collection of Use Cases


Code Reviews




Development history

Initial plan Steps and tools

Prototype [Iowa Meeting, Nov, 2010] Prototype

Progress report in TCon 2010-12-03

Major progress report [Boston Meeting Feb 3, 2011] PPTX

Transition Transition Plan