|
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. You are welcome to propose |
| 4 | +changes in it by opening an |
| 5 | +[issue](https://github.com/fortran-lang/stdlib/issues). |
| 6 | + |
| 7 | +1. You have an idea or a proposal. Open an issue to discuss it. This is on the |
| 8 | + level of "is there interest in having image reader/writer functions in |
| 9 | + stdlib?" |
| 10 | + |
| 11 | +2. When there seems to be significant interest in the proposal, like 80/20 |
| 12 | + participants think it's a good/bad idea, move on to discuss the specific |
| 13 | + API. It's OK to propose the API off the bat if you already have an idea for |
| 14 | + it. |
| 15 | + |
| 16 | +3. Discuss the API and iterate. When there is ~80/20 approval for the API, move |
| 17 | + on to implement it and submit a PR. Small PRs are always better than large. |
| 18 | + It's OK to implement only a few functions of a new module, and continue work |
| 19 | + on the others in a later PR. All new functionality goes into an |
| 20 | + "experimental" namespace (`stdlib_experimental_*.f90`). |
| 21 | + |
| 22 | +4. When opening a PR, request reviews from one or more people that are most |
| 23 | + relevant to it. These are likely to be people involved in prior steps of the |
| 24 | + workflow. Other contributors (not explicitly invited) are encouraged to |
| 25 | + provide reviews and suggestions as well. Iterate until all (or most) |
| 26 | + participants are on the same page. We should not merge if there is a strong |
| 27 | + objection from the reviewers or from somebody in the wider community. |
| 28 | + |
| 29 | +5. Moving from experimental to main. Once new functionality lands into |
| 30 | + "experimental", the next step is to write a "specification". The |
| 31 | + specification is a document that describes the API and the functionality, so |
| 32 | + that anyone can use it to create an implementation from scratch without |
| 33 | + looking at `stdlib`. `stdlib` provides the reference implementation. When |
| 34 | + this specification document is approved by the wide community and the |
| 35 | + standards committee (informally), then we can move the code into main, and |
| 36 | + the particular specification document becomes part of the Fortran Standard |
| 37 | + Library. |
0 commit comments