How do I edit this website?

Distribution

If you create a useful extension of ImageJ—e.g., a plugin, script or macro—the next step is to provide it to others, which includes:

  1. Distributing the extension itself to users:
  2. Sharing the extension’s source code:
  3. Documenting how the extension works:

Distributing your extension

The original ImageJ does not support update sites; users will need to use Fiji.

There are two good ways of getting your extension into people’s hands:

Option A: Create your own update site

You can create an ImageJ update site that offers your extension to Fiji users.

  1. Set up your update site, then upload your extension to it.
  2. Optionally, you may add your update site to the list of built-in sites by editing the list of update sites page.
  3. To release a new version, upload it to the update site.

Users enable the update site to receive your extension, as well as future updates.

Benefits:

  • You do not need your own server; you can use a hosted update site on sites.imagej.net.
  • 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.

Option B: Distribute it as part of Fiji

You can distribute your extension with Fiji, so that users have access to it immediately upon download and install.

Tag the @fiji team in an ImageJ Forum post to initiate a request.

Benefits:

  • Your extension is available with Fiji out of the box.
  • A Fiji maintainer will help you to manage your project.
  • You can lean on existing tools and documentation to maintain reproducibility of your project.
  • Your project will always be compatible with the latest Fiji distribution.
  • GitHub Actions automatically tests your project for errors, deploying successful builds to the SciJava Maven repository.

Caveats: You must abide by the Fiji contribution requirements, and rely on a Fiji maintainer (for now) to upload new versions for you.

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.

Steps

  1. Create an account on GitHub.
  2. Create a new repository for your project.
  3. Push your code there.
  4. Learn Git to manage your code effectively.
  5. Optionally, if your extension is distributed with Fiji, you can transfer your repository to the fiji organization on GitHub, so that Fiji maintainers help you to manage your project more easily.

Advantages

  • Git is an incredibly powerful way to keep track of your code.
  • GitHub greatly facilitates collaboration: sharing ideas and patches.
  • Working 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.
  • Anyone can easily browse the source code online.
  • Anyone can submit suggestions (called pull requests) to improve the code.
  • Your project and its code are more Findable.
  • Git provides a safety net, enabling you to undo mistakes and avoid lost work.
  • You get an automatic changelog of what changes were made, by whom, when, and why.
  • Contributors are automatically credited for their efforts.
  • It is easier to track down when bugs were introduced by testing with different past versions of the codebase.
  • You can easily switch between different versions of the code.
  • You can explore multiple development trajectories (called branches) to try out different approaches.

The main downside? Git has a steep learning curve—but the GitHub Desktop client makes things easier.

Documenting your extension

Useful extensions deserve corresponding documentation explaining how to use them.

We recommend using the ImageJ wiki for this purpose because:

  • It is a central repository of ImageJ-related community knowledge and documentation.
  • It makes your extension more Findable. E.g. your extension will appear in the wiki’s search bar.
  • It is more collaborative: others can improve the documentation.
  • It more resilient to information loss. We have seen externally hosted documentation disappear, including that of the 3D Viewer, VIB Protocol, and MBF Plugin Collection.

To include your extension here, just create a page! For details, see Editing the Wiki.