Skip to content
Jean-Rémy Falleri edited this page Feb 2, 2021 · 22 revisions

We welcome new contributors to GumTree. On this page, we list several information of interest for GumTree's developers.

Recommended tools

We recommend GumTree developers to use IntelliJ as it is the only IDE we tested that is capable of a smooth integration with our Gradle build chain. To debug gumtree, it is recommended to use the run task with the params property (i.e. ./gradlew run -Pparams="['webdiff', 'v0.java', 'v1.java']" or ./gradlew run --args='webdiff v0.java v1.java').

Release policy

GumTree is released regularly. The versions number follow the semantic versioning scheme. Each release is associated to a tag in the main branch. Non-beta major releases are associated to a name. The current list of releases is here.

Since we do not currently have enough manpower to maintain multiple stable releases, whenever a new major release is handed-out, the maintenance stops on the previous release.

Branch policy

All development happen on the main branch. Specific releases are associated to tags. Tags are named using semantic versioning (i.e. v2.0.1).

Code policy

GumTree has strict coding style policies. There are enforced using checkstyle. To check if you code is compliant, use the command gradle check.

Commit messages

Commit messages should follow the conventional commit specification. More specifically we use the following categories:

  • feat: for features
  • fix: for bugfixes
  • doc-feat: for new documentation (CI is skipped in this case)
  • doc-fix: for documentation corrections (CI is skipped in this case)
  • ci-feat: for new CI features
  • ci-fix: for fixes related to the CI

In addition, we have implemented a set of additional keywords that can have an effect on the continuous integration (CI) process:

  • [no ci]: skips the CI

Release

We have three distribution channels: github maven packages, dockerhub image and github releases.

Dockerhub images are deployed at each commit via an automated build setup in the Docker hub repository.

Snapshot Github maven packages are deployed weekly (every Sunday at 23:59) via the CI.

Github maven packages and Github releases are deployed via the CI via the push of a tag with a semver compliant name (i.e. v2.1.1). The build.gradle file is checked to ensure that the versions correspond.

git checkout main
git tag -a vX.Y.Z -m "Release X.Y.Z"
git push --tags