Skip to content

Commit 8150e14

Browse files
authored
Merge pull request #289 from adambkaplan/ship-lifecycle-update
feat: Clarify and Simplify SHIP Lifecycle
2 parents 0ca48f0 + 199022f commit 8150e14

File tree

2 files changed

+76
-23
lines changed

2 files changed

+76
-23
lines changed

ships/README.md

Lines changed: 75 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -17,28 +17,78 @@ A Shipwright Improvement Proposal (SHIP) is a way to propose, communicate, and c
1717

1818
## SHIP Lifecycle
1919

20-
* **Draft**: SHIPs start their lifecycle as a pull request, copying the proposal template.
21-
They graduate to the _provisional_ or _implementable_ phase when the pull request is merged.
22-
* **Provisional**: SHIPs that reach this phase focus on the _why_.
23-
The objective is to agree that an idea addresses a need for the community.
24-
The summary, motivation, and goals should be clearly articulated.
25-
Drawbacks and alternatives may not need to be identified at this phase, though the community may ask that these be included during review.
26-
Merging a SHIP as provisional does not imply that the community will implement a feature within any reasonable timeframe.
27-
* **Implementable**: SHIPs that reach this phase focus on the _how_.
28-
To graduate to this phase, the proposal needs to provide details on how the feature will be implemented and any new APIs that are introduced.
29-
The proposal must also highlight the risks, drawbacks, and alternatives considered for this feature.
30-
Test and release plans do not need to be fully articulated, though the community may suggest ways to test or release the feature at this stage.
31-
Implementable proposals indicate that the community agrees to a feature and related code can be merged.
32-
* **Implemented**: SHIPs that reach this phase focus on _what_ and _when_.
33-
At this point the feature may have related code pull requests that are under review or merged.
34-
Implemented proposals should have test and release plans identified.
35-
At this point the propsosal is considered "done."
36-
37-
Other phases in the proposal lifecycle can be:
38-
39-
* **Rejected**: Used if a provisional or implementable proposal is later rejected by the community.
40-
* **Withdrawn**: Used if the author of a provisional or implementable proposal later withdraws it from consideration.
41-
* **Replaced**: Used if a subsequent proposal is used to implement the same set of functionality.
20+
```mermaid
21+
flowchart LR
22+
Draft ---> Provisional
23+
Draft ---> Implementable
24+
Draft ---> Declined
25+
26+
Provisional ---> Implementable
27+
Provisional ---> Declined
28+
29+
Implementable ---> Implemented
30+
Implementable ---> Replaced
31+
32+
Implemented -.-> Replaced
33+
```
34+
35+
### 0. Draft
36+
37+
SHIPs start their lifecycle as a pull request, copying the proposal template. They graduate to the
38+
_provisional_ or _implementable_ phase when the pull request is merged.
39+
40+
### 1. Provisional
41+
42+
SHIPs that reach this phase focus on the _why_:
43+
44+
- The objective is to agree that an idea addresses a need for the community.
45+
- The summary, motivation, and goals should be clearly articulated.
46+
- Drawbacks and alternatives may not need to be identified at this phase, though the community may
47+
ask that these be included during review.
48+
- Merging a SHIP as provisional does not imply that the community will implement a feature within
49+
any reasonable timeframe.
50+
51+
### 2. Implementable
52+
53+
SHIPs that reach this phase focus on the _how_:
54+
55+
- The proposal needs to provide details on how the feature will be implemented and any new APIs
56+
that are introduced.
57+
- The proposal must also highlight the risks, drawbacks, and alternatives considered for this feature.
58+
- Test and release plans do not need to be fully articulated, though the community may suggest ways
59+
to test or release the feature at this stage.
60+
61+
Implementable proposals indicate that the community agrees to a feature and related code can be
62+
merged. Once an implementable proposal is accepted, Shipwright project maintainers should do the
63+
following:
64+
65+
- Create a "feature tracker" GitHub issue in the `community` repository, documenting the desired
66+
functionality and providing links to the relevant SHIP proposal. Feature trackers should link to
67+
sub-issues that target tasks in specific code repositories. See [community#282](https://github.com/shipwright-io/community/issues/282)
68+
for an example feature tracker.
69+
- Add the feature tracker to the project [Roadmap], which communicates that this
70+
approved is approved and seeking contributions.
71+
72+
### 3. Implemented
73+
74+
Implemented SHIPs that reach this phase focus on _what_ and _when_:
75+
76+
- All code and documentation related to the feature should be merged.
77+
- All contributions should be linked to specific releases thorough associated GitHub issues and
78+
pull requests.
79+
- Implemented proposals should have test and release plans identified.
80+
81+
At this point the propsosal is considered "done." Related feature trackers should be closed in
82+
GitHub and the feature should be marked "done" on the [Roadmap]. Completed features can be removed
83+
frm the [Roadmap] at the discretion of project maintainers.
84+
85+
### Other Lifecycle Phases
86+
87+
* **Declined**: Used if the community decides to not implement a feature at any phase of its
88+
lifecycle (outside of `implemented`). `implementable` proposals with code contributions should
89+
not move to the `declined` state.
90+
* **Replaced**: Used if a subsequent proposal is used to implement the same set of functionality,
91+
or is used to deprecate and remove this feature.
4292

4393
## FAQs
4494

@@ -59,3 +109,6 @@ You do not have to complete every section of the proposal template - different s
59109
**My FAQ isn't answered here!**
60110

61111
Open an issue and ask or even better open a PR with a question and proposed answer.
112+
113+
114+
[Roadmap]: ./../ROADMAP.md

ships/guidelines/ship-template.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ approvers:
1616
- "@oscardoe"
1717
creation-date: yyyy-mm-dd
1818
last-updated: yyyy-mm-dd
19-
status: provisional|implementable|implemented|rejected|withdrawn|replaced
19+
status: provisional|implementable|implemented|declined|replaced
2020
see-also:
2121
- "/docs/proposals/this-other-neat-thing.md"
2222
replaces:

0 commit comments

Comments
 (0)