Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Doc: add a page describing the RFC process step by step #11177

Merged
merged 1 commit into from
Nov 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions doc/source/community/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ Code of Conduct

code_of_conduct

.. _mailing_list:

Mailing List
------------
Expand Down
1 change: 1 addition & 0 deletions doc/source/development/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,5 @@ Development
testing
dev_documentation
cmake
rfc_process
rfc/index
69 changes: 69 additions & 0 deletions doc/source/development/rfc_process.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
.. _rfc_process:

================================================================================
Request For Comments (RFC) process for code changes
================================================================================

While most bug fixes and small enhancements following the existing logic of code
do not require a RFC and can be done using pull requests, we require contributors
to write a RFC and go through a formal adoption process in the following cases:

- Anything that could cause backward compatibility issues.
- Adding substantial amounts of new code (see :ref:`rfc-85`)
- Changing inter-subsystem APIs, or objects.
- Anything that might be controversial.

A good rule of thumb is that if you wonder "does this require a RFC?", the
answer is generally "yes".

The RFC process is the following one:

- add a new .rst file in :file:`doc/source/development/rfc` with the RFC text,
and references it in :file:`doc/source/development/rfc/index.rst`, and issue
a pull request.
You can look at https://github.com/OSGeo/gdal/pull/10913 as a potential example
for the expected content. Typical sections are:

- Title: RFC {XYZ}: {Description of the RFC in a short sentence}
- Author: your name.
- Contact: your email.
- Started: date at which this is started.
- Status: "Draft", when the RFC is started.
- Summary: what the RFC accomplishes in a few sentences.
- Motivation: Paragraph describing why this RFC is needed.
- Technical solution: organized in several sub-paragraph depending on the
complexity of the RFC. You may need to mention new API calls, impacted
files, etc., and other needed details.
- Backward compatibility: API, ABI, and other compatibility concerns.
- Performance impacts.
- Documentation: how this will be documented.
- Testing: how this will be tested.
- Related issues and PRs: points at potential existing tickets about the topic,
and pull request with a candidate implementation
- Voting history: "TBD" (to be defined), when the RFC is started

- Send an email to the :ref:`gdal-dev mailing list <mailing_list>` with a title like:
"Call for discussion on RFC {XYZ}: {Description of the RFC in a short sentence}"
where you point to the pull request. You may get feedback both in the pull
request or in the mailing list.

- Wait for feedback (give readers at least one week, or more if holiday season).
If it seems positive and reasonable consensus can be reached, you can start
working on a candidate implementation, and issue a pull request for it,
separate for the pull request with the RFC text.
Reference this candidate implementation pull request in the "Related issues
and PRs" section of the RFC text.

- Once your candidate implementation is representative enough, and you and other
contributors can have a good confidence that the RFC can be implemented in the
way it has been described, send an email to the gdal-dev mailing list with
a title like "Motion: adopt RFC {XYZ}: {Description of the RFC in a short sentence}"
where you point to the pull request.
All subscribers can vote, but only votes from members of the GDAL Project
Steering Committee are binding. The voting rules are covered by :ref:`rfc-1`.

- Once the RFC is approved, finish your candidate implementation if not already
finished, and wait for the review process and for it to be merged.

- Update the Status to "Adopted, implemented" and Voting history sections of the
RFC text.