Revision as of 17:27, 24 September 2014 by Rueden (talk | contribs) (Add initial awesome version)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Template:DevelopmentIf 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

The tables below discuss 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: The best way to distribute your extension is to create an update site!
Create your own update site
Steps Installation Advantages Disadvantages
  • You do not need server space to host your extensions; you can use a personal update site hosted on the ImageJ web site.
  • Alternately, you can retain full control by hosting your update site yourself.
  • Users are notified of updates without needing to check proactively.
  • The updater manages dependencies for you.
  • You can automate distribution using the command line updater.
Distribute it as part of Fiji
Steps Installation Advantages Disadvantages
  • Your extension is available with Fiji out of the box.
  • A Fiji administrator will help (force ;-) you to manage your project.
Serve it from a website as a download
Steps Installation Advantages Disadvantages
  • Create an archive (TAR, ZIP, etc.).
  • Upload the archive to the relevant web space, and link it.
  • Users download the archive, unpacking it into ImageJ's plugins folder.
  • You avoid the activation barrier of learning to use the Updater.
  • Users must find your plugin via a link or web search.
  • Users must perform a manual installation procedure.
  • Users must manually check for later updates.

Sharing your source code

If you want to facilitate good science, please share your source code. Otherwise, your extension is a black box and its results are not verifiable.

Tip: The recommended way to share your source is to host it on GitHub!
Host on GitHub in your userspace or organization
Steps Advantages Disadvantages
  • Git is an incredibly powerful way to keep track of your code.
  • GitHub greatly facilitates collaboration: sharing ideas and patches.
  • Seriously: Git and GitHub are amazing tools, and you will be orders of magnitude less effective without them.
  • "Doing it in public" is a great way to stop sucking and be awesome instead.
  • All of ImageJ, Fiji and related SciJava projects are hosted on GitHub.
  • Create an archive (TAR, ZIP, etc.).
  • Upload the archive to the relevant web space, and link it.
Host on GitHub in the Fiji organization
Steps Advantages Disadvantages
  • All the benefits of GitHub.
  • A Fiji maintainer helps (forces ;-) you to manage your project.
  • You must abide by the Fiji contribution requirements.
Host on BitBucket
Steps Advantages Disadvantages
  • Similar to GitHub, but using BitBucket instead.
  • Similar to GitHub.
  • ImageJ and related projects are hosted on GitHub, not BitBucket.
  • BitBucket has a smaller user base than GitHub does.
Host on SourceForge
Steps Advantages Disadvantages
  • SourceForge predates GitHub; some people prefer it.
  • The interface is not as good as GitHub and BitBucket.
  • The collaboration features are vastly inferior.
  • SourceForge has a lot of downtime. (The ImageJ mirrors of SourceForge projects hence have a lot of problems.)
  • Using SourceForge is highly discouraged compared to other code hosting sites.
Serve it from a website as a download
Steps Advantages Disadvantages
  • Users download and unpack the archive.
  • You avoid the activation barrier of learning a revision control system.
  • No revision control system.
  • No easy browsing of source code online.
  • No easy submission of patches.
  • No finding the code in web searches.
  • No revision control system.
  • No revision control system!

Documenting your extension

Useful extensions deserve corresponding documentation explaining how to use them.

Tip: The best place to document your extension is here on the ImageJ Wiki!
Create an ImageJ wiki page
Steps Advantages Disadvantages
  • The ImageJ wiki is part of imagej.net, the integrated ImageJ web site.
  • The ImageJ wiki uses MediaWiki, the most popular wiki engine which drives Wikipedia.
  • You can get started immediately; no human needs to approve your account or edits.


Use the ImageJ Information and Documentation Portal (IIDP)
Steps Advantages Disadvantages
  • Request an account from an IIDP administrator.
  • Create a page for your extension.
  • The IIDP documents only ImageJ 1.x, not ImageJ2.
  • You must explicitly request an IIDP account from an administrator.
  • The wiki uses Plone, a lesser known CMS engine.
Add a page to the ImageJ 1.x website
Steps Advantages Disadvantages
  • Listed on the ImageJ 1.x website.
  • Not collaborative. No one else can edit the ImageJ 1.x website—not even you!
  • Hence, turnaround time on updates is longer.
  • The list of plugins there is extensive and difficult to sort through.
Create your own webpage elsewhere
Steps Advantages Disadvantages
  • Total control of the content
  • Nonstandard location. Users may have trouble finding your documentation.
  • Not collaborative. No one else can improve the documentation.
  • If your site goes down, users lose access to the information. (This happened with the 3D Viewer a while back. And the MBF Plugin Collection went permanently offline!)