1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
# 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 requests.
* [Style](#style)
* [Reporting a bug](#reporting-a-bug)
* [Suggesting a feature](#suggesting-a-feature)
* [Workflow](#workflow)
* [General guidelines](#general-guidelines)
* [For new contributors](#for-new-contributors)
## Style
We require high-quality code.
Please follow the
[Fortran stdlib style guide](https://github.com/fortran-lang/stdlib/blob/master/STYLE_GUIDE.md)
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:
1. Check if the issue has already been reported.
([issues](https://github.com/fortran-lang/fpm/issues))
2. Check if it's still an issue or it has been fixed?
Try to reproduce it with the latest version from the master branch.
3. 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:
1. Which version of fpm are you using? Please be specific.
2. What are the steps to reproduce the issue?
3. What is the expected outcome?
4. What happens instead?
This information will help the community diagnose the issue quickly and with
minimal back-and-forth.
## 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's 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're not considering an unusually creative solution.
## Workflow
fpm is a community project.
There is no one single person making final decisions.
This is the workflow that we follow:
1. Open a [new issue](https://github.com/fortran-lang/fpm/issues/new) to
describe a bug or propose a new feature.
Refer to the earlier sections on how to write a good bug report or feature
request.
2. 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 concensus on these items you should proceed
to step 3.
3. 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: `Fixes #<issue-number>`.
4. Request reviewers to your PR.
For small bug fixes or documentation improvements, 1 to 2 reviewers is
sufficient.
For implementation of bigger features, request 3 to 4 or more reviewers.
Ideally, request reviewers that participated in step 2.
5. 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.
## General guidelines
* 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
merge cycle
* 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](https://github.com/fortran-lang/stdlib/blob/master/STYLE_GUIDE.md).
## For New Contributors
If you never created a pull request before, welcome :tada:.
You can learn how from
[this great tutorial](https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github).
Don't know where to start?
You can start by looking through these
[help-wanted issues](https://github.com/fortran-lang/fpm/issues?q=label%3A%22help+wanted%22+is%3Aissue+is%3Aopen).
|