rubygems / rfcs

RubyGems + Bundler RFCs
45 stars 40 forks source link
rubygems

RubyGems + Bundler RFCs

Many changes, including bug fixes and documentation improvements can be implemented and reviewed via the normal GitHub pull request workflow.

However, some changes are more substantial, and we ask that these be put through a bit of a design process and produce a consensus in the community and among the maintainers.

The "RFC" (request for comments) process is intended to provide a consistent and predictable path for new features and projects.

Active RFC List

When you need to follow this process

You need to follow this process if you intend to make "substantial" changes to RubyGems, Bundler, or their documentation. What constitutes a "substantial" change is evolving based on community norms, but may include the following.

Some changes do not require an RFC:

If you submit a pull request to implement a new feature without going through the RFC process, it may be closed with a polite request to submit an RFC first.

Before creating an RFC

It's often helpful to get feedback on your concept before diving into the level of API design detail required for an RFC. You may open an issue on this repo to start a high-level discussion, with the goal of eventually formulating an RFC pull request with the specific implementation design.

What the process is

In short, any major feature needs an RFC that has been merged into this RFC repo as a markdown file. At that point the RFC is 'active' and may be implemented with the goal of eventual inclusion into Bundler and/or RubyGems.

The RFC life-cycle

Once an RFC becomes active then authors may implement it and submit the feature as a pull request to the Bundler repo. Being 'active' is not a rubber stamp, and in particular still does not mean the feature will ultimately be merged; it does mean that in principle all the major stakeholders have agreed to the feature 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 does it imply anything about whether a Bundler developer has been assigned the task of implementing the feature. While it is not necessary that the author of the RFC also write the implementation, it is by far the most effective way to see an RFC through to completion: authors should not expect that other project developers will take on responsibility for implementing their accepted feature.

Modifications to active RFC's can be done in follow-up PR's. 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.

In general, once accepted, RFCs should not be substantially changed. Only very minor changes should be submitted as amendments. More substantial changes should be new RFCs, with a note added to the original RFC.

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 (e.g. by leaving a comment on the associated issue).

Reviewing RFC's

The maintainers will review open RFC pull requests, giving feedback and eventually accepting or rejecting each one. Every accepted feature should have a maintainer champion, who will represent the feature and its progress.

Inspiration

The RubyGems + Bundler RFC process is inspired by the Rust, Ember.js, and Swift RFC processes.