Slicer for Software Developers
Slicer is a free, open source package suited for easy modular expansion by software developers who want to use the 3D Slicer software as a basis for their work. This page is intended as a portal and contains links to a variety of pages with information for software developers. It will allow you to acquaint yourself with the basics of Slicer development. Please feel free to contribute to the documentation and improve the quality of information on the Slicer wiki.
Slicer Development Basics
3D Slicer is a software application written in C++ and is based on the NA-MIC kit. 3D Slicer relies on a variety of toolkits, libraries and uses a software methodology for multi-developer, multi-platform work and quality assurance. These components include VTK, ITK, CMake, Qt and Python. Please see the NA-MIC kit home page for more information.
Slicer 4.0 was introduced in late 2011 as the latest in a series of developments and releases stretching back over a decade.
- Slicer aims for a "lightweight core" and a variety modules. These include Built-In Modules, Loadable Modules, Scripted Modules, and Command Line Modules. Command Line Modules represent a relatively easy way to add the functionality to slicer. For a presentation about how to add your own module, please see here. This approach allows access to ITK, Python and a variety of other packages.
- Slicer has a workflow engine to allow developers to introduce user-guidance into workflow. Please look at the Changetracker module in Slicer 3.3 for an example. See here for more information.
- IGT research is specifically enabled through interface capabilities to devices, such as trackers, scanners and robots. We have developed a low-level communication protocol, called Open IGT Link. Please see here for more information.
Before getting started, please look at the 3D Slicer Software License Agreement.
| Slicer 4.1 (Current release version) | |
| Slicer Developer Documentation | Development Project Homepage |
| Build Instructions | Slicer4.1 Build Instructions |
| Coding Considerations | Slicer4.1 Coding Style |
| SVN Source Code Repository Browsing | View VC |
| API | Slicer4.1 Source code API documentation |
| SVN Repository and SVN Instructions | SVN Repository and SVN Instructions |
| Dashboard | Slicer4.1 Dashboard |
| Bug Tracker | Bug Tracker |
| Visual Blog | Visual Blog |
| Developer Discussion | Developer's Mailing List: Intended for the discussion of programming related questions |
| Module Execution Documentation | Execution Model |
| Slicer 3.x (Previous release version) | |
| Slicer Developer Documentation | Development Project Homepage, Execution Model Documentation and Building a Slicer 3 Module GUI |
| Build Instructions | Slicer 3 Build Instructions |
| Coding Considerations | Slicer 3 Coding Style and Slicer 3 Interface Design |
| SVN Source Code Repository Browsing | View VC |
| API | Slicer 3 Doxygen Source Documentation |
| Slicer 3 SVN Repository and SVN Instructions | svn Repository and Introduction to Slicer 3 svn |
| Dashboard | Slicer 3 Dashboard |
| Bug Tracker | Slicer 3 Bug Tracker |
| Visual Blog | Visual Blog |
| Developer Discussion | Developer's Mailing List |
| Module Execution Documentation | Execution Model and Adapting Slicer to Large Scale Experiments |

