Developing Fiji

QR for this page

From Fiji

Jump to: navigation, search
Source code
Project management
Coding style
Writing plugins
Contributing to a plugin
Distributing your plugins
Development lifecycle
Adding new ops
Adding new formats
Using native libraries
ImageJ 1.x plugins
Building Fiji from source
Developing Fiji
Fiji + Eclipse
Contribution requirements
Supported compilers

Fiji is a community effort. So we are happy whenever we see new people developing Fiji!


The purpose of this tutorial is to get you started hacking on Fiji's source code (i.e., the core Fiji plugins). If you need to develop a new plugin for ImageJ, you do not actually need Fiji's source. Rather, see these resources:

See also Developing Fiji in Eclipse for a tutorial specific to the Eclipse IDE.

Getting started

First, you have to download and build Fiji. If you do not know Git yet, we have a concise introduction for you.

Building Fiji

Fiji is organized into a set of Maven projects. For convenience and speed, there is SciJava's minimal Maven-lookalike MiniMaven to build Fiji, but it is recommended to use an Integrated Development Environment, or at least real Maven.

For details, please see Downloading and Building Fiji From Source. See also the Supported Compilers page for more information.


It is strongly recommended to write regression tests (also known as unit tests). It is easy.

Furthermore, it is highly recommended to write and run unit tests in an Integrated Development Environment for efficient debugging.

You may also want to measure the code coverage of your tests - one way is described in the page Code Coverage in Fiji.

At some point, you might want to debug whatever you wrote. There's a small Debugging intro page.

Discussing code

When you want to discuss your changes to some Fiji component, the preferred way is to inline a patch and send it to the fiji-devel mailing list. You can also send a link to your repository, e.g. a fork of the Fiji repository on, but then commenting is not as easy (and the discussion will involve fewer developers).

When discussing larger chunks of code (or a patch) on IRC, please do not paste them directly, but use a pastebin instead.

To point at specific code on IRC or via mail, you can also do so by posting links to our Gitweb. See also GitHub Tricks.


Please have a look at the excellent How to contribute to an existing plugin or library tutorial.

Providing documentation

A plugin wants to be used. Therefore you want to give users some information about it, and most likely also a tutorial how to use it.

If you have an account on this Wiki, you can easily create new tutorials with the Tutorial Maker.

Further reading for developers