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 is a place to discuss major changes to AIT — where 'major' implies significant changes either to command line options and
interfaces or internal implementation details, particularly those that could be controversial or involve breaking changes.
Most changes don't need to go through the RFC process and can rely on issues and pull requests.
A huge part of the value on an RFC is defining the problem clearly, collecting use cases, showing how others have solved a
problem, etc. Coming up with a design is very iterative and only one part of the process. An RFC can provide tremendous value
without the design described in it being accepted.
The is inspired by -- read shamelessly ripped off from, the RFC process adopted by Svelte, React, Ember and others. With
a significant difference though in that we will be using GitHub Discussions to manage our RFC storage and
workflow.
The process
Copy the raw text of the AIT template, create a new discussion in the [RFC][rfc-discussion] category, and
paste your text there.
Provide a concise but nonetheless explicit title to your discussion and copy it into the first line of the RFC status box --
which is at the top of the content that you just pasted in.
Note: Do not enter an RFC number. This number will be assigned by us on preliminary review of your RFC.
Fill in the RFC.
Put care into the details. RFCs that do not present convincing motivation, demonstrate understanding of the impact of the
design, or are disingenuous about the drawbacks or alternatives tend to be poorly-received.
Validate your discussion and submit it. Thats it, you're done.
From there on, your RFC will receive design feedback from the larger community; you should be prepared to revise it in
response.
Build consensus and integrate feedback. RFCs that have broad support are much more likely to make progress than those that
don't receive any comments.
Eventually, the team will decide whether the RFC is a candidate for inclusion in AIT. If the RFC is deemed candidate for
inclusion in AIT, the status will be changed to «\ Active\ »; otherwise this status will either be left unchanged, or
declared «\ Rejected\ ».
The reasons for rejected an RFC will be the last entry in the discussion thread before locking the thread.
Active RFCs enter a «\ final comment period\ » which is affixed to the adopted status. This is usually a short time span
of a couple of days, at most a couple of weeks, which is used to include the RFC in the AIT development roadmap.
An RFC can be modified based upon feedback from the team and community. Significant modifications may trigger a prolongation
of the final comment period. Once the period is deemed ended the discussion thread is locked.
The RFC life-cycle
Once an RFC becomes active, then authors may implement it and submit the feature as a pull request to the AIT repo. All such PRs
should reference the RFC's discussion URL -- since there currently is no shortcode equivalent to issue shortcodes, the URL should
be explicitely included as <url>.
Becoming 'active' is not a rubber stamp, and in particular still does not mean the feature will ultimately be merged; it does mean
that the core team has agreed to it in principle and are amenable to merging it.
Furthermore, the fact that a given RFC has been accepted and is 'active' implies nothing about what priority is assigned to its
implementation, nor whether anybody is currently working on it.
Modifications to active RFCs can be done in followup PRs. We strive to write each RFC in a manner that it will reflect the final
design of the feature; but the nature of the process means that we cannot expect every merged RFC to actually reflect what the
end result will be at the time of the next major release; therefore we try to keep each RFC document somewhat in sync with the
language feature as planned, tracking such changes via followup pull requests to the document.
Implementing an RFC
The author of an RFC is not obligated to implement it. Of course, the RFC author (like any other developer) is welcome to post an
implementation for review after the RFC has been accepted.
If you are interested in working on the implementation for an 'active' RFC, but cannot determine if someone else is already
working on it, feel free to ask.
Reviewing RFCs
We tend to do our thinking informally, in the open, when time allows. There are a large number of community members relative to a small number of a core contributors who have many responsibilities. You can help ensure your RFC is reviewed in a timely manner by putting in the time to think through the various details discussed in the template. It doesn't scale to push the thinking onto a small number of core contributors. If reviewers raise an issue, don't dismiss it as irrelevant, but take the time to provide examples or data explaining it and coming up with ways that the design might be changed in response. Sometimes answering a single question can be very time consuming (such as setting up a benchmark), but discussions tend to stall out if concerns don't get thoroughly addressed.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
AIT RFCs
This is a place to discuss major changes to AIT — where 'major' implies significant changes either to command line options and
interfaces or internal implementation details, particularly those that could be controversial or involve breaking changes.
Most changes don't need to go through the RFC process and can rely on issues and pull requests.
A huge part of the value on an RFC is defining the problem clearly, collecting use cases, showing how others have solved a
problem, etc. Coming up with a design is very iterative and only one part of the process. An RFC can provide tremendous value
without the design described in it being accepted.
The is inspired by -- read shamelessly ripped off from, the RFC process adopted by Svelte, React, Ember and others. With
a significant difference though in that we will be using GitHub Discussions to manage our RFC storage and
workflow.
The process
Copy the raw text of the AIT template, create a new discussion in the [RFC][rfc-discussion] category, and
paste your text there.
Provide a concise but nonetheless explicit title to your discussion and copy it into the first line of the RFC status box --
which is at the top of the content that you just pasted in.
Note: Do not enter an RFC number. This number will be assigned by us on preliminary review of your RFC.
Fill in the RFC.
Put care into the details. RFCs that do not present convincing motivation, demonstrate understanding of the impact of the
design, or are disingenuous about the drawbacks or alternatives tend to be poorly-received.
Validate your discussion and submit it. Thats it, you're done.
From there on, your RFC will receive design feedback from the larger community; you should be prepared to revise it in
response.
Build consensus and integrate feedback. RFCs that have broad support are much more likely to make progress than those that
don't receive any comments.
Eventually, the team will decide whether the RFC is a candidate for inclusion in AIT. If the RFC is deemed candidate for
inclusion in AIT, the status will be changed to «\ Active\ »; otherwise this status will either be left unchanged, or
declared «\ Rejected\ ».
The reasons for rejected an RFC will be the last entry in the discussion thread before locking the thread.
Active RFCs enter a «\ final comment period\ » which is affixed to the adopted status. This is usually a short time span
of a couple of days, at most a couple of weeks, which is used to include the RFC in the AIT development roadmap.
An RFC can be modified based upon feedback from the team and community. Significant modifications may trigger a prolongation
of the final comment period. Once the period is deemed ended the discussion thread is locked.
The RFC life-cycle
Once an RFC becomes active, then authors may implement it and submit the feature as a pull request to the AIT repo. All such PRs
should reference the RFC's discussion URL -- since there currently is no shortcode equivalent to issue shortcodes, the URL should
be explicitely included as
<url>
.Becoming 'active' is not a rubber stamp, and in particular still does not mean the feature will ultimately be merged; it does mean
that the core team has agreed to it in principle and are amenable to merging it.
Furthermore, the fact that a given RFC has been accepted and is 'active' implies nothing about what priority is assigned to its
implementation, nor whether anybody is currently working on it.
Modifications to active RFCs can be done in followup PRs. We strive to write each RFC in a manner that it will reflect the final
design of the feature; but the nature of the process means that we cannot expect every merged RFC to actually reflect what the
end result will be at the time of the next major release; therefore we try to keep each RFC document somewhat in sync with the
language feature as planned, tracking such changes via followup pull requests to the document.
Implementing an RFC
The author of an RFC is not obligated to implement it. Of course, the RFC author (like any other developer) is welcome to post an
implementation for review after the RFC has been accepted.
If you are interested in working on the implementation for an 'active' RFC, but cannot determine if someone else is already
working on it, feel free to ask.
Reviewing RFCs
We tend to do our thinking informally, in the open, when time allows. There are a large number of community members relative to a small number of a core contributors who have many responsibilities. You can help ensure your RFC is reviewed in a timely manner by putting in the time to think through the various details discussed in the template. It doesn't scale to push the thinking onto a small number of core contributors. If reviewers raise an issue, don't dismiss it as irrelevant, but take the time to provide examples or data explaining it and coming up with ways that the design might be changed in response. Sometimes answering a single question can be very time consuming (such as setting up a benchmark), but discussions tend to stall out if concerns don't get thoroughly addressed.
Beta Was this translation helpful? Give feedback.
All reactions