Generating production-quality software releases often involves a number of steps, which tend to grow longer and more complicated as the software evolves.
I suggest we start a "Release procedure" section in docs/README-maintainers.md (or alternatively a new file like docs/README-release.md), documenting a pre-flight checklist of any non-automated actions that need to be performed by the human Release Manager at each release. Creating and following such a release procedure can help to detect any number of easily preventable defects, before a release announcement potentially promotes such defects into a high-profile embarrassing mistake.
I don't expect Caffeine's release procedure to be as complicated as GASNet's (possibly ever), largely thanks to automation provided by GitHub integrations that streamline Caffeine releases. However there are still a number of important manual steps that should take place. Here's a few off the top-of-my-head as a starting point:
Nominate a Release Manager with primary responsibility for ensuring each step in this procedure is followed
Validate correctness testing has been performed across all supported systems and supported versions of external dependencies
Update all instances of the copyright year embedded in: LICENSE.txt, fpm.toml
Update all instances of the release package version number embedded in: fpm.toml, install.sh
Great idea and great start above on the policy. I recommend adding, something like "Ensure there are no open issues marked with complete-before-release"
Generating production-quality software releases often involves a number of steps, which tend to grow longer and more complicated as the software evolves.
I suggest we start a "Release procedure" section in docs/README-maintainers.md (or alternatively a new file like docs/README-release.md), documenting a pre-flight checklist of any non-automated actions that need to be performed by the human Release Manager at each release. Creating and following such a release procedure can help to detect any number of easily preventable defects, before a release announcement potentially promotes such defects into a high-profile embarrassing mistake.
As example/inspiration, here is the current release procedure for GASNet-EX.
I don't expect Caffeine's release procedure to be as complicated as GASNet's (possibly ever), largely thanks to automation provided by GitHub integrations that streamline Caffeine releases. However there are still a number of important manual steps that should take place. Here's a few off the top-of-my-head as a starting point: