April 2011: Recent Releases

ITK Modularization in ITK 4.0
One of the major undertakings of the upcoming ITK 4.0 release is the modularization of ITK. Modularization is the process by which the many classes of ITK will be grouped into smaller and cohesive components. We will refer to those components as modules. This grouping will enable users to select a subset of those components to be used for supporting the development of their application.

The rationale for modularizing the toolkit is the following:
•    Growth management
    Raising the bar of software quality
•    Removing outdated pieces of software
•    Facilitating the use of add-ons to ITK

The need for managing the growth of the toolkit is clearly illustrated in the figure below. Active development of the toolkit was funded by the National Library of Medicine from 1999 to 2005. After that period, only maintenance of the software was funded. Despite the fact that after 2005 there was no direct funding for development, the toolkit continued to grow in an almost linear way. This fact in itself demonstrates that the toolkit was adopted and cared for by a large community of contributors. We anticipate that the toolkit will continue to grow at a similar rate, as new algorithms appear in the literature and are ported to ITK. We must therefore prepare a process of organized growth ensuring the manageability of the software despite its size.

Modularization will also facilitate the evaluation of software quality control metrics at a finer granularity, such as code coverage, valgrind errors, doxygen documentation warnings and coding style. This finer granularity of reporting enables developers to work on problems more effectively, since the effort can be focused in a given module, and the outcomes of the effort is more clearly verified without being confused with the state of the many other files in the system.

The process of modularizing the toolkit is similar to the process of moving from one home to another. It gives us an opportunity to find may forgotten objects and to reconsider whether we want to keep them or not. We have identified a number of classes to be deprecated, and have also remade the entire CMake infrastructure of the toolkit, now taking advantage of the most recent functionalities of CMake 2.8.3.

Finally, we will configure the modularization in such a way that institutions can offer additional ITK modules to third party users, essentially creating an open ITK market for add-ons. The ITK ecosystem will then expand to include specialized modules that may be of interest to a subset of the community and that traditionally may not have been considered general enough to be included in the toolkit itself.

One of the key aspects of the modularization is the formalization of dependencies across modules. The figure below illustrates these dependencies by taking advantage of the Information visualization functionalities of VTK.

Application developers will be able to prepackage the subset of ITK that they actually use, and thus reduce the burden of maintenance of their complete software environment.

We look forward to the feedback of the ITK community regarding their use cases for modularization and suggestions for making the toolkit a more useful and maintainable resource for the decade to come. Please see
http://www.itk.org/Wiki/ITK_Release_4/Modularization

CMake 2.8.5
The CMake version 2.8.5 release is scheduled for April 2011. The bug fix road map for version 2.8.5 can be found
at http://public.kitware.com/Bug/roadmap_page.php. The change log for bugs that have already been fixed is located at http://public.kitware.com/Bug/changelog_page.php.
Please try the release candidates for CMake 2.8.5 to build your projects as they become available in April. Let us know on the mailing list if you run into anything unexpected.

MIDAS
The team working on MIDAS has just released updates for the MIDAS Server and MIDAS Desktop. The MIDAS Server 2.8.0 release includes improved server-side processing via the BatchMake plugin, enhanced API to support the MIDAS desktop and an updated shopping cart for data download and aggregation. Additionally, we have enhanced its stability on Windows servers and its support for upload files greater than 4 GB, as well as the hash-addressable download support. There are new user agreements attached to given communities for conditions on data dissemination. Lastly, MIDAS has moved to Git for version control.

MIDAScpp 1.6.0 has added several new features. The MIDASDesktop GUI layout has been redesigned for usability, progress reporting during upload and download has been improved and a one-step upload command to MIDAScli has been added. There are now options in the Preferences menu to copy or move the entire resource tree to a new location and the client tree is now updated dynamically as data is pulled. Many aspects of MIDASDesktop that are slow have been multithreaded and MIDASDesktop now actively monitors the filesystem so that changes to files under local database control will be recognized automatically by the application. Metadata fields have been added, including total size of communities, collections, and items and can be updated with rich text editors.

Additionally, with this new release, users can:
    Import existing data into their database without having to pull it from the server.
    Cancel long running network-based operations in MIDASDesktop, such as pulls and refreshes.
    Create a new empty local database at any time via MIDASDesktop.
    Pull data from the server by dragging and dropping resources between trees.
•    Authenticate using username and password instead of with a web API key.

IGSTK
The Image-Guided Surgery Toolkit team released IGSTK 4.4 in February. This minor release has several new features, including support for Ascension’s 3D Guidance trackers (medSAFE, driveBAY and trakSTAR); PET image readers, spatial object and representation classes; and PET/CT fused image and electromagnetic tracker-guided needle biopsy application examples. The build instructions and new release download can be found on the IGSTK public wiki.

Questions or comments are always welcome!