| 
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