Developer documentation¶
Contributing¶
Contributions are always welcome. Before starting work on larger features it’s recommended to coordinate design ideas through GitHub issues. Existing open issues may sometimes no longer be useful, have already been solved, or the notes on solving a particular problem may be outdated. Issues that we think are easier for someone new to the project to get started with are labeled on the issue tracker.
Building documentation¶
Building pika’s documentation requires doxygen, sphinx, as well the sphinx extensions and themes
listed in docs/requirements.txt
. Building the documentation is not done through CMake as the rest of
pika. Assuming SOURCE_DIR
is set to the pika source directory, and BUILD_DIR
is set to a
build directory (e.g. $SOURCE_DIR/build
), you first need to export the following environment
variables for doxygen:
export PIKA_DOCS_DOXYGEN_INPUT_ROOT="$SOURCE_DIR"
export PIKA_DOCS_DOXYGEN_OUTPUT_DIRECTORY="$BUILD_DIR/docs/doxygen"
Then generate the doxygen XML files using:
doxygen "$SOURCE_DIR/docs/Doxyfile"
Finally, build the sphinx documentation using:
sphinx-build -W -b html "$SOURCE_DIR/docs" "$BUILD_DIR/docs"
Assuming the build finished without errors, the HTML documentation will now be in
$BUILD_DIR/docs
with the entry point being $BUILD_DIR/docs/index.html
.
Doxygen only needs to be rerun if the source code documentation has changed. See the doxygen and sphinx documentation for more information on using the tools.
Release procedure¶
The current target is to produce a new (minor) release once a month. See milestones for the planned dates for the next releases.
pika follows Semantic Versioning.
For minor and major releases: create and check out a new branch at an appropriate point on
main
with the namerelease-major.minor.X
.major
andminor
should be the major and minor versions of the release. For patch releases: check out the correspondingrelease-major.minor.X
branch.Write release notes in
docs/changelog.md
. Check for issues and pull requests for the release on the pika planning board. Check for items that do not have a release associated to them on the Done view. Assign them to a release if needed.Make sure
PIKA_VERSION_MAJOR/MINOR/PATCH
inCMakeLists.txt
contain the correct values. Change them if needed.Update the version in the
CITATION.cff
file (both in the title and theversion
field).When making a post-1.0.0 major release, remove deprecated functionality if appropriate.
Update the minimum required versions if necessary.
Check that projects dependent on pika are passing CI with pika main branch. Check if there is no performance regressions due to the pika upgrade in those projects.
Repeat the following steps until satisfied with the release.
Change
PIKA_VERSION_TAG
inCMakeLists.txt
to-rcN
, whereN
is the current iteration of this step. Start with-rc1
.Create a pre-release on GitHub using the script
tools/roll_release.sh
. This script automatically tags with the corresponding release number.Add patches as needed to the release candidate until the next release candidate, or the final release.
Change
PIKA_VERSION_TAG
inCMakeLists.txt
to an empty string.Add the release date to the caption of the current
docs/changelog.md
section and change the value ofPIKA_VERSION_DATE
inCMakeLists.txt
.Create a release on GitHub using the script
tools/roll_release.sh
. This script automatically tags the release with the corresponding release number. You’ll need to setGITHUB_TOKEN
or bothGITHUB_USER
andGITHUB_PASSWORD
for the hub release command. When creating aGITHUB_TOKEN
, the only access necessary ispublic_repo
.Merge release branch into
main
(with –no-ff).Modify the release procedure if necessary.
Change
PIKA_VERSION_TAG
inCMakeLists.txt
back to-trunk
.Update spack (
https://github.com/spack/spack
).Clean up the pika planning board:
Move the version-specific views one release forward (e.g. change the name and filter of pika 0.X.0 to pika 0.<X+1>.0).
Change the status of Done items to Archive in the Done view.
Delete your
GITHUB_TOKEN
if created only for the release.Announce the release on the #pika slack channel.