Skip to content

Commit 006beda

Browse files
authored
Merge pull request #94 from certik/workflow
Document workflow based on the discussion in #5
2 parents 1926ade + e81d295 commit 006beda

File tree

1 file changed

+55
-3
lines changed

1 file changed

+55
-3
lines changed

Diff for: WORKFLOW.md

+55-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,57 @@
11
# Workflow for the Fortran stdlib contributors
22

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

Comments
 (0)