View Issue Details

IDProjectCategoryView StatusLast Update
0003269Slicer4Core: Extensionspublic2017-06-10 08:51
Reporterlassoan Assigned Tomatthew-woehlke  
PrioritynormalSeverityfeatureReproducibilityhave not tried
Status closedResolutionfixed 
Product Version 
Target VersionSlicer 4.4.0Fixed in Version 
Summary0003269: Simplify process for contributing scripted modules to the extensions catalog
Description

Currently the overhead of sharing Python scripted modules with the Slicer community is very significant. Work out a simplified process: something like uploading the script on a web interface.

TagsNo tags attached.

Relationships

related to 0002981 closedpieper Fix ModuleWizard to account for re-organized structure 
related to 0002726 closedmatthew-woehlke Create / Update extension template 
parent of 0003601 closedmatthew-woehlke Create developer documentation for new ExtensionWizard module 
has duplicate 0003566 closedmatthew-woehlke Wizard: Simplify creation of extensions and modules 
related to 0003606 acknowledgedjcfr Support for direct upload of scripted extension into the Extension Catalog 
related to 0003727 closedjcfr Update BuildTestPackageDistributeExtensions page to use the latest and greatest extension wizard feature 

Activities

lassoan

lassoan

2013-08-01 06:42

developer   ~0009327

From: Andras Lasso
Sent: ?2013-?08-?01 16:38
To: Jean-Christophe Fillion-Robin; Steve Pieper
Cc: Slicer Developers Mailing List
Subject: RE: [slicer-devel] Script repository

I think we all agree then :)

I think we should maintain the list of scripts on the wiki for now, and migrate them to the extension catalog once the contribution process is simplified. I've entered a ticket to track this simplification effort: http://www.na-mic.org/Bug/view.php?id=3269

Andras


From: Jean-Christophe Fillion-Robin
Sent: ?2013-?08-?01 16:22
To: Steve Pieper
Cc: Slicer Developers Mailing List
Subject: Re: [slicer-devel] Script repository

Agreed :) Something we should consider after the release may be ?

I would like to make it easier for developer to share their work by having a more pythonic approach to extension.

On Thu, Aug 1, 2013 at 10:16 AM, Steve Pieper <pieper@ibility.net> wrote:

Hi Julien -

I totally agree that we want this unified from a user perspective, but I tend to disagree that the current extension process is "fast and easy" (don't get me wrong on that: I love it and am totally happy that it exists, I just find it pretty heavyweight for many purposes).

To be specific, I have several scripts like the LandmarkRegistration I emailed about the other day[1], plus tests and experiments that I'd be happy for people to easily try and experiment with. If it was simply a matter of adding a link to the wiki I'd do it, but beyond that I tend to wait until things are more polished before adding to slicer core or an extension. The current extensions have all the needed pieces for C++ purposes, but many of them are overkill for python scripts.

-Steve

[1] http://slicer-devel.65872.n3.nabble.com/Re-slicer-users-When-loading-2-CT-volumes-only-1-can-be-displayed-tt4029522.html#a4029524

On Thu, Aug 1, 2013 at 9:58 AM, Julien Finet <julien.finet@kitware.com> wrote:

From a user point of view, I don't see your script FillROI being different from the currently existing extensions.
It seems to me that this script should go in the Extension Manager. There should be only 1 place to search and install extensions to Slicer. I wouldn't worry about cluttering the extension manager, search tools (by category, by keyword...) are there for that.
Having said that, I agree the contribution of such scripts should be made easier to encourage developers to contribute.
And I believe, there is only one cumbersome item in the list of actions to perform to currently upload an extension, it's the "extension index request". The rest is quite fast and easy: [1]
So I think we should come up with the easiest possible way to upload such extension.

Julien.
[1]:

  • customize an extension template -> with the right template, you would only have to copy paste a CMakelist in your directory and change the extension name variable and write the documentation.
    • write documentation -> nothing prevents you from having only a 1 line documentation.
    • create the icon -> just create 1 generic icon once and reuse it for all your scripts (by simply copy-pasting it in your repo)

On Thu, Aug 1, 2013 at 4:07 AM, Andras Lasso <lasso@cs.queensu.ca> wrote:

Hi all,

I’ve recently implemented a simple scripted module for filling a ROI in a labelmap with a specified color. This functionality may be useful for others, too, but I’m not sure how to share it. Creating an and maintaining an extension (customize an extension template, write documentation, create icon, request extension index update, etc.) for this single script would be too much overhead for me and it would clutter the extension manager if each single script would show up as a separate extension. People now use different locations to store examples (github gists, other hosted repositories, NAMIC sandbox, wiki, posting link or script contents to the Slicer mailing lists), but I always have difficulty in finding script samples because there is no one central place to store them.

Could we set up a location for storing community-contributed scripts (scripted modules, examples, etc.) that the users can explore and where users/developers could easily contribute? It could be as simple as creating a wiki page where we would list all the scripts with a short description. Account management, version history, file description, indexing, searching, etc. would be all taken care of by the wiki and the workload for uploading a script is negligible. I’ve created an example page to illustrate the idea: http://www.slicer.org/slicerWiki/index.php/Documentation/Nightly/ScriptRepository.

This could be later improved in many ways: we could create a module for browsing and automatic installing of scripts from the repository, a more sophisticated system could be created using Midas (similar to the Mathwork’s fileexchange: http://www.mathworks.com/matlabcentral/fileexchange), etc.

What do you think?

Andras

jcfr

jcfr

2014-01-22 08:39

administrator   ~0010530

See also http://wiki.slicer.org/slicerWiki/index.php/Documentation/Labs/EasyExtensionContribution

jcfr

jcfr

2014-02-27 07:57

administrator   ~0010650

For reference: https://github.com/mwoehlke-kitware/Slicer/tree/3269-publish-extension-wizard

jcfr

jcfr

2014-02-27 07:59

administrator   ~0010651

Rebased topic with integration of GitPython and PyGithub
See https://github.com/jcfr/Slicer/commits/3269-publish-extension-wizard-rebased

jcfr

jcfr

2014-02-28 11:28

administrator   ~0010655

For reference: http://www.slicer.org/slicerWiki/index.php/Documentation/Nightly/ScriptRepository

matthew-woehlke

matthew-woehlke

2014-03-12 11:49

developer   ~0011426

merged as r22945 - r23001

jcfr

jcfr

2014-03-12 14:04

administrator   ~0011428

@Andras: Issue 0003606 somewhat capture what you mean by "something like uploading the script on a web interface."

lassoan

lassoan

2014-04-24 05:57

developer   ~0011653

I'm sorry, but I don't really see what steps are simplified. The instructions described at http://wiki.slicer.org/slicerWiki/index.php/Documentation/Labs/EasyExtensionContribution contain several steps that many Python-script-writing people cannot or not willing to do and take some time for experienced developers (download and install git, find the repository URL on github and clone the repository, run commands in the console, create an s4ext file).

The process should be as simple as uploading/editing a file on the wiki or midas. Maybe the simplest would be to implement the "install extension from file" and then allow python script install from URL. Then we could easily install and .py scripts directly from the wiki (or if we make a folder on Midas then from Midas, too).

matthew-woehlke

matthew-woehlke

2014-04-24 07:53

developer   ~0011655

Please compare 'ExtensionWizard.py --contribute' to the old process, http://wiki.slicer.org/slicerWiki/index.php/Documentation/Nightly/Developers/Tutorials/Contribute_Extension_Description_File.

Note that there is also ongoing work to create a GUI front-end around http://www.slicer.org/slicerWiki/index.php/Documentation/Nightly/Developers/ExtensionWizard; see 0003606.

lassoan

lassoan

2014-04-24 08:57

developer   ~0011660

I see that compared to the old process there is significant improvement. We just need some more simplification.

The GUI front-end for template generation is also very helpful. Please make it available as a regular Slicer module, with GUI in Slicer (don't require the users to enter any commands in a console, because sadly most people cannot even create a folder and then open a command prompt in that folder).

jcfr

jcfr

2014-09-17 23:01

administrator   ~0012549

Closing resolved issues that have not been updated in more than 3 months.

Related Changesets

Import 2017-06-07 23:51:09: master 6eebeb1a

2014-04-08 17:15:52

mwoehlke

Details Diff
ENH: Add GitPython and PyGithub external projects

Add external projects for GitPython, PyGithub, and their dependencies
(python-setuptools, python-gitdb, python-async, python-smmap). These are
required for full functionality of the SlicerWizard package.

These are only built if Python and extension manager support are both
enabled, and system Python is not used. Additionally, PyGithub is only
requested if Python SSL support is enabled.

Note that Python must be built with SSL support for PyGithub to be
usable.

Issue 0003269

Co-authored-by: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>

git-svn-id: http://svn.slicer.org/Slicer4/trunk@23059 3bd1e089-480b-0410-8dfb-8563597acbee
mod - SuperBuild.cmake Diff File
add - SuperBuild/External_GitPython.cmake Diff File
add - SuperBuild/External_PyGithub.cmake Diff File
add - SuperBuild/External_python-async.cmake Diff File
add - SuperBuild/External_python-gitdb.cmake Diff File
add - SuperBuild/External_python-setuptools.cmake Diff File
add - SuperBuild/External_python-smmap.cmake Diff File

Issue History

Date Modified Username Field Change
2013-08-01 06:36 lassoan New Issue
2013-08-01 06:36 lassoan Status new => assigned
2013-08-01 06:36 lassoan Assigned To => jcfr
2013-08-01 06:42 lassoan Note Added: 0009327
2013-08-01 06:47 jcfr Target Version => Slicer 4.4.0
2014-01-22 08:38 jcfr Assigned To jcfr => matthew-woehlke
2014-01-22 08:38 jcfr Relationship added related to 0002981
2014-01-22 08:38 jcfr Relationship added related to 0002726
2014-01-22 08:39 jcfr Note Added: 0010530
2014-01-23 10:26 matthew-woehlke Relationship added related to 0003566
2014-02-27 07:57 jcfr Note Added: 0010650
2014-02-27 07:59 jcfr Note Added: 0010651
2014-02-28 05:43 jcfr Relationship added parent of 0003601
2014-02-28 07:28 jcfr Relationship added related to 0003606
2014-02-28 11:28 jcfr Note Added: 0010655
2014-03-12 11:49 matthew-woehlke Note Added: 0011426
2014-03-12 11:49 matthew-woehlke Status assigned => resolved
2014-03-12 11:49 matthew-woehlke Resolution open => fixed
2014-03-12 12:17 jcfr Relationship replaced has duplicate 0003566
2014-03-12 14:04 jcfr Note Added: 0011428
2014-04-24 05:57 lassoan Note Added: 0011653
2014-04-24 07:53 matthew-woehlke Note Added: 0011655
2014-04-24 08:57 lassoan Note Added: 0011660
2014-06-03 13:59 jcfr Relationship added related to 0003727
2014-09-17 22:59 jcfr Status resolved => closed
2014-09-17 23:01 jcfr Note Added: 0012549
2017-06-10 08:51 Changeset attached => Slicer master 6eebeb1a