|
1 | 1 | # Workflow for the Fortran stdlib contributors
|
2 | 2 |
|
3 |
| -This document will describe the workflow we'll follow when developing the Fortran stdlib. |
4 |
| -It's largely to be discussed and decided. |
5 |
| -For now, take a look at the [issues](https://github.com/fortran-lang/stdlib). |
| 3 | +This document describes our current workflow. |
| 4 | + |
| 5 | +We welcome everyone and anyone to participate and propose additions to stdlib. |
| 6 | +It is okay if you do not have experience for specification or implementation, |
| 7 | +but have an idea for stdlib. If the idea is popular among the community, more |
| 8 | +experienced contributors will help it through all 5 steps. |
| 9 | + |
| 10 | + |
| 11 | +1. **Idea**: You have an idea or a proposal. Open an |
| 12 | + [issue](https://github.com/fortran-lang/stdlib/issues) to discuss it. This |
| 13 | + is on the level of "is there interest in having image reader/writer |
| 14 | + functions in stdlib?" The goal of this step is to find out if the community |
| 15 | + is interested in having this functionality as part of stdlib. |
| 16 | + |
| 17 | +2. **API**: When there seems to be significant interest in the proposal (vast |
| 18 | + majority of participants think it is a good idea), move on to discuss the |
| 19 | + specific API. It's OK to propose the API off the bat if you already have an |
| 20 | + idea for it. This step is exploratory and its goal is to find out what the |
| 21 | + API should *look* and *feel* like. |
| 22 | + |
| 23 | +3. **Specification**: Discuss the API and iterate. When there is vast majority |
| 24 | + approval for the API, move on to implement it and submit a PR. Small PRs are |
| 25 | + always better than large. It is OK to implement only a few functions of a |
| 26 | + new module, and continue work on the others in a later PR. All new |
| 27 | + functionality goes into an "experimental" namespace |
| 28 | + (`stdlib_experimental_*.f90`). As part of the PR, when submitting a new |
| 29 | + public facing API, please provide the initial draft of the specification |
| 30 | + document as well as the the initial reference implementation of this |
| 31 | + specification. The specification is a document that describes the API and |
| 32 | + the functionality, so that anyone can use it to create an implementation |
| 33 | + from scratch without looking at `stdlib`. The `stdlib` library then provides |
| 34 | + the reference implementation. |
| 35 | + |
| 36 | +4. **Implementation** in experimental: When opening a PR, request reviews from |
| 37 | + one or more people that are most relevant to it. These are likely to be |
| 38 | + people involved in prior steps of the workflow. Other contributors (not |
| 39 | + explicitly invited) are encouraged to provide reviews and suggestions as |
| 40 | + well. Iterate until all (or most) participants are on the same page. |
| 41 | + We can merge when there is vast majority approval of the PR. |
| 42 | + |
| 43 | +5. **Release**: Moving from experimental to release. The experimental |
| 44 | + "namespace" contains new functionality together with its specification. In |
| 45 | + order to move from experimental to release, the specification document must |
| 46 | + be approved by the wide community and the standards committee (informally). |
| 47 | + If that happens, it has now been blessed for broad use and we can move the |
| 48 | + code into the main section of `stdlib`, and the particular specification |
| 49 | + document becomes part of the Fortran Standard Library. |
| 50 | + |
| 51 | + |
| 52 | +Note: the general term "vast majority" above means at least 80%, but ultimately |
| 53 | +it is left to our best judgement to ensure that the community agrees that each |
| 54 | +PR and proposal was approved by "vast majority". |
| 55 | + |
| 56 | +You are welcome to propose changes to this workflow by opening an |
| 57 | +[issue](https://github.com/fortran-lang/stdlib/issues). |
0 commit comments