Contributing to the Fortran Package Manager
Thank you for considering contributing to the Fortran Package Manager (fpm).
Please review and follow these guidelines to make the contribution process
simple and effective for all involved. It will help communicate that you
respect the time of the community developers. In return, the community will
help address your problem, evaluate changes, and guide you through your pull
By contributing to fpm, you certify that you own or are allowed to share the
content of your contribution under the fpm license.
Please follow the
Fortran stdlib style guide
for any Fortran code that you contribute.
This allows us to focus on substance rather than style.
Reporting a bug
A bug is a demonstrable problem caused by the code in this repository.
Good bug reports are extremely valuable to us—thank you!
Before opening a bug report:
- Check if the issue has already been reported
- Check if it is still an issue or it has been fixed?
Try to reproduce it with the latest version from the default branch.
- Isolate the problem and create a minimal test case.
A good bug report should include all information needed to reproduce the bug.
Please be as detailed as possible:
- Which version of fpm are you using? Please be specific.
- What are the steps to reproduce the issue?
- What is the expected outcome?
- What happens instead?
This information will help the community diagnose the issue quickly and with
Suggesting a feature
Before suggesting a new feature, take a moment to find out if it fits the scope
of the project, or if it has already been discussed. It is up to you to provide
a strong argument to convince the community of the benefits of this feature.
Please provide as much detail and context as possible. If applicable, include a
mocked-up snippet of what the output or behavior would look like with this
feature implemented. “Crazy”, out-of-the-box ideas are especially welcome.
It’s quite possible that we are not considering an unusually creative solution.
fpm is a community project. There is no one single person making final
decisions. This is the workflow that we follow:
- Open a new issue to
describe a bug or propose a new feature.
Refer to the earlier sections on how to write a good bug report or feature
- Discuss with the community and reach majority consensus about what should be
done about the bug or feature request.
We define “majority” loosely as 80%.
This means that at least 4 of 5 people engaged in the discussion should be
able to agree on the next step.
This allows us to have the community mostly agree while not getting stuck if
one person disagrees.
At this stage, the scope of the fix/feature, its behavior, and API if
applicable should be defined.
Only when you have community consensus on these items you should proceed to
writing code and opening a PR.
When actively working on code towards a PR, please assign yourself to the
issue on GitHub.
This is good collaborative practice to avoid duplicated effort and also
inform others what you are currently working on.
- Open a new Pull Request (PR) with your contribution.
The body of the PR should at least include a bullet-point summary of the
changes, and a detailed description is encouraged.
If the PR completely addresses the issue you opened in step 1, include in
the PR description the following line:
- Request reviewers to your PR.
For small bug fixes or documentation improvements, 1 to 2 reviewers is
For implementation of bigger features, request 3 to 4 or more reviewers.
Ideally, request reviewers that participated in step 2.
- If your PR implements a feature that adds or changes the behavior of fpm,
your PR must also include appropriate changes to the documentation.
This workflow can evolve and change over time as we learn how best to work
together. If you have an idea on how to improve the workflow itself, please
open an issue and we’ll discuss it.
- A PR should implement only one feature or bug fix.
- Do not commit changes to files that are irrelevant to your feature or bug fix.
- Smaller PRs are better than large PRs, and will lead to a shorter review and
- Add tests for your feature or bug fix to be sure that it stays functional and useful
- Be open to constructive criticism and requests for improving your code.
- Again, please follow the
Fortran stdlib style guide.
For new contributors
If you have never created a pull request before, welcome :tada:.
You can learn how from
this great tutorial.
Don’t know where to start?
You can start by looking through the list of