Difference between revisions of "Documentation/Labs/ExtensionsFrameworkRoadmap"
m (→Progress) |
|||
Line 65: | Line 65: | ||
For scripted extensions, creation directly from within Slicer: | For scripted extensions, creation directly from within Slicer: | ||
− | # Slicer: | + | # Slicer: Modules -> Developer -> ExtensionWizard |
+ | # ExtensionWizard module: Set name, description, contributors etc ... then click on Create | ||
+ | ## Set the working directory ? Where to create. | ||
+ | ## External link to the github account creation page (will open web browswer or tab in the extension manager ?) | ||
+ | ## Optionally create github repo and pre-populate repo ... | ||
+ | # Path to the module(s) in extension should be added to the additional module path. | ||
# Slicer: Restart - 'Foo' module should show up. ''Note: This last step could probably be removed'' | # Slicer: Restart - 'Foo' module should show up. ''Note: This last step could probably be removed'' | ||
=== To save extension code === | === To save extension code === | ||
+ | |||
+ | For all type of extensions, the simplified workflow is: | ||
+ | |||
# Github: Create an account | # Github: Create an account | ||
# Workstation -> Github: Create repository done with '''1 command'''. <code>ExtensionWizard.py --publish ~/code/MyExtension</code> | # Workstation -> Github: Create repository done with '''1 command'''. <code>ExtensionWizard.py --publish ~/code/MyExtension</code> | ||
+ | |||
+ | For scripted extensions: | ||
+ | |||
+ | # initial publish on github done from the ExtensionWizard module. See above | ||
+ | |||
+ | === To publish extension code update=== | ||
+ | |||
+ | For all type of extensions, the simplified workflow is: | ||
+ | |||
+ | # git commit, ..., git push | ||
=== To contribute an extension to the Index === | === To contribute an extension to the Index === | ||
Line 78: | Line 96: | ||
# Workstation -> ExtensionServer: Test upload [1 command to enter in a terminal / 1 click in visual studio] | # Workstation -> ExtensionServer: Test upload [1 command to enter in a terminal / 1 click in visual studio] | ||
# Add extension to the index using '''1 command''': <code>ExtensionWizard.py --contribute --target master ~/code/MyExtension</code> | # Add extension to the index using '''1 command''': <code>ExtensionWizard.py --contribute --target master ~/code/MyExtension</code> | ||
− | |||
== Progress == | == Progress == |
Revision as of 21:06, 28 February 2014
Home < Documentation < Labs < ExtensionsFrameworkRoadmapThis page serves as roadmap for the Slicer Extensions framework.
Contents
Extension contribution process
The goal here is to simplify the number of steps allowing people to contribute extension.
More specifically, we would like to make it very easy for people to create a python extension by:
- removing the need for a Slicer build tree
- reducing the number of steps required to create and load an extension from a template
- simplifying how an extension is contributed to the index
- simplifying how an extension can be uploaded to the extension server
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
- Workstation: Build Slicer application in Release
- Workstation: Use the Wizard to create an extension 5 commands to enter in a terminal
- Workstation: Initialize git repository 1 command
- Workstation: Implement extension / local commits
To save extension code
- Github: Create an account
- Github: Create a repository
- Workstation -> Github: Push local work on Github
To contribute an extension to Index
- SlicerWiki: Create documentation page
- Extension Server: Create an account
- Extension Server: Join community
- Extension Server: Ask permission for experimental folder.
- Workstation: Configure upload credential
- Workstation -> ExtensionServer: Test upload [1 command to enter in a terminal / 1 click in visual studio]
- Github: Fork ExtensionsIndex
- Workstation: Clone fork locally
- Workstation: Create branch add-YourExtensionName
- Workstation: Commit description file obtained from build tree
- Workstation -> Github: Push the topic to fork
- Github: Click on Pull request button
To update an extension in Index
- SlicerWiki: Update documentation page
- Workstation: In extension index clone: 5 commands to type
- Workstation: Create branch update-YourExtensionName
- Workstation: Commit description file obtained from build tree
- Workstation -> Github: Create pull request manually creating the URL
- 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:
- Workstation: Build Slicer application in Release
- Workstation: Use the Wizard to create an extension 1 commands to enter in a terminal
- Workstation: Initialize git repository 1 command
- Workstation: Implement extension / local commits
For scripted extensions, creation directly from within Slicer:
- Slicer: Modules -> Developer -> ExtensionWizard
- ExtensionWizard module: Set name, description, contributors etc ... then click on Create
- Set the working directory ? Where to create.
- External link to the github account creation page (will open web browswer or tab in the extension manager ?)
- Optionally create github repo and pre-populate repo ...
- Path to the module(s) in extension should be added to the additional module path.
- Slicer: Restart - 'Foo' module should show up. Note: This last step could probably be removed
To save extension code
For all type of extensions, the simplified workflow is:
- Github: Create an account
- Workstation -> Github: Create repository done with 1 command.
ExtensionWizard.py --publish ~/code/MyExtension
For scripted extensions:
- initial publish on github done from the ExtensionWizard module. See above
To publish extension code update
For all type of extensions, the simplified workflow is:
- git commit, ..., git push
To contribute an extension to the Index
- SlicerWiki: Create documentation page
- Extension Server: Create an account [Join community + experimental folder permission consolidated in one location]
- Workstation: Configure upload credential
- Workstation -> ExtensionServer: Test upload [1 command to enter in a terminal / 1 click in visual studio]
- Add extension to the index using 1 command:
ExtensionWizard.py --contribute --target master ~/code/MyExtension
Progress
- Improve Wizard to create empty extension: reduce number of terminal commands to 1
- 3566: Wizard: Simplify creation of extensions/modules: Completed - Review in progress
- 3572: Add ExtensionWizard wiki page: Completed - Review in progress -See Documentation/Nightly/Developers/ExtensionWizard
- 3572: Add developer documentation for ExtensionWizard: Completed - Review in progress - See [1]
- Publish extension on Github by creating github repo - Completed - Review in 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. - Review in progress
- 3269: Simplify contribution of scripted extension: 50%
- Slicer: Creation of python extension directly from within Slicer. ToBeDone
- Slicer: Optional Restart. ToBeDone
Extensions Catalog / Manager
The goal here is to improve the overall user experience associated with the extension catalog.
When accessed from within Slicer the catalog is also referred as extensions manager.
Progress
- 3564: Add search option in extension manager. ToBeDone
- 3602: ExensionsManager - Add a "Show url" link'. ToBeDone
- 2089: Either on-demand or when slicer starts, check if there are available extensions update.. ToBeDone
- 3607: ExtensionManager: Exclude category "Example" from "All" listing . ToBeDone
- 2779: Mechanism to keep track of the installed extensions across version. ToBeDone
- Low priority:
- 2334: Differentiate different type of extenions in extension manager: Concept of channel. ToBeDone
- 2778: Add "Download stats" on each extension page . ToBeDone
- 3608: ExtensionsManager: Display description for installed extensions.. ToBeDone
- Consolidate rating across extension version. See midasplatform/slicerappstore/issues/9
Extension developer documentation
The goal is to consolidate the existing documentation so that it is easy to understand what is the python API available to the Slicer python extension developer.
Progress
- Generate Slicer python API documentation. In progress. See experiment http://mwoehlke-kitware.github.io/Slicer/Base/