Slicer4

From Slicer Wiki
Jump to: navigation, search
Home < Slicer4

Overview

Slicer4 (officially 3D Slicer version 4) will be the next big development in the history of the 3D Slicer project. It's also an opportunity to adopt some new programming styles and break with a few past traditions. Overall though it should maintain the same spirit as earlier versions of slicer in a more modern wrapper.

Main Features

(Note that things will evolve as the project progresses).

  • The biggest and most visible change is the outgrowth of the port of Slicer's GUI from KWWidgets to Qt. This is the outgrowth of a much consideration and research.
  • Increased focus on python as the main scripting interface
  • Use of CMake external project feature (a.k.a. SuperBuild) as default build method
  • Move from subversion repository to git
    • During the spring/summer of 2010 both repositories will exist in parallel. During summer of 2010 code from the subversion repository will be migrated into git (retaining all revision history).
    • Currently github is hosting the git repository, but it may move to another host in the future within the slicer.org domain
  • Much of the infrastructure for the GUI, DICOM support, and other fundamental library support will be developed jointly with the Common Toolkit (CTK) group.

Plan

  • During April and May 2010 a majority of slicer developers will be working on the Slicer 3.6 release. While 3.6 is being debugged, potentially disruptive code changes (like changes to MRML to support Qt widgets) should be added to the Slicer4 svn branch
  • Tutorials and breakout sessions will be held at the Summer Project Week in June.
  • Bulk of developer effort will switch to Slicer4 during the last half of 2010
  • 3D Slicer version 4.0 release date: TBD

Considerations for Developers

  • Slicer 3.6 will be the last KWWidgets based release so all interfaces will need to be ported to Qt. Training and support will be provided to make this as painless as possible.
  • Command Line Modules do not need to change
  • Code in Libs and Base/Logic do not link to KWWidgets and do not need to change
  • Tcl code is expected to run alongside Python code in Slicer4 in a similar manner to the way Python and Tcl coexist in Slicer3

Sponsorship and Participation

Major support for this effort comes from developers funded by the US National Institutes of Health through the National Alliance for Medical Image Computing, the Neuroimage Analysis Center, the National Center for Image Guided Therapy, and related collaborating efforts.

FAQ

What do I gain from the switch to Qt?

Didn't we just make a big change from Slicer2 to Slicer3 just a few years ago? Why should we change again?

Oh no, not another source code repository. What's wrong with svn and why should we use git?

I like Tcl - why emphasize python?