No subject
Fri Jan 14 08:05:08 EST 2011
SNAP only include (directly) 140 of those headers.
(the list is attached to this email for convenience)
( interestingly, 16 of those 140 are ImageIO classes )
so,
SNAP uses about 1% of ITK
Granted,
those 140 headers probably pull in another 200..(maybe ?).
but still, that will make about 3~4% of ITK.
----
In the case of Slicer3.6:
There are 467 ITK unique headers included in its source code.
So, Slicer uses about 30% of ITK.
This list of headers is also attached to this email for convenience.
---------------------------------------------------------------------------=
------------
The rationale for modularization derives from this graph:
http://public.kitware.com/pub/itk/InsightStatCVS/loc.html
Essentially:
ITK has Linear Growth
The toolkit has consistently increased in number of lines
during the past ten years. We have every reason to think
that it will continue growing at a similar rate for the next
ten years, as more specialized algorithms and classes are
added to it.
In particular, as we reach out to the application domains
of microscopy, remote sensing and computer vision.
Here is already the bump in growth for 2011:
http://public.kitware.com/pub/itk/gitstat/ITK/lines.html
As more code is added to the toolkit, it becomes harder
to distribute, tests, and maintain. Modularization is one,
among many other (as you point out), approaches for
letting ITK continue growing without getting out of hand.
The immediate goals for modularization are:
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.
So a specialized module that INRIA may create, could be
distributed as a module that specific application developers
can add to their ITK installation as an extra module.
The same way that you can install extra packages in a Linux
distribution, or R-packages in an R installation, or extra packages
in a Latex installation, or extra toolboxes in Matlab, or extra plugins
in Firefox.
Points (1-5) relate quite closely to Six Sigma methodologies
http://en.wikipedia.org/wiki/Six_Sigma#DMAIC
that you know better than any of us.
They map to :
Define,
Measure
Analyze
Improve
Control
---------------------------------------------------------------------
Modularization is a common design answer to the
problem of managing complexity and growth.
More information about the Insight-developers
mailing list