Documentation/Nightly/Developers/StartHere

From Slicer Wiki
Jump to: navigation, search
Home < Documentation < Nightly < Developers < StartHere

3D Slicer is a free open source extensible software application for medical image computing and visualization. Mainly written in C++ and based on the NA-MIC kit, 3D Slicer relies on a variety of libraries: VTK, ITK, CTK, CMake, Qt and Python.

To ensure the stability of the application, relying on a robust software process, the source code is compiled and tested on a daily basis on a variety of platform configurations. The testing results are summarized and reported using a web-based centralized CDash dashboard. Developers of 3D Slicer can also report issues on the open mailing list or using the web-based bug tracking system.

3D Slicer consists of both a lean application core and modules offering specific functionality. The core implements the user interface, provides support for data input/output (IO) and visualization and also exposes developer interfaces that support extension of the application with new modules.

Multiple types of modules are supported: CLI, Loadable module, Scripted module and Editor effect. While the developer has to choose between one of these types to implement its module, the end user won't notice the difference as they all share the same look & feel. The choice for a given type of module is usually based on the type of inputs/parameters for a given module.

These modules can be either built-in or installed on demand via the extensions manager.


New community member checklist

  1. Check.svg   Sign-up on the developers mailing list
  2. Check.svg   Register on the issue tracker
  3. Check.svg   Sign-up on github and setup Git
  4. Check.svg   Fork Slicer repository: https://github.com/Slicer/Slicer
  5. Check.svg   Read the Slicer Style Guidelines so that we all understand each other :)
  6. Check.svg   To contribute documentation, request an account on the wiki.

Develop a module and create an extension

  1. Build Slicer application
  2. Learn about the different type of modules
  3. Create
    CLI module or
    Loadable module or
    Scripted module or
    Editor effect
  4. Read documentation guidelines
  5. Build modules outside of Slicer source tree.
  6. Hack, hack, hack :)
  7. Bundle module(s) into a Slicer extension
  8. Build, test, package and distribute extensions


Contribute a patch

The following instructions describes the recommended workflow to contribute patch to Slicer code base.

It is assumed that you followed the New community member checklist, have a clone of https://github.com/Slicer/Slicer/ and have setup the development environment as described here.

  1. Create an issue in the tracker setting severity to feature. For example, see issue #1906

    1. For simple changes (e.g typo, ...), this step is optional.
  2. Make sure your clone has a git remote. After forking Slicer repository, replace jcfr with your git login.

    git remote add jcfr git@github.com:jcfr/Slicer.git
    
  3. Create a topic named <issuer_number>-a-descriptive-topic-name. For example:

    git checkout -b 1906-uninstall-extensions-on-restart
    
  4. Fix the code or implement your feature, then commit your change(s)

    1. Make sure to read the Slicer Coding and Commit Style Guide
  5. Publish the topic on your fork

    git push jcfr 1906-uninstall-extensions-on-restart
    
  6. Create a Pull Request and add a note to the issue with a link pointing to your topic. For example, see note 1906#c4578