Skip to content

Commit e81d295

Browse files
committed
Update the workflow based on feedback
1 parent 92926e0 commit e81d295

File tree

1 file changed

+53
-37
lines changed

1 file changed

+53
-37
lines changed

WORKFLOW.md

+53-37
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,57 @@
11
# Workflow for the Fortran stdlib contributors
22

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).
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.
635

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-
As part of the PR, when submitting a new public facing API, please provide
22-
the initial draft of the specification document as well as the the initial
23-
reference implementation of this specification.
24-
The specification is a document that describes the API and the
25-
functionality, so that anyone can use it to create an implementation from
26-
scratch without looking at `stdlib`. The `stdlib` library then provides the
27-
reference implementation.
28-
29-
4. When opening a PR, request reviews from one or more people that are most
30-
relevant to it. These are likely to be people involved in prior steps of the
31-
workflow. Other contributors (not explicitly invited) are encouraged to
32-
provide reviews and suggestions as well. Iterate until all (or most)
33-
participants are on the same page. We should not merge if there is a strong
34-
objection from the reviewers or from somebody in the wider community.
35-
36-
5. Moving from experimental to main. The experimental "namespace" contains new
37-
functionality together with its specification. In order to move from
38-
experimental to main, the specification document must be approved by the
39-
wide community and the standards committee (informally). If that happens,
40-
then we can move the code into main, and the particular specification
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
4149
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)