Difference between revisions of "Documentation/4.1/Developers"

From Slicer Wiki
Jump to: navigation, search
(Prepend documentation/versioncheck template. See http://na-mic.org/Mantis/view.php?id=2887)
 
(43 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 +
<noinclude>{{documentation/versioncheck}}</noinclude>
 
__NOTOC__
 
__NOTOC__
  
{{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].
+
<big><big>If you are a newcomer, you should probably check these '''[[{{FULLPAGENAME}}/StartHere|instructions]]''' !</big></big>
 
+
*If you need to cite Slicer, please use [http://www.slicer.org/pages/UserOrientation these references].
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 [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 =
 
  
 
{| border="0" align="center" width="98%" valign="top" cellspacing="7" cellpadding="2"
 
{| border="0" align="center" width="98%" valign="top" cellspacing="7" cellpadding="2"
Line 28: Line 15:
 
|-  
 
|-  
 
|valign="top"|
 
|valign="top"|
 
+
----
=== Getting involved ===
+
<span style="color: #555555; font-size: 18px; font-weight: bold;">Getting involved</span>
 
----
 
----
  
Line 35: Line 22:
 
: It is open to everyone, feel free to join.
 
: It is open to everyone, feel free to join.
  
* [http://massmail.bwh.harvard.edu/mailman/listinfo/slicer-devel Developers mailing list] / [http://slicer-devel.65872.n3.nabble.com/ Browse archives]
+
* [http://massmail.bwh.harvard.edu/mailman/listinfo/slicer-devel Developers mailing list] / [http://massmail.bwh.harvard.edu/mailman/listinfo/slicer-devel Sign-up] / [http://slicer-devel.65872.n3.nabble.com/ Browse archives]
 
: Intended for discussion of programming related questions
 
: Intended for discussion of programming related questions
 +
----
 +
<span style="color: #555555; font-size: 18px; font-weight: bold;">Resources</span>
 +
----
 +
* [http://na-mic.org/Mantis/roadmap_page.php Roadmap]{{new}}
 +
: What's next ? What's the plan ?
  
=== Resources ===
 
----
 
 
* [http://slicer.cdash.org/index.php?project=Slicer4 CDash Quality Dashboard] / [[{{FULLPAGENAME}}/Tutorials/DashboardSetup|Setup a dashboard]]
 
* [http://slicer.cdash.org/index.php?project=Slicer4 CDash Quality Dashboard] / [[{{FULLPAGENAME}}/Tutorials/DashboardSetup|Setup a dashboard]]
 
: Nightly, continuous and experimental dashboards.
 
: Nightly, continuous and experimental dashboards.
Line 49: Line 39:
 
: Source code API documentation.
 
: Source code API documentation.
  
* [[{{FULLPAGENAME}}/Style Guide|Slicer Style Guidelines]]
+
* [[{{FULLPAGENAME}}/Style Guide|Slicer Style Guidelines]]{{new}}
 
: Consistency and Readability for a manageable code base
 
: Consistency and Readability for a manageable code base
 
* [https://github.com/Slicer/Slicer Git repository] / [http://viewvc.slicer.org/viewvc.cgi/Slicer4/trunk ViewVC] / [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&revision last commit]
 
: <code>git clone git://github.com/Slicer/Slicer.git</code>
 
  
 
* [[Slicer4:Developers|Developer Projects]]
 
* [[Slicer4:Developers|Developer Projects]]
 
: Pages for the developer projects.
 
: Pages for the developer projects.
  
* [[Slicer4:QtPort/Releases|Change logs and release details]]
+
* [[Release Details|Change logs and release details]]
 
: Informations about Slicer releases
 
: Informations about Slicer releases
 +
 +
----
 +
<span style="color: #555555; font-size: 18px; font-weight: bold;">Bookmarks</span>
 +
----
 +
* [http://marklodato.github.com/visual-git-guide/index-en.html A Visual Git Reference]
 +
  
 
|bgcolor="#CCCCCC"|
 
|bgcolor="#CCCCCC"|
 
|valign="top"|
 
|valign="top"|
 
=== Step by step - Develop a module or an extension ===
 
 
----
 
----
 +
<span style="color: #555555; font-size: 18px; font-weight: bold;">Build instructions</span>
 +
----
 +
* [https://github.com/Slicer/Slicer Git repository] / [http://viewvc.slicer.org/viewvc.cgi/Slicer4/trunk ViewVC] / [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&revision last commit] / [[Documentation/{{documentation/version}}/Developers/Build_Instructions#Using_git-svn|git-svn setup]]
 +
: <code>git clone git://github.com/Slicer/Slicer.git</code>
  
# [[#Add_or_improve_a_functionality:_Where_to_start_.3F|Where to start?]]
+
* [[Documentation/{{documentation/version}}/Developers/Build Instructions|Build Slicer application]]
# [[{{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]]
 
# 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 ===
 
----
 
* [[Documentation/{{documentation/version}}/Developers/Build Instructions|Slicer application]]
 
 
: Compiling and installing Slicer from source.
 
: Compiling and installing Slicer from source.
  
* [https://github.com/jcfr/ExtensionsIndex/tree/24-ExtensionIndex-add-readme-file#readme Slicer extensions]
+
* [[Documentation/{{documentation/version}}/Developers/Build Module|Build Module]]{{new}}
: Build, test, package and distribute extensions
+
: Compiling slicer modules outside of the slicer source tree.
  
===Design & Implementation===
+
----
 +
<span style="color: #555555; font-size: 18px; font-weight: bold;">Design & Implementation</span>
 
----
 
----
  
* [[{{FULLPAGENAME}}/Modules | Modules]]
+
* [[{{FULLPAGENAME}}/Modules | Modules]]{{updated}}
 
: Comparison between the different supported module types
 
: Comparison between the different supported module types
  
* [[{{FULLPAGENAME}}/MRML | Data Model - MRML]]
+
* Internals
: Objects and their organization. MRML Library provides API for managing medical image data type
+
** [[{{FULLPAGENAME}}/MRML | Data Model / MRML]] - Objects and their organization. MRML Library provides API for managing medical image data type
 
+
** [[{{FULLPAGENAME}}/Logics | Logics]] - Details the role of MRML/Slicer/Application/Modules logics and Displayable managers
* [[{{FULLPAGENAME}}/Logics | Logics]]
+
** [[{{FULLPAGENAME}}/IO | IO Mechanism]] - How to read or write nodes from file
: Details the role of MRML/Slicer/Application/Modules logics and Displayable managers
 
  
 
* [[{{FULLPAGENAME}}/Python scripting | Python scripting]]
 
* [[{{FULLPAGENAME}}/Python scripting | Python scripting]]
Line 103: Line 86:
 
: Description of the Charting architecture.
 
: Description of the Charting architecture.
  
* [[{{FULLPAGENAME}}/Build system | Build system]]
+
* [[{{FULLPAGENAME}}/Build system | Build system]] / [[Release_Details | Release details]]
: Details how Slicer is built and packaged.
+
: Details how Slicer is built, packaged and released.
  
 
|bgcolor="#CCCCCC"|
 
|bgcolor="#CCCCCC"|
 
|valign="top"|
 
|valign="top"|
 
+
----
 
{{:{{FULLPAGENAME}}/Tutorials}}
 
{{:{{FULLPAGENAME}}/Tutorials}}
  

Latest revision as of 07:27, 14 June 2013

Home < Documentation < 4.1 < Developers


For the latest Slicer documentation, visit the read-the-docs.



If you are a newcomer, you should probably check these instructions !


Getting involved


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

Resources


What's next ? What's the plan ?
Nightly, continuous and experimental dashboards.
Web-based bug tracking system
Source code API documentation.
Consistency and Readability for a manageable code base
Pages for the developer projects.
Informations about Slicer releases

Bookmarks




Build instructions


git clone git://github.com/Slicer/Slicer.git
Compiling and installing Slicer from source.
Compiling slicer modules outside of the slicer source tree.

Design & Implementation


Comparison between the different supported module types
  • Internals
    • Data Model / MRML - Objects and their organization. MRML Library provides API for managing medical image data type
    • Logics - Details the role of MRML/Slicer/Application/Modules logics and Displayable managers
    • IO Mechanism - How to read or write nodes from file
Presents the underlying infrastructure.
Description of the Charting architecture.
Details how Slicer is built, packaged and released.

How To










Slicer4Announcement-HiRes.png