17.7. GDA Releases and Branches

17.7.1. Current supported releases

Release

Date

End of life

Java version

Recommended IDE

GDA 9.31

16/08/2023

Shutdown 1 2024

17

2023-12

GDA 9.32

18/10/2023

Shutdown 2 2024

17

2023-12

GDA 9.33

19/03/2024

Shutdown 3 2024

21

2023-12

GDA 9.34

30/05/2024

Shutdown 4 2024

21

2023-12

GDA 9.35

14/08/2024

Shutdown 1 2025

21

2023-12

GDA 9.36

16/10/2024

Shutdown 2 2025

21

2023-12

GDA 9.37

05/03/2025

Shutdown 3 2025

21

2023-12

GDA 9.38

21/05/2025

Shutdown 4 2025

21

2023-12

GDA 9.39

20/08/2025

Shutdown 1 2026

21

2023-12

GDA 9.40

22/10/2025

Shutdown 2 2026

21

2023-12

master

N/A

N/A

21

2023-12

17.7.2. Branches

The branch for mainline development is called master.

GDA uses a release branch workflow.

When a release is made, a branch and tag is created for each repository. For example for GDA 9.20, a gda-9.20 branch will be created and gda-9.20rel tag.

This allows for changes (ideally only bugfixes) to be pushed to these release branches so that others may benefit from the fixes without having to switch to a master deployment.

For bugfixes the standard workflow is to create a commit on the oldest supported branch where the bug is present and then merge this forward to newer release branches (if applicable), and eventually to master. This merge workflow ensures that there are no ‘duplicate’ commits in the history (which is the case for cherry-pick workflows).

Cherry-picking is acceptable if a fix had already been merged to master before its requirement on a release branch.

17.7.3. Development

In general all development should be targeting the master branch. This includes new features and enhancements.

Release branches should be constrained to bug fixes and config changes. There are several reasons for this:

  • Prevent risking the stability of a release

  • Prevent the overhead of merging changes up to master, particularly when there are likely to be merge conflicts

  • Ensure that any new features are in the context of the most recent state, taking account of recent new features or API deprecations

17.7.4. Supported releases

In agreement with SGLs and beamlines, the two most recent releases of GDA are supported.

This means that two weeks after a release of GDA is made, the release branches for the second previous release will be closed for new Gerrit changes and the CI jobs disabled.

17.7.4.1. Example

Initial state is that GDA 9.19 is the current release, GDA 9.18 is the previous release. Therefore the following branches are open for changes: master, gda-9.19, gda-9.18.

  • 17th March - GDA 9.20 released, gda-9.20 branch open

  • 31st March - Two weeks later gda-9.18 is now closed

In the final state master, gda-9.20, gda-9.19 are open for changes.