|
| 1 | + |
| 2 | + |
| 3 | +<details> |
| 4 | +<summary>Instructions - click to expand</summary> |
| 5 | + |
| 6 | +- Fork the rfcs repo: https://github.com/pytorch/rfcs |
| 7 | +- Copy `RFC-0000-template.md` to `RFC-00xx-my-feature.md`, or write your own open-ended proposal. Put care into the details. |
| 8 | +- Submit a pull request titled `RFC-00xx-my-feature`. |
| 9 | + - Assign the `draft` label while composing the RFC. You may find it easier to use a WYSIWYG editor (like Google Docs) when working with a few close collaborators; feel free to use whatever platform you like. Ideally this document is publicly visible and is linked to from the PR. |
| 10 | + - When opening the RFC for general discussion, copy your document into the `RFC-00xx-my-feature.md` file on the PR and assign the `commenting` label. |
| 11 | +- Build consensus for your proposal, integrate feedback and revise it as needed, and summarize the outcome of the discussion via a [resolution template](https://github.com/pytorch/rfcs/blob/rfc-process/RFC-0000-template.md#resolution). |
| 12 | + - If the RFC is idle here (no activity for 2 weeks), assign the label `stalled` to the PR. |
| 13 | +- Once the discussion has settled, assign a new label based on the level of support: |
| 14 | + - `accepted` if a decision has been made in the RFC |
| 15 | + - `draft` if the author needs to rework the RFC’s proposal |
| 16 | + - `shelved` if there are no plans to move ahead with the current RFC’s proposal. We want neither to think about evaluating the proposal |
| 17 | +nor about implementing the described feature until some time in the future. |
| 18 | +- A state of `accepted` means that the core team has agreed in principle to the proposal, and it is ready for implementation. |
| 19 | +- The author (or any interested developer) should next open a tracking issue on Github corresponding to the RFC. |
| 20 | + - This tracking issue should contain the implementation next steps. Link to this tracking issue on the RFC (in the Resolution > Next Steps section) |
| 21 | +- Once all relevant PRs are merged, the RFC’s status label can be finally updated to `closed`. |
| 22 | + |
| 23 | +</details> |
| 24 | + |
| 25 | + |
| 26 | + |
| 27 | + |
| 28 | + |
| 29 | +# [Title] |
| 30 | + |
| 31 | +**Authors:** |
| 32 | +* @nickname |
| 33 | +* @nickname |
| 34 | + |
| 35 | + |
| 36 | +## **Summary** |
| 37 | +A short paragraph or bullet list that quickly explains what you're trying to do. |
| 38 | + |
| 39 | + |
| 40 | +## **Motivation** |
| 41 | +What motivates this proposal and why is it important? |
| 42 | +How should users and developers think about this feature, how would it impact the way PyTorch is used? |
| 43 | +Explain impact and value of this feature |
| 44 | + |
| 45 | + |
| 46 | +## **Proposed Implementation** |
| 47 | +This is the bulk of the RFC. Explain the design in enough detail for somebody familiar with PyTorch to understand, and for somebody familiar with the implementation to implement. |
| 48 | +This should get into specifics and corner-cases, and include examples of how the feature is used, and how it will interact with other features. Any new terminology should be defined here. |
| 49 | +Consider: |
| 50 | +* using examples and diagrams to help illustrate your ideas. |
| 51 | +* including code examples, if you're proposing an interface or system contract. |
| 52 | +* linking to project briefs or wireframes that are relevant. |
| 53 | + |
| 54 | + |
| 55 | +## **Metrics ** |
| 56 | +What are the main metrics to measure the value of this feature? |
| 57 | + |
| 58 | + |
| 59 | +## **Drawbacks** |
| 60 | +Are there any reasons why we should not do this? Here we aim to evaluate risk and check ourselves. |
| 61 | + |
| 62 | +Please consider: |
| 63 | +* is it a breaking change? |
| 64 | +* Impact on UX |
| 65 | +* implementation cost, both in terms of code size and complexity |
| 66 | +* integration of this feature with other existing and planned features |
| 67 | + |
| 68 | + |
| 69 | +## **Alternatives** |
| 70 | +What other designs have been considered? What is the impact of not doing this? |
| 71 | + |
| 72 | + |
| 73 | +## **Prior Art** |
| 74 | +Discuss prior art (both good and bad) in relation to this proposal: |
| 75 | +* Does this feature exist in other libraries? What experience has their community had? |
| 76 | +* What lessons can be learned from other implementations of this feature? |
| 77 | +* Published papers or great posts that discuss this |
| 78 | + |
| 79 | + |
| 80 | +## **How we teach this** |
| 81 | +* What names and terminology work best for these concepts and why? How is this idea best presented? |
| 82 | +* Would the acceptance of this proposal mean the PyTorch documentation must be re-organized or altered? |
| 83 | +* How should this feature be taught to existing PyTorch users? |
| 84 | + |
| 85 | + |
| 86 | +## **Unresolved questions** |
| 87 | +* What parts of the design do you expect to resolve through the RFC process before this gets merged? |
| 88 | +* What parts of the design do you expect to resolve through the implementation of this feature before stabilization? |
| 89 | +* What related issues do you consider out of scope for this RFC that could be addressed in the future independently of the solution that comes out of this RFC? |
| 90 | + |
| 91 | + |
| 92 | +## Resolution |
| 93 | +We decided to do it. X% of the engineering team actively approved of this change. |
| 94 | + |
| 95 | +### Level of Support |
| 96 | +Choose one of the following: |
| 97 | +* 1: Overwhelming positive feedback. |
| 98 | +* 2: Positive feedback. |
| 99 | +* 3: Majority Acceptance, with conflicting Feedback. |
| 100 | +* 4: Acceptance, with Little Feedback. |
| 101 | +* 5: Unclear Resolution. |
| 102 | +* 6: RFC Rejected. |
| 103 | +* 7: RFC Rejected, with Conflicting Feedback. |
| 104 | + |
| 105 | + |
| 106 | +#### Additional Context |
| 107 | +Some people were in favor of it, but some people didn’t want it for project X. |
| 108 | + |
| 109 | + |
| 110 | +### Next Steps |
| 111 | +Will implement it. |
| 112 | + |
| 113 | + |
| 114 | +#### Tracking issue |
| 115 | +<github issue URL> |
| 116 | + |
| 117 | + |
| 118 | +#### Exceptions |
| 119 | +Not implementing on project X now. Will revisit the decision in 1 year. |
0 commit comments