You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This PR aims to clarify the SPEC process to make it very clear to new
contributors what the procedures are for submitting a SPEC, as well is
what is, and is not, in scope for a SPEC.
/cc @scientific-python/spec-steering-committee
---------
Co-authored-by: Brigitta Sipőcz <b.sipocz@gmail.com>
Co-authored-by: Jarrod Millman <jarrod.millman@gmail.com>
Copy file name to clipboardExpand all lines: purpose-and-process/_index.md
+94-39Lines changed: 94 additions & 39 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -30,14 +30,36 @@ will benefit the ecosystem as a whole.
30
30
31
31
Projects decide for themselves whether to adopt any given SPEC—often, this
32
32
would be through team consensus.
33
-
A SPEC may not be a good fit for every single project, and thus there is no
34
-
expectation that all SPECs must be adopted by all projects.
35
-
That said, SPECs serve their purpose through being adopted by
36
-
several projects—and their authority stems from the extent to which they are.
33
+
They may look towards endorsements by [Core Projects](/specs/core-projects) as a signal to help them decide.
34
+
A SPEC may not be a good fit for a project, and thus there is no
35
+
expectation that all SPECs must be adopted by all projects (in fact, even Core Projects that endorse a SPEC—i.e., signaling that they think it is a good idea—may choose not to adopt it themselves).
36
+
Still, SPECs best serve their purpose of communicating cross-project concepts when adopted by numerous projects—and their authority stems from the extent to which they are.
37
37
38
38
Participants in the SPEC process must adhere to our
39
39
[Code of Conduct](https://scientific-python.org/code_of_conduct/).
40
40
41
+
## What is a SPEC?
42
+
43
+
A SPEC (Scientific Python Ecosystem Coordination) is a document that captures an idea applicable to multiple projects.
44
+
It is the product of discussions with developers across the ecosystem, and captures one of the following types of narratives:
45
+
46
+
-**Recommendation:** We recommend that you do Y (e.g., [SPEC 8 — Securing the Release Process](https://scientific-python.org/specs/spec-0008/)).
47
+
-**Guideline:** Some projects may need to do Y. If you do Y, we recommend that you do it as follows (e.g., [SPEC 1 — Lazy Loading](https://scientific-python.org/specs/spec-0001/)).
48
+
-**Memorandum:** If you do Y, you should be aware of the following (we don't have any such advisories yet).
49
+
50
+
{{< admonition important >}}
51
+
**What a SPEC is not**
52
+
53
+
SPECs are _not_ meant to be extensive technical documents that cover a large amount of detail.
54
+
They typically _summarize_ an idea, referring to external sources, such as GitHub repositories or websites, for further detail.
55
+
56
+
If you find yourself wanting to _disseminate information_ across the
57
+
ecosystem, it may be better to write a blog post on
58
+
https://blog.scientific-python.org or to contribute to an existing
59
+
piece of documentation, such as https://learn.scientific-python.org/development/.
60
+
A blog post is also a good way to generate initial engagement around an idea that is not yet mature enough, or within scope, to become a SPEC.
This version may be merged to the main branch whenever the authors
151
+
consider it ready, clearly labeled as a draft (see `is-draft` header
152
+
field).
130
153
131
154
In the accepted phase, the authors _develop_ their SPEC, in
132
155
consultation with Core Projects and interested community members.
133
-
This is done in a collabortive and iterative process, focused on
156
+
This is done in a collaborative and iterative process, focused on
134
157
ensuring that the SPEC is broadly applicable and likely to be widely
135
158
adopted.
136
-
The intent is that most SPECs will have authors from several projects,
137
-
including Core Projects.
138
159
Once authors consider their SPEC complete, they **publish** it,
139
160
removing its draft status.
140
161
@@ -237,45 +258,79 @@ content = '''
237
258
238
259
### New SPEC Proposals
239
260
261
+
<!-- This is a focused distillation of #decision-points for authors. -->
262
+
240
263
A good SPEC proposal focuses on a single key recommendation or idea
241
-
for coordinating projects in the scientific Python ecosystem.
242
-
Before proposing a SPEC, we highly recommended that you first **vet
264
+
for coordinating projects in the scientific Python ecosystem, as
265
+
discussed under [What is a SPEC?](#what-is-a-spec).
266
+
267
+
As a SPEC moves through the process, it goes through different states,
268
+
as discussed under [Decision Points](#decision-points) and summarized
269
+
here.
270
+
271
+
**Before proposing** a SPEC, we highly recommended that you first **vet
243
272
the idea** by doing one or more of the following:
244
273
245
-
1. discuss the idea with at least one project in the ecosystem,
246
-
2. discuss the idea with at least one other member of the ecosystem, or
247
-
3. create a minimal, proof of concept prototype.
274
+
1. Discuss the idea with at least one project in the ecosystem—for example, by posting to a project mailing list, attending a community call, or by having a birds-of-a-feather discussion at a conference like SciPy;
275
+
2. discuss the idea with at least one other member of a [Core Project](/specs/core-projects); or
276
+
3. if it is a technical idea, create a minimal proof of concept.
277
+
278
+
**Before submitting** a proposed SPEC:
248
279
249
-
Before a proposed SPEC can be accepted:
280
+
1. Ensure that the SPEC has at least two authors from two different projects,
281
+
to show cross-project interest.
250
282
251
-
1. The idea must be proposed on the discussion forum under the [`SPECS/Ideas`
283
+
2. The **idea must be proposed** on the discussion forum under the [`SPECS/Ideas`
0 commit comments