High Level Release Plan

Date Activity
Apr 5 Create stable-3.4 branch, Release ‘3.4.0-rc0’
Apr 12 Release 3.4.0-rc1
Apr 19 Release 3.4.0-rc2
Apr 26 Release 3.4.0-rc3
May 3 Release 3.4.0-rc4
May 3-7 Extra E2E testing week
May 10-14 “Release week” (see below)
May 17 Final release of 3.4.0

Change Acceptance Policy for the Stable Branch

We don’t expect that all ongoing feature development will be completed before the stable branch is created, so we will allow the completion of existing features on the stable branch to bring features to completion until rc3.

The development of new features is strongly discouraged on the stable branch as it may compromise the stability of the release.

After rc3 only bug fixes will be accepted on the stable branch.

We would prefer that bug fixes are pushed for review directly onto the stable branch, rather than onto master to be cherry-picked back. The reason for this is to avoid that the release managers need to spend time manually checking which changes need to be backported, which could result in changes being overlooked.

“Release Week”

The continued emergency with the global outbreak of COVID-19 has made unlikely to have a face-to-face Gerrit Maintainers’ Hackathon in the spring of 2021, where we typically had managed the release with the cooperation of all maintainers.

We will ask the community members to allocate some of their time during the “release and e2e testing week” (10-14 May) to help with finalizing the release:

  • test the release candidates
  • report issues
  • triage and troubleshoot incoming bug reports
  • make fixes
  • do code reviews
  • test the latest head of the stable branch

To expedite reviews of Library-Compliance and frontend changes, we will ask Google to make some members available in the EU and USA time-zones, and we will also ask Matthias Sohn or anyone else from the JGit community to be available to help with JGit related issues.

End-to-end Testing

We plan to use the Gatling e2e test framework for Git, developed by GerritForge and Ericsson, to test the stability of the release on a production-like setup on AWS automatically provisioned using the aws-gerrit templates.

GerritForge has also offered its own AWS infrastructure to test the scalability of Gerrit v3.4, particularly with medium to large sized projects. The Gerrit-CI has also an automated aws-gerrit pipeline that will pointed to the stable-3.4 branch and run on a daily basis.

End of Life for Gerrit 3.1.x

Per the support policy mentioned on the project homepage, after 3.4.0 is released 3.1.x will reach end of life and will no longer be actively supported.

Support for 3.3.x and 3.2.x will continue as usual, 2.16.x may have additional ad-hoc releases for issues related to the migration to NoteDb. Users of 3.1.x or earlier are recommended to upgrade to one of these versions.

Java

Java 11 official language level

Gerrit v3.4.x official releases will have Java 11 language level, this means that the officially released gerrit.war won’t start on Java 8.

From the statistics of the latest Gerrit v3.3.x only 0.1% of the installations are left on Java 8.

Java 8 compatibility

NOTE:This will be the last version with a Java 8 compatible code-base!

Although the official releases will be with Java 11 language level the code-base of stable-3.4 will be validated against both Java 8 and Java 11, thus it will still be possible to build stable-3.4 with Java 8.

We are aware that a number of companies still rely on Java 8, we have therefore opted to keep the code-base of stable-3.4 Java 8 compatible. However, we are planning to, at some time prior to the release of v3.5, drop Java 8 compatibility on the master branch.