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


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