---
title: "Release Plan for Gerrit 3.4"
tags: news
keywords: news
permalink: 2021-03-16-gerrit-3.4-release-plan.html
summary: "Release Plan for Gerrit 3.4"
hide_sidebar: true
hide_navtoggle: true
toc: true
---

## 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](https://gerrit-review.googlesource.com/Documentation/dev-e2e-tests.html),
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](https://gerrit.googlesource.com/aws-gerrit)
templates.

[GerritForge](https://www.gerritforge.com) 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](https://gerrit-ci.gerritforge.com) has also an automated
[aws-gerrit pipeline](https://gerrit-ci.gerritforge.com/job/gatling-gerrit-test/)
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](https://www.gerritcodereview.com/support.html#supported-versions),
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](https://www.gerritcodereview.com/2021-03-09-esc-minutes.html#gerrit-v33-and-double-release-on-java-8)
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.
