Difference between revisions of "Documentation/4.1/Developers"

From Slicer Wiki
Jump to: navigation, search
m
m
Line 2: Line 2:
  
 
{{documentation/{{documentation/version}}/Developers/random-image}}  
 
{{documentation/{{documentation/version}}/Developers/random-image}}  
 
3D Slicer is a free [http://en.wikipedia.org/wiki/Open_source open source] extensible software application for medical image computing and visualization. Mainly written in [http://en.wikipedia.org/wiki/C%2B%2B C++] and based on the [http://www.na-mic.org/Wiki/index.php/NA-MIC-Kit NA-MIC kit], 3D Slicer relies on a variety of libraries: [http://www.vtk.org VTK], [http://itk.org ITK], [http://commontk.org CTK], [http://www.cmake.org CMake], [http://qt.nokia.com/products/ Qt] and [http://www.python.org/ Python].
 
 
To ensure the stability of the application, relying on a robust [http://www.kitware.com/solutions/softwareprocess/softwareprocess.html software process], the source code is compiled and tested on a daily basis on a [[Documentation/{{documentation/version}}/SlicerApplication/HardwareConfiguration|variety of platform configurations]]. The testing results are summarized and reported using a web-based centralized CDash [http://slicer.cdash.org/index.php?project=Slicer4 dashboard]. Developers of 3D Slicer can also report issues on the [http://massmail.bwh.harvard.edu/mailman/listinfo/slicer-devel open mailing list] or using the [http://na-mic.org/Mantis/my_view_page.php 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.
 
 
Three types of modules are supported: [[{{FULLPAGENAME}}/Modules#Command_Line_Interface_.28CLI.29|CLI]], [[{{FULLPAGENAME}}/Modules#Loadable_Modules|Loadable module]] and [[{{FULLPAGENAME}}/Modules#Scripted_Modules|Scripted module]]. While the developer has to choose between one of the 3 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 [[Documentation/{{documentation/version}}/SlicerApplication/ExtensionsManager|extensions manager]].
 
 
= Add or improve a functionality: Where to start ? =
 
 
[[File:SlicerDeveloper-ContributionWorkflow.png | 1100px]]
 
  
 
= Developer references =
 
= Developer references =
Line 63: Line 49:
 
|bgcolor="#CCCCCC"|
 
|bgcolor="#CCCCCC"|
 
|valign="top"|
 
|valign="top"|
 
=== Step by step - Develop a module or an extension ===
 
----
 
 
# [[#Add_or_improve_a_functionality:_Where_to_start_.3F|Where to start?]]
 
# [[{{FULLPAGENAME}}/Build_Instructions|Build Slicer application]]
 
# Create
 
#: [[{{FULLPAGENAME}}/Modules#Command_Line_Interface_.28CLI.29|CLI module]]
 
#: [[{{FULLPAGENAME}}/Tutorials/ModuleWriting|Loadable module]]
 
#: [[{{FULLPAGENAME}}/Modules#Scripted_Modules|Scripted module]]
 
#: [[{{FULLPAGENAME}}/EditorExtension|Editor effect]]
 
# [[{{FULLPAGENAME}}/Tutorials/BundleModulesIntoExtension|Bundle your module(s) into a Slicer extension]]
 
# [https://github.com/jcfr/ExtensionsIndex/tree/24-ExtensionIndex-add-readme-file#readme Build, test, package and distribute extensions]
 
  
 
=== Build instructions ===
 
=== Build instructions ===

Revision as of 15:54, 15 June 2012

Home < Documentation < 4.1 < Developers


SceneViews Module
Browse the image gallery

Developer references

Getting involved


It is open to everyone, feel free to join.
Intended for discussion of programming related questions

Resources


Nightly, continuous and experimental dashboards.
Web-based bug tracking system
Source code API documentation.
Consistency and Readability for a manageable code base
git clone git://github.com/Slicer/Slicer.git
Pages for the developer projects.
Informations about Slicer releases

Build instructions


Compiling and installing Slicer from source.
Build, test, package and distribute extensions

Design & Implementation


Comparison between the different supported module types
Objects and their organization. MRML Library provides API for managing medical image data type
Details the role of MRML/Slicer/Application/Modules logics and Displayable managers
Presents the underlying infrastructure.
Description of the Charting architecture.
Details how Slicer is built and packaged.


How To










Slicer4Announcement-HiRes.png