Skip to main content

Development

Source code

You can check out the ImageJ source code from GitHub:

git clone git://github.com/imagej/imagej.git

Building from source: Install Maven and type "mvn" from the top-level directory.

Using an IDE: You can import the code into your favorite IDE.

Javadocs: You can browse the Javadocs for ImageJ2 and ImgLib2 online.

Project management

Maven

We use Maven for ImageJ's project infrastructure.

We publish Maven artifacts to our own Maven repository, accessible from:

http://maven.imagej.net/

See the Learning Maven page to learn more about Maven.

Trac

We use Trac for issue tracking and roadmapping:

http://trac.imagej.net/

We use the ImageJ Trac's ticketing system for our ImageJ Roadmap, including both big-picture and fine-grained perspectives.

Jenkins

We have a Jenkins continuous build system, which automatically checks the code for build and test errors:

http://jenkins.imagej.net/

You can access Jenkins's last successful build artifacts from the Downloads page.

Configuring your IDE for ImageJ

The following articles explain how to configure your development environment of choice for ImageJ.

Coding style

We make a serious effort to keep the ImageJ codebase clean, consistent and easy to read—which includes both the source code and the revision history.

Interface-driven design

ImageJ use an interface-driven design where possible. Public interfaces, enumerations and constants (i.e., public static final fields) form the basis of ImageJ's API contract with downstream code. While we make an effort not to change the public methods and fields of non-interfaces, they may require occasional changes to improve the system.

Using git

Here are some common git operations for which we often find ourselves searching.

Workflow

Checkout a remote branch 'develop' and keep it linked to the origin:

git checkout -t origin/develop

It should report: "Branch develop set up to track remote branch develop from origin."

List all branches (both local and remote):

git branch -a

List local branches and their corresponding upstream remote branches: