|
| 1 | +# Webpipes RFCs |
| 2 | + |
| 3 | +Many changes, including bug fixes and documentation improvements can be |
| 4 | +implemented and reviewed via the normal GitHub pull request workflow. |
| 5 | + |
| 6 | +Some changes though are "substantial", and we ask that these be put through a |
| 7 | +bit of a design process and produce a consensus among the Webpipes core team. |
| 8 | + |
| 9 | +The "RFC" (request for comments) process is intended to provide a consistent and |
| 10 | +controlled path for new features to enter the project. |
| 11 | + |
| 12 | +[Active RFC List](https://github.com/webpipes/rfcs/pulls) |
| 13 | + |
| 14 | +Webpiipes is still **actively developing** this process, and it will still |
| 15 | +change as more features are implemented and the community settles on specific |
| 16 | +approaches to feature development. |
| 17 | + |
| 18 | +## When to follow this process |
| 19 | + |
| 20 | +You should consider using this process if you intend to make "substantial" |
| 21 | +changes to Webpipes or its documentation. Some examples that would benefit from an |
| 22 | +RFC are: |
| 23 | + |
| 24 | +- A new feature that creates new API surface area, and would require a feature |
| 25 | + flag if introduced. |
| 26 | +- The removal of features that already shipped as part of the release channel. |
| 27 | +- The introduction of new idiomatic usage or conventions, even if they do not |
| 28 | + include code changes to Webpipes itself. |
| 29 | + |
| 30 | +The RFC process is a great opportunity to get more eyeballs on your proposal |
| 31 | +before it becomes a part of a released version of Webpipes. Quite often, even |
| 32 | +proposals that seem "obvious" can be significantly improved once a wider group |
| 33 | +of interested people have a chance to weigh in. |
| 34 | + |
| 35 | +The RFC process can also be helpful to encourage discussions about a proposed |
| 36 | +feature as it is being designed, and incorporate important constraints into the |
| 37 | +design while it's easier to change, before the design has been fully |
| 38 | +implemented. |
| 39 | + |
| 40 | +## What the process is |
| 41 | + |
| 42 | +In short, to get a major feature added to Webpipes, one usually first gets the |
| 43 | +RFC merged into the RFC repo as a markdown file. At that point, the RFC is |
| 44 | +'active' and may be implemented with the goal of eventual inclusion into the |
| 45 | +specification. |
| 46 | + |
| 47 | +- Fork the RFC repo http://github.com/webpipes/rfcs |
| 48 | +- Copy `0000-template.md` to `text/0000-my-feature.md` (where 'my-feature' is |
| 49 | + descriptive. Don't assign an RFC number yet). |
| 50 | +- Fill in the RFC. Put care into the details: **RFCs that do not present |
| 51 | + convincing motivation, demonstrate an understanding of the impact of the |
| 52 | + design, or are disingenuous about the drawbacks or alternatives tend to be |
| 53 | + poorly-received**. |
| 54 | +- Submit a pull request. As a pull request the RFC will receive design feedback |
| 55 | + from the larger community, and the author should be prepared to revise it in |
| 56 | + response. |
| 57 | +- Build consensus and integrate feedback. RFCs that have broad support are much |
| 58 | + more likely to make progress than those that don't receive any comments. |
| 59 | +- Eventually, the team will decide whether the RFC is a candidate for inclusion |
| 60 | + in Webpipes. |
| 61 | +- RFCs that are candidates for inclusion in Webpipes will enter a "final comment |
| 62 | + period" lasting 3 calendar days. The beginning of this period will be signaled |
| 63 | + with a comment and tag on the RFCs pull request. |
| 64 | +- An RFC can be modified based upon feedback from the team and community. |
| 65 | + Significant modifications may trigger a new final comment period. |
| 66 | +- An RFC may be rejected by the team after the public discussion has settled and |
| 67 | + comments have been made summarizing the rationale for rejection. A member of |
| 68 | + the team should then close the RFCs associated pull request. |
| 69 | +- An RFC may be accepted at the close of its final comment period. A team member |
| 70 | + will merge the RFCs associated pull request, at which point the RFC will |
| 71 | + become 'active'. |
| 72 | + |
| 73 | +## The RFC life-cycle |
| 74 | + |
| 75 | +Once an RFC becomes active, then authors may submit a finished implementation of |
| 76 | +it as a pull request to the Webpipes repo. Becoming 'active' is not a rubber |
| 77 | +stamp, and in particular still does not mean the feature will ultimately be |
| 78 | +merged; it does mean that the core team has agreed to it in principle and are |
| 79 | +amenable to merging it. |
| 80 | + |
| 81 | +Furthermore, the fact that a given RFC has been accepted and is 'active' implies |
| 82 | +nothing about what priority is assigned to its implementation, nor whether |
| 83 | +anybody is currently working on it. |
| 84 | + |
| 85 | +Modifications to active RFCs can be done in followup PRs. We strive to write |
| 86 | +each RFC in a manner that it will reflect the final design of the feature; but |
| 87 | +the nature of the process means that we cannot expect every merged RFC to |
| 88 | +actually reflect what the end result will be at the time of the next major |
| 89 | +release; therefore we try to keep each RFC document somewhat in sync with the |
| 90 | +language feature as planned, tracking such changes via followup pull requests to |
| 91 | +the document. |
| 92 | + |
| 93 | +## Implementing an RFC |
| 94 | + |
| 95 | +The author of an RFC is not obligated to implement it. Of course, the RFC author |
| 96 | +(like any other developer) is welcome to post an implementation for review after |
| 97 | +the RFC has been accepted. |
| 98 | + |
| 99 | +If you are interested in working on the implementation for an 'active' RFC, but |
| 100 | +cannot determine if someone else is already working on it, feel free to ask |
| 101 | +(e.g. by leaving a comment on the associated issue). |
| 102 | + |
| 103 | +## Reviewing RFCs |
| 104 | + |
| 105 | +Each week the team will attempt to review some set of open RFC pull requests. |
| 106 | + |
| 107 | +We try to make sure that any RFC that we accept is accepted at the weekly team |
| 108 | +meeting. Every accepted feature should have a core team champion, who will |
| 109 | +represent the feature and its progress. |
| 110 | + |
| 111 | +**THe Webpipes RFC process owes its inspiration to the [Gatsby RFC process], |
| 112 | +[React RFC process], [Yarn RFC process], [Rust RFC process], and [Ember RFC |
| 113 | +process]** |
| 114 | + |
| 115 | +[gatsby rfc process]: https://github.com/gatsby/rfcs |
| 116 | +[react rfc process]: https://github.com/reactjs/rfcs |
| 117 | +[yarn rfc process]: https://github.com/yarnpkg/rfcs |
| 118 | +[rust rfc process]: https://github.com/rust-lang/rfcs |
| 119 | +[ember rfc process]: https://github.com/emberjs/rfcs |
0 commit comments