Creating a Custom Slicer Module - which way to go?

Hello everyone

I’m a long-time slicer lurker, who has received much help from everyone here and just want to extend my thanks. After a few years of using Slicer, I feel ready to start developing a few custom modules of my own. I did a brief search on what the best way to go about this would be and ran into many options which confused me. I wanted to know the difference as far as the options go:

  1. SlicerIGT (Developer tutorial | SlicerIGT)
  2. Guidelet (?) is this the same thing as option 1?
  3. Slicelet (Documentation/Nightly/Developers/Slicelets - Slicer Wiki). Is this similar to Guidelet?
  4. Kitware (GitHub - KitwareMedical/SlicerCustomAppTemplate: Template to be used as a starting point for creating a custom 3D Slicer application)

What is the difference between the three? They appear similar to me in that they are all meant to provide templates in creating custom modules.

I’m looking to create a very specific workflow oriented software, where it would hide most of the default slicer functionalities/GUI and focus on simplicity. The software would ideally be launched with a click of a button from the desktop, instead of needing to search for it in the modules tab, download the extension, etc. to load it.

Which option would be best?

Thanks in advance!

A slicelet is definitely the most straightforward way to get started. You can just repackage the binaries you get from slicer.org. If you’re mainly automating existing workflows and streamlining the UI you can do everything conveniently in Python. SlicerIGT and Guidelets are for surgical navigation applications and you don’t seem t be doing that. Only do a custom app if you need to add C++ code or otherwise change the whole application.

Just FYI, a search for “slicelet” on the current documentation site has no hits: Search — 3D Slicer documentation

True, not all the wiki material has been migrated to readthedocs, so sometimes you need to look both places.

Thanks for your reply!
Could I clarify what you mean by " You can just repackage the binaries you get from slicer.org"?

Also, do you mind delving deeper into what a slicelet is capable of vs. a custom app (kitware)? Is there perhaps an example of each so I have an idea of what each of the option is used for?

The way I understand it at the moment, a slicelet is essentially simply hiding unnecessary UI elements, showing only the necessary parts on Slicer, while a custom app is a complete renovation?

So , the custom app uses the same techniques to modify the Slicer UI as the slicelet, (by grabbing and hiding existing widgets in the QT environment), but also has many other options for customization. We have two blogs on using the custom app template:

The custom app template allows you to:

  • pick and choose what core modules you want enabled
  • bundle in extensions at build time
  • bundle in custom modules (python and C++)
  • use custom versions of the Slicer code or other dependencies (if needed)
  • replace the Slicer logos with your own

I highly recommend starting your development work in the ‘slicelet’ format. If you decide to do a custom app, this work can be reused in the custom app. The custom amp template contains a ‘Home’ module that functions very similarly to a slicelet and uses the same methods to modify the Slicer UI.