Apptainer is an open source project, meaning we have the challenge of limited resources. We are grateful for any support that you can offer. Helping other users, raising issues, helping write documentation, or contributing code are all ways to help!
Join the community
This is a huge endeavor, and your help would be greatly appreciated! Post to online communities about Apptainer, and request that your distribution vendor, service provider, and system administrators include Apptainer for you!
You can reach the community through the mailing list or Slack. Links to join those are on the apptainer help page.
Raise an Issue
For general bugs/issues, you can open an issue at the GitHub repo. However, if you find a security related issue/problem, please email the Apptainer Security Team directly at firstname.lastname@example.org. More information about the Apptainer security policies and procedures can be found here
We (like almost all open source software providers) have a documentation dilemma… We tend to focus on the code features and functionality before working on documentation. And there is very good reason for this: we want to share the love so nobody feels left out!
The current documentation is generated with:
Other dependencies include:
More information about contributing to the documentation, instructions on how to install the dependencies, and how to generate the files can be obtained here.
For more information on using Git and GitHub to create a pull request suggesting additions and edits to the docs, see the section on contributing to the code. The procedure is identical for contributions to the documentation and the code base.
Contribute to the code
We use the traditional GitHub Flow to develop. This means that you fork the main repo, create a new branch to make changes, and submit a pull request (PR) to the main branch.
Step 1. Fork the repo
To contribute to Apptainer, you should obtain a GitHub account and
fork the Apptainer
repository. Once forked, clone your fork of the repo to your computer.
(Obviously, you should replace
your-username with your GitHub
$ git clone https://github.com/your-username/apptainer.git && \ cd apptainer/
Step 2. Checkout a new branch
Branches are a way of
isolating your features from the main branch. Given that we’ve just
cloned the repo, we will probably want to make a new branch from main
in which to work on our new feature. Lets call that branch
$ git checkout main && \ git checkout -b new-feature
You can always check which branch you are in by running
Step 3. Make your changes
On your new branch, go nuts! Make changes, test them, and when you are happy commit the changes to the branch:
$ git add file-changed1 file-changed2... $ git commit -m "what changed?"
This commit message is important - it should describe exactly the changes that you have made. Good commit messages read like so:
$ git commit -m "changed function getConfig in functions.go to output csv to fix #2" $ git commit -m "updated docs about shell to close #10"
close #10 and
fix #2 are referencing issues that are
posted on the upstream repo where you will direct your pull request.
When your PR is merged into the main branch, these messages will
automatically close the issues, and further, they will link your commits
directly to the issues they intend to fix. This will help future
maintainers understand your contribution, or (hopefully not) revert the
code back to a previous version if necessary.
Step 4. Push your branch to your fork
When you are done with your commits, you should push your branch to your fork (and you can also continuously push commits here as you work):
$ git push origin new-feature
Note that you should always check the status of your branches to see what has been pushed (or not):
$ git status
Step 5. Submit a Pull Request
Once you have pushed your branch, then you can go to your fork (in the
web GUI on GitHub) and submit a Pull Request.
Regardless of the name of your branch, your PR should be submitted to
main branch. Submitting your PR will open a
conversation thread for the maintainers of Apptainer to discuss your
contribution. At this time, the continuous integration that is linked
with the code base will also be executed. If there is an issue, or if
the maintainers suggest changes, you can continue to push commits to
your branch and they will update the Pull Request.
Step 6. Keep your branch in sync
Cloning the repo will create an exact copy of the Apptainer repository at that moment. As you work, your branch may become out of date as others merge changes into the upstream main. In the event that you need to update a branch, you will need to follow the next steps:
$ git remote add upstream https://github.com/apptainer/apptainer.git && # to add a new remote named "upstream" \ git checkout main && # or another branch to be updated \ git pull upstream main && \ git push origin main && # to update your fork \ git checkout new-feature && \ git merge main