Overview on Developing JabRef
This page presents all development information around JabRef. In case you are an end user, please head to theuser documentation or to thegeneral homepage of JabRef.
Starting point for new developers
On the pageSetting 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,
- We follow the principles ofJava by Comparison.
- We follow the principles ofEffective Java.
- We useDesign Patterns when applicable.
- We document our design decisions using the lightweight architectural decision recordsMADR.
- Each external pull request is reviewed by at least twoJabRef Core Developers.
Continuous integration
JabRef has automatic checks usingGitHub 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 usinggradle. In case of an internal pull request, they are uploaded tohttps://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
Themain 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 ofpull requests. One can see the binaries of each branch athttps://builds.jabref.org/. Releases mark milestones and are based on themain
branch at that point in time.
How JabRef acquires contributors
- We participate inHacktoberfest.
- We participate inGoogle Summer of Code.
- We are very happy that JabRef is part ofSoftware Engineering trainings. Please head toTeaching for more information on using JabRef as a teaching object and on previous courses where JabRef was used.
Next reading
Please head toArchitecture and Components to read on the high-level architecture and JabRef’s (logical) components.