Overview on Developing JabRef

This page presents all development information around JabRef. In case you are an end user, please head to the user documentation or to the general homepage of JabRef.

Starting point for new developers

On the page Setting up a local workspace, we wrote about the initial steps to get your IDE running. We strongly recommend continuing reading there. After you successfully cloned and build JabRef, you are invited to continue reading here.

JabRef’s development strategy

We aim to keep up to high-quality code standards and use code quality tools wherever possible.

To ensure high code-quality,

Continuous integration

JabRef has automatic checks using GitHub actions in place. One of them is checking for proper formatting of the code. Consistent formatting ensures easier reading of the code. Thus, we ensure that all of JabRef’s code follows the same code style.

Binaries are created using gradle. In case of an internal pull request, they are uploaded to https://builds.jabref.org. These binaries are created without any checks to have them available as quickly as possible, even if the localization or some fetchers are broken. You can fnd the deployment workflow runs at: https://github.com/JabRef/jabref/actions?workflow=Deployment.

Branches

The main branch is the main development line (“trunk”) and is intended to incorporate fixes and improvements as soon as possible and to move JabRef forward to modern technologies such as the latest Java version.

Other branches are used for working on and discussing improvements with the help of pull requests. One can see the binaries of each branch at https://builds.jabref.org/. Releases mark milestones and are based on the main branch at that point in time.

How JabRef acquires contributors

Next reading

Please head to Architecture and Components to read on the high-level architecture and JabRef’s (logical) components.