ITK/Release 4/Modularization: Difference between revisions

From KitwarePublic
< ITK‎ | Release 4
Jump to navigationJump to search
 
(22 intermediate revisions by 4 users not shown)
Line 1: Line 1:
== Why Modularization? ==
== Why Modularization==
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 20: Line 20:
http://www.itk.org/Wiki/images/7/75/ITKv4-Modularization-2010-12-03.pdf
http://www.itk.org/Wiki/images/7/75/ITKv4-Modularization-2010-12-03.pdf


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


1) Find / label / remove the trash in ITK.
1) Find / label / remove the trash in ITK.
Line 35: Line 34:
5) Maintain that level of quality as more code is added to the toolkit.
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.
6) Facilitate the use of add-ons with ITK (External and Remote Modules) without having to include them in the toolkit.


== Module Dependency Visualization ==


== Use Cases ==
* [[ITK_Release_4/Modularization/Module Dependency Visualization|Module Dependency Visualization]]


* [[ITK_Release_4/Modularization/Use Cases|Use Cases]]
== Information for  ITK Users ==


== Code Reviews ==
* [[ITK_Release_4/Modularization/Configure and build ITK|Configure and build ITK]]


* [[ITK_Release_4/Modularization/Code Reviews|Code Reviews]]
== Information for ITK Developers ==
* [[ITK_Release_4/Modularization/ Add tests|Add tests]]


==  Latest Progress ==
* [[ITK_Release_4/Modularization/Add an external module (external module)|Add an External or Remote module]]


=== Access modularized ITK ===
* [[ITK_Release_4/Modularization/ Add a module|Add a module (internal module)]]
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/Add new classes|Add a new class]]
  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]]
== A Collection of Use Cases ==


=== Build modularized ITK  ===
* [[ITK_Release_4/Modularization/Use Cases|Use Cases]]
  cd  <path to bin>/bin/modularITK
  ccmake  <HeadOfModuarITKTree>
  make


Users could choose to build certain groups of modules by turning the ITKGroup_<xxx> ON.
== Code Reviews ==


The grouping of modules are listed in:  <HeadOfModuarITKTree>/CMake/ITKGroups.cmake.
* [[ITK_Release_4/Modularization/Code Reviews|Code Reviews]]


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


* [[ITK_Release_4/Modularization/Modular Dashboard|Modular Dashboard]]


=== FAQs (under construction)  ===
== Development history==
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?
Initial plan  [[ITK_Release_4/Modularization/Purposes|Steps and tools]]
 
== Development history==


Initial Goals [[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]]

Latest revision as of 18:48, 14 July 2012

Why Modularization

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 (External and Remote Modules) without having to include them in the toolkit.

Module Dependency Visualization

Information for ITK Users

Information for ITK Developers

A Collection of Use Cases

Code Reviews

Modular Dashboard

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