Camp Developer Guide

The Camp developer guide is here to help new Camp developers develop for Camp.

Contributing to Camp

Camp is a collaborative open-source software project and we encourage contributions from anyone who wants to add features or improve its capabilities. Camp is developed in conjunction with the RAJA and Umpire code libraries since Camp is a part of the RAJA Portability Suite.

We assume contributors are familiar with Git, which we use for source code version control, and GitHub, which is where our project is hosted.

GitHub Project Access

Camp maintains levels of project access on its GitHub project:

  • Core team members. Individuals on the core Camp and RAJA team are frequent Camp contributors and participate regularly in project meetings, discussions, and other project activities. Their project privileges include the ability to create branches in the repository, push code changes to the Camp repo, make PRs, and merge them when they are approved and all checks have passed.

  • Everyone else. Anyone with a GitHub account is welcome to contribute to Camp. Individuals outside of the group described above can make PRs in the Camp project, but must do so from a branch on a fork of the Camp repo.

If you need access to the Camp repo, email raja-dev@llnl.gov

Before a PR can be merged into Camp, all test checks must pass and the PR must be approved by at least one member of the core Camp or RAJA team.

Each Camp contribution (feature, bugfix, etc.) must include adequate tests, documentation, and code examples. The adequacy of PR content, in this respect, is determined by PR reviewers applying their professional judgment considering the perspective of RAJA, Camp, and Umpire users and developers.

Release Process

Note

No significant code development is performed on a release branch. In addition to preparing release notes and other documentation, the only code changes that should be done are bug fixes identified during release preparations

Here are the steps to follow when creating a Camp release.

1: Start Release Candidate Branch

Create a release candidate branch off of the develop branch to initiate a release. The name of a release branch must contain the associated release version number. Typically, we use a name like v2024.07 where 2024 corresponds to the year and 07 corresponds to the month in which the release was made.

Important

Releases are coordinated with the RAJA and Umpire teams as part of timely RAJA Portability Suite releases. The release names will correspond to the release names of RAJA and Umpire as part of this process. Be sure to coordinate any Camp releases and work with the RAJA and Umpire teams for a release schedule.

For example:

git checkout -b v2024.07

2: Update Versions in Code

Update the version of the code where ever it is documented (i.e. the README file, Doxygen, etc.) and make sure the new version numbers are consistent.

Update Release Notes

Update any notes for a new release and update the license disclaimers at the top of any files if applicable.

3: Create Pull Request and push a git tag for the release

  1. Commit the changes and push them to Github.

  2. Create a pull request from release candidate branch to main branch.

  3. Merge pull request after reviewed and passing tests.

  4. Checkout main locally: git checkout main && git pull

  5. Create release tag: git tag v2024.07

  6. Push tag to Github: git push --tags

4: Draft a Github Release

Draft a new Release on Github

  1. Enter the desired tag version, e.g., v2024.07

  2. Select main as the target branch to tag a release.

  3. Enter a Release title with the same as the tag v2024.07

  4. Enter the information for the release into the release description.

  5. Publish the release. This will add a corresponding entry in the Releases section

  6. Communicate with the RAJA team when this process is done to properly coordinate releases.

Note

Github will add a corresponding tarball and zip archives consisting of the source files for each release.

5: Create Release Branch and Mergeback to main

  1. Create a branch off main that is for the release branch.

git pull
git checkout main
git checkout -b release-v2024.07
git push --set-upstream origin release-v2024.07
  1. Create a pull request to merge into main. When approved, merge it.

If you have questions regarding this process, reach out to Camp developers or send an email to raja-dev@llnl.gov