Skip to content, Skip to search

Changes

Distribution

1,434 bytes added, 21 August
Fix typo
__NOTOC__{{Development DevelopMenu | pluginstutorials}}If you create a useful extension of ImageJ—e.g., a [[plugin]], [[script]] or [[macro]]—the next step is to ''distribute'' it to others, including:
* '''Distribute''' the extension itself to users
* Share the extension's '''source code'''
* '''Document''' the extension somewhere
== Best practices == Here is a quick summary of the most recommended options:* '''Distribution.'''** A) '''[[How to set up and populate an update site|create your own update site]]'''; or** B) '''[[Fiji contribution requirements|bundle your plugin with Fiji]]'''.* '''Source code.'''** Make your project '''[[open source]]'''.** Host it on '''[[GitHub]]'''.** Use '''[[Maven]]''' to build and SemVer for '''[[versioning]]'''.** Use '''[[Travis]]''' for continuous integration and artifact deployment to the [[SciJava Maven repository]].* '''Documentation.'''** Create a page here on the '''[http://imagej.net/ ImageJ Wiki]'''. The tables below discuss additional options for these three aspects of distribution. Green items are recommended. Other options are given but not recommended for various reasons.
== Distributing your extension ==
The first goal is to get your extension into the hands of users.
{{Tip|tip = The best way to distribute your extension is to '''[[How to set up and populate an update site|create an update site]]'''!}}{| class="wikitable" style="border: none"
| colspan="4" style="background: #afa" | '''Create your own update site'''
|-
| style="background: #dfd; vertical-align: top" |
* '''[[How to set up and populate an update site| Create your update site]]''', then '''[[How to set up and populate an update site#Uploading_files_to_your_update_site|upload your extension to it]]'''.
* You may add your update site to the list of built-in sites by editing the '''[[list of update sites]]{{ListOfUpdateSites}}''' page.
* To release a new version, '''[[How to set up and populate an update site#Uploading_files_to_your_update_site|upload it to the update site]]'''.
| style="background: #dfd; vertical-align: top" |
| style="background: #dfd; vertical-align: top" |
* '''[[ImageJ 1.x]]''' does not support update sites; users will need to use '''[[ImageJ2]]''' (or '''[[Fiji]]''': "Fiji Is Just ImageJ2"). You can '''[[Updater#Bootstrapping_the_updater|upgrade an ImageJ 1.x installation to ImageJ2]]'''.
* You will miss out on the '''[[Project_management|tools and tests]]''' used to ensure compatibility and reproducibility, making undetected breakages much more likely (at the least).
|-
| colspan="4" style="background: white; border: none; height: 1em" |
|-
| style="background: #dfd; vertical-align: top" |
* Write Make a mail to post on the '''[[Mailing ListsForum|fiji-devel mailing listImageJ forum]] ''' to initiate a request.
| style="background: #dfd; vertical-align: top" |
* Users '''[[Fiji/Downloads|install Fiji]]''', or '''[[How to follow a 3rd party update site|enable the Fiji update site]]'''.
| style="background: #dfd; vertical-align: top" |
* Your extension is available with Fiji out of the box.
* A '''[[Governance|Fiji maintainer]] ''' will help you to manage your project.* The ImageJ You can lean on existing tools and documentation to maintain '''[[reproducible builds|reproducibility]]''' of your project.* Your project will always be compatible with the latest Fiji distribution.* [[JenkinsTravis]] server automatically tests your project for errors, deploying successful builds to the [[SciJava Maven repository]].
| style="background: #dfd; vertical-align: top" |
* You must abide by the '''[[Fiji contribution requirements]]'''.
* You must rely on a Fiji maintainer (for now) to upload new versions for you.
|-
If you want to facilitate good science, please [[Open Source|share your source code]]. Otherwise, your extension is a black box and its results are not verifiable.
{{Tip|tip=The recommended way to share your source is to host it on '''[https://github.com/ GitHub]'''!}}{| class="wikitable" style="border: none"
| colspan="3" style="background: #afa" | '''Host on GitHub in your userspace or organization'''
|-
* All of '''[[ImageJ]]''', '''[[Fiji]]''' and related '''[[SciJava]]''' projects are '''[[Source code|hosted on GitHub]]'''.
| style="background: #dfd; vertical-align: top" |
* Git has a steep learning curve—the '''[https://windowsdesktop.github.com/ GitHub for WindowsDesktop]''' and '''[https://mac.github.com/ GitHub for Mac]''' clients make client makes things easier.
|-
| colspan="3" style="background: white; border: none; height: 1em" |
|-
| colspan="3" style="background: lightgray#afa" | '''Host on GitHub in the Fiji organization(for [[Fiji contribution requirements|extensions distributed with Fiji]])'''
|-
| style="background: #dfd" |'''Steps'''| style="background: #dfd" |'''Advantages'''| style="background: #dfd" |'''Disadvantages'''
|-
| style="background: #dfd; vertical-align: top" |* Request a '''[[Governance|Fiji maintainer]] ''' create a repository for you and add you as a contributor.* Abide by Meet the '''[[Fiji contribution requirements]]'''.| style="background: #dfd; vertical-align: top" |
* All the benefits of GitHub.
* A '''[[Governance|Fiji maintainer]] ''' helps you to manage your project.| style="background: #dfd; vertical-align: top" |* You must abide by the '''[[Fiji contribution requirements]]'''.
|-
| colspan="3" style="background: white; border: none; height: 1em" |
* No easy submission of patches.
* No finding the code in web searches.
* No revision control systemreading the change logs to understand why changes were made.* No revision control system!studying the history to better understand the project's activity.* No bisecting the history to track down when bugs were introduced.* No safety net to revert unwanted changes or avoid lost work.* No branching to maintain multiple development trajectories.* No easy switching between versions.* No automatic credit and tracking of which authors did which work.* No distribution and backup of the project's development history.
|}
Useful extensions deserve corresponding documentation explaining how to use them.
{{Tip|tip=The best place to document your extension is here on the '''[http://imagej.net/ ImageJ Wiki]'''!}}{| class="wikitable" style="border: none"
| colspan="3" style="background: #afa" | '''Create an ImageJ wiki page'''
|-
| style="vertical-align: top" |
* The [http://imagejdocu.tudor.lu/ ImageJ Information and Documentation Portal] predates the ImageJ wiki, and many extensions are still primarily documented there.
* The IIDP is a fairly [http://imagejdocu.tudor.lu/doku.php?id=start&do=recent active] wiki(but not [[Special:RecentChanges|compared to this one]]!).
* The ImageJ developers hope to unify these two wikis in the future.
| style="vertical-align: top" |
| style="vertical-align: top" |
* Prepare an HTML page modeled after the [http://imagej.net/plugins/index.html list of ImageJ 1.x plugins].
* Email it to Wayne {{Person|Rasband}}, the developer of ImageJ 1.x, and sole maintainer of the [http://imagej.net/index.html ImageJ 1.x website].
| style="vertical-align: top" |
* Listed on the ImageJ 1.x website.
Bureaucrat, emailconfirmed, incoming, administrator, uploaders
11,813
edits