Difference between revisions of "Documentation/Labs/ExtensionsFrameworkRoadmap"

From Slicer Wiki
Jump to: navigation, search
Line 87: Line 87:
 
** Slicer: Creation of python extension directly from within Slicer. '''ToBeDone'''
 
** Slicer: Creation of python extension directly from within Slicer. '''ToBeDone'''
 
*** Slicer: Optional Restart.  '''ToBeDone'''
 
*** Slicer: Optional Restart.  '''ToBeDone'''
 +
 +
* Slicer: Creation of python extension directly from Slicer. '''ToBeDone'''
  
 
* ExtensionServer: Consolidate ExtensionsIndex account creation. '''ToBeDone'''
 
* ExtensionServer: Consolidate ExtensionsIndex account creation. '''ToBeDone'''

Revision as of 16:53, 28 February 2014

Home < Documentation < Labs < ExtensionsFrameworkRoadmap

This page serves as roadmap for the Slicer Extensions framework.


Extension contribution process

The goal here is to simplify the number of steps allowing people to contribute extension.

Current process

The current process to create an empty extension is documented here, then the steps to contribute the extension are documented here.

For all type of extension (C++ or python), the steps can then be summarized as:

To create an extension

  1. Workstation: Build Slicer application in Release
  2. Workstation: Use the Wizard to create an extension 5 commands to enter in a terminal
  3. Workstation: Initialize git repository 1 command
  4. Workstation: Implement extension / local commits

To save extension code

  1. Github: Create an account
  2. Github: Create a repository
  3. Workstation -> Github: Push local work on Github

To contribute an extension to Index

  1. SlicerWiki: Create documentation page
  2. Extension Server: Create an account
  3. Extension Server: Join community
  4. Extension Server: Ask permission for experimental folder.
  5. Workstation: Configure upload credential
  6. Workstation -> ExtensionServer: Test upload [1 command to enter in a terminal / 1 click in visual studio]
  7. Github: Fork ExtensionsIndex
  8. Workstation: Clone fork locally
  9. Workstation: Create branch add-YourExtensionName
  10. Workstation: Commit description file obtained from build tree
  11. Workstation -> Github: Push the topic to fork
  12. Github: Click on Pull request button

To update an extension in Index

  1. SlicerWiki: Update documentation page
  2. Workstation: In extension index clone: 5 commands to type
  3. Workstation: Create branch update-YourExtensionName
  4. Workstation: Commit description file obtained from build tree
  5. Workstation -> Github: Create pull request manually creating the URL
  6. Github: Add a comment in the pull request with a Compare link also manually generated

Proposed changes

To create an extension

For all type of extensions, the simplified workflow is:

  1. Workstation: Build Slicer application in Release
  2. Workstation: Use the Wizard to create an extension 1 commands to enter in a terminal
  3. Workstation: Initialize git repository 1 command
  4. Workstation: Implement extension / local commits


For scripted extensions, creation directly from within Slicer:

  1. Slicer: Python interactor -> createScriptedExtension('Foo') Note: The final API may be slightly different
  2. Slicer: Restart - 'Foo' module should show up. Note: This last step could probably be removed

To save extension code

  1. Github: Create an account
  2. Workstation -> Github: Create repository done with 1 command. ExtensionWizard.py --publish ~/code/MyExtension

To contribute an extension to the Index

  1. SlicerWiki: Create documentation page
  2. Extension Server: Create an account [Join community + experimental folder permission consolidated in one location]
  3. Workstation: Configure upload credential
  4. Workstation -> ExtensionServer: Test upload [1 command to enter in a terminal / 1 click in visual studio]
  5. Add extension to the index using 1 command: ExtensionWizard.py --contribute --target master ~/code/MyExtension


Progress

  • In case of Python extension, remove the need for a Slicer build tree: 50%
    • Wizard: Remove dependency on build tree or CMake generated file. Check.svg - Review in progress
    • 3269: Simplify contribution of scripted extension: 50%
    • Slicer: Creation of python extension directly from within Slicer. ToBeDone
      • Slicer: Optional Restart. ToBeDone
  • Slicer: Creation of python extension directly from Slicer. ToBeDone
  • ExtensionServer: Consolidate ExtensionsIndex account creation. ToBeDone
  • SlicerWiki: Automatic creation of extension wiki page. ToBeDone
  • Slicer: Given an extension python script. Should be possible to upload the extension directly from Slicer. ToBeDone

Extension catalog / Manager

In progress

Done

To be done