Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update MHubRunner Extension (Version2) #2137

Merged
merged 5 commits into from
Jan 29, 2025
Merged

Conversation

LennyN95
Copy link
Contributor

New extension

Tier 1

Any extension that is listed in the Extensions Catalog must fulfill these requirements.

  • Repository name is Slicer+ExtensionName (except if the repository that hosts the extension can be also used without Slicer)
  • Repository is associated with 3d-slicer-extension GitHub topic so that it is listed here. To edit topics, click the settings icon in the right side of "About" section header and enter 3d-slicer-extension in "Topics" and click "Save changes". To learn more about topics, read https://help.github.com/en/articles/about-topics
  • Extension description summarizes in 1-2 sentences what the extension is usable (should be understandable for non-experts)
  • Any known related patents must be mentioned in the extension description.
  • LICENSE.txt is present in the repository root and the name of the license is mentioned in extension homepage. We suggest you use a permissive license that includes patent and contribution clauses. This will help protect developers and ensure the code remains freely available. MIT (https://choosealicense.com/licenses/mit/) or Apache (https://choosealicense.com/licenses/apache-2.0/) license is recommended. Read here to learn more about licenses. If source code license is more restrictive for users than MIT, BSD, Apache, or 3D Slicer license then describe the reason for the license choice and include the name of the used license in the extension description.
  • Extension URL and revision (scmurl, scmrevision) is correct, consider using a branch name (main, release, ...) instead of a specific git hash to avoid re-submitting pull request whenever the extension is updated
  • Extension icon URL is correct (do not use the icon's webpage but the raw data download URL that you get from the download button - it should look something like this: https://raw.githubusercontent.com/user/repo/main/SomeIcon.png)
  • Screenshot URLs (screenshoturls) are correct, contains at least one
  • Content of submitted json file is consistent with the top-level CMakeLists.txt file in the repository (dependencies, etc. are the same)
  • Homepage URL points to valid webpage containing the following:
    • Extension name
    • Short description: 1-2 sentences, which summarizes what the extension is usable for
    • At least one nice, informative image, that illustrates what the extension can do. It may be a screenshot.
    • Description of contained modules: at one sentence for each module
    • [] Publication: link to publication and/or to PubMed reference (if available)
  • Hide unused github features (such as Wiki, Projects, and Discussions, Releases, Packages) in the repository to reduce noise/irrelevant information:
    • Click Settings and in repository settings uncheck Wiki, Projects, and Discussions (if they are currently not used).
    • Click the settings icon next to About in the top-right corner of the repository main page and uncheck Releases and Packages (if they are currently not used)
  • The extension is safe:
    • Does not include or download binaries from unreliable sources
    • Does not send any information anywhere without user consent (explicit opt-in is required)

Tier 3

Community-supported extensions.

  • Extension has a reasonable name (not too general, not too narrow, suggests what the extension is for)
  • Documentation, tutorial, and test data are provided for most modules. A tutorial provides step-by-step description of at least the most typical use case, include a few screenshots. Any sample data sets that is used in tutorials must be registered with the Sample Data module to provide easy access to the user.
  • Follows programming and user interface conventions of 3D Slicer (e.g., GUI and logic are separated, usage of popups is minimized, no unnecessary custom GUI styling, etc.)
  • The extension can be successfully built and packaged on all supported platforms (Windows, macOS, Linux)
  • Maintainers respond to issues and pull request submitted to the extension's repository.
  • Maintainers respond to questions directly addressed to him/her via @mention on the Slicer Forum.
  • Permissive license is used for the main functions of the extension (recommended Apache or MIT). The extension can provide additional functionality in optional components that are distributed with non-permissive license, but the user has to explicitly approve those before using them (e.g., a pop-up can be displayed that explains the licensing terms and the user has to acknowledge them to proceed).
  • All requirements of tiers < 3.

Tier 5

Critically important extensions, supported by Slicer core developers. New Slicer Stable Release is released only if all Tier 5 extension packages are successfully created on all supported platforms.

  • Slicer core developers accept the responsibility of fixing any issues caused by Slicer core changes; at least one Slicer core developer (anyone who has commit right to Slicer core) must be granted commit right to the extension's repository.
  • Automated tests for all critical features.
  • Maintainers respond to questions related to the extension on the Slicer Forum.
  • All requirements of tiers < 5.

MHubRunner2 Outdated
"build_subdirectory": ".",
"category": "Examples",
"scm_revision": "main",
"scm_url": "https://github.com/MHubAI/SlicerMRunner",
Copy link
Contributor

@jamesobutler jamesobutler Jan 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This extension is already available in the Slicer extensions index(linked below). @LennyN95 if you are going to be pushing updates to this existing GitHub repository there won’t be a need to add it to the extensions index again. It is already specified to use the latest commit on your main branch.

{
"$schema": "https://raw.githubusercontent.com/Slicer/Slicer/main/Schemas/slicer-extension-catalog-entry-schema-v1.0.1.json#",
"build_dependencies": [],
"build_subdirectory": ".",
"category": "Examples",
"scm_revision": "main",
"scm_url": "https://github.com/MHubAI/SlicerMRunner",
"tier": 3
}

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @jamesobutler. We are working on a new version which works fundamentally different than the old version but will replace it. I update the link to the new repo. Shall this still be submitted as an update to the old extension or shall we proceed creating this as a new extension and removing the old one from the index?

Copy link
Contributor

@jamesobutler jamesobutler Jan 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If it is a successor to the original version where this update will have the same extension name and you want users to be able to upgrade from the old one to this new one (Slicer’s update extension functionality), I would suggest updating the existing JSON here in Slicer extensions index pointing to the new repository rather than submitting a new extension.

I’ll leave it up to you in terms of if you want this second generation code to be in the same repository as the original. You may want the history of github issues and PRs of the first generation for continuation with the new work.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree it is better to replace the current extension. I think it would be too confusing otherwise. If the initial version has some functionality that is not available in the update, based on the feedback from the users, it could be considered for migrating into the new extension. But I would not keep both.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree that there is no need for a new extension. You can just add a new module in the same extension if you want to keep both the old and new modules.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great tip with the separate module @lassoan! I will change this to an update of the old extension. To reduce confusion, I'll for now replace the old module and we can re-adding it as a separate module or merge functionality based on user feedback as suggested by @fedorov. Thanks all!

@LennyN95 LennyN95 changed the title Create MHubRunner2 Update MHubRunner Extension (Version2) Jan 25, 2025
@LennyN95 LennyN95 marked this pull request as ready for review January 28, 2025 11:23
@LennyN95
Copy link
Contributor Author

@fedorov @lassoan @jamesobutler Thank you all for your input.
I updated the json to replace the existing version with the new v2.

Update Repository name (remove the "2" postfix)
@lassoan lassoan merged commit 3352cfa into Slicer:main Jan 29, 2025
3 checks passed
@LennyN95
Copy link
Contributor Author

Thank you @lassoan!

How can I best merge this with 5.7 and 5.8? Do I need to make separate PRs into those branches or is there an automatism?

@jamesobutler
Copy link
Contributor

This was integrated for the main branch so is applied to latest Slicer 5.9 preview. You will have to submit another PR to the 5.8 branch to make the changes available for latest Slicer 5.8 stable. Extensions are no longer built by the factories for Slicer 5.7 Preview or Slicer 5.6 builds.

@jamesobutler
Copy link
Contributor

@LennyN95
Copy link
Contributor Author

LennyN95 commented Jan 30, 2025

@jamesobutler thank you for pointing this out, although I don't quite understand the error:

error: EXTENSION_FILE CMake variable points to a inexistent file or
  directory: /.../MHubRunner-build/./SlicerMHubRunner.json
Call Stack (most recent call first):
  /work/Preview/Slicer-0/Extensions/CMake/SlicerExtensionPackageAndUploadTarget.cmake:206 (slicerFunctionExtractExtensionDescriptionFromJson)

Which json is this referring to?
Does this indicate we should rename MHubRunner.json to SlicerMHubRunner.json in this PR?

@LennyN95
Copy link
Contributor Author

@jamesobutler I consulted with @jcfr and updated the project name to match the extension json file. The error should therefore resolve with the next build attempt.

Can we merge #2140 too, to include MHubRunner in the next build of 5.8?

Thank you all!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

4 participants