Make a release - firedrakeproject/firedrake GitHub Wiki
Note that the processes here apply to the majority of Firedrake packages, not just Firedrake itself. Some packages (e.g. petsctools) do not have a release branch and so there is no difference between a major and patch release.
How to make a patch release
- Create a branch off of
releasewith a suitable name (e.g.myusername/2025.4.3rc). - Address all
# TODO RELEASEcomments found in the code. These will mostly be to use specific version of downstream packages instead of branches, and to specify theversionattribute in thepyproject.toml. - Validate that the release should work by opening a 'DO NOT MERGE' PR into
release(example). - If this passes then you should manually trigger the release workflow, passing in the name of your branch and the version number.
- Once this runs, review the changelog auto-generated by GitHub for the release (example) and clean it up if necessary. It can be helpful to break the changes apart by topic.
- Bump the
versionattribute in thepyproject.tomlon thereleasebranch. For instance, if you have just released2025.4.2then the version number in thepyproject.tomlshould now be2025.4.3.dev0. - Announce the new release in the Firedrake Slack, sharing a link to the release notes.
How to make a major release
- Make a final patch release for the current major version (e.g. release
2025.4.3before releasing2025.10.0). This should pin dependencies that are known to having breaking changes betweenreleaseandmainbranches (e.g. FIAT, UFL) (example). This should be done to make sure that users are still able to install the older version for at least a little longer. To do this follow the procedure for making patch releases described above. - Coordinate the releases of the upstream packages that use branches (e.g. FIAT, UFL).
- Create a branch off
releaseand merge inmain(here calledmyusername/merge-main). Make sure that anymain-specific bits of information are not carried through. In particular make sure to checkpyproject.toml. Note that the documentation may fail to build as it will be using an older container. - At the same time bump the versions of dependencies that have just been updated (e.g. FIAT, UFL, pyadjoint). Also bump the PETSc version.
- Merge (via a PR)
myusername/merge-mainintorelease. - Follow the steps to make a patch release.
- Bump the
versionattribute in thepyproject.tomlon themainbranch. For instance, if you have just released2025.10.0then the version number in thepyproject.tomlshould now be2025.11.0.dev0(just choose the next possible major version number, don't worry about the specific release date). - Merge
releaseintomain. This is helpful to do immediately as care is needed to resolve the conflicts that took place during the release.