A repository for gRFCs
Go to file
Jihun Cho 480eaa6534
A21: add clarification of invalid config after selected for loadBalancingConfig
2019-12-16 10:48:32 -08:00
A6_graphics Add more diagrams to retry design 2017-08-24 18:40:38 -07:00
A14_graphics Fix typo in A14-channelz (#146) 2019-06-04 11:13:56 -07:00
L9_graphics L9: new balancer and resolver APIs for gRPC-go (#30) 2018-02-06 15:58:08 -08:00
L38_graphics L38 initial proposal 2018-09-24 14:28:28 -07:00
L50_graphics L50: gRPC Objective-C Interceptor (#140) 2019-06-02 21:14:08 -07:00
L55_graphics L55 - gRPC Objective-C Global Interceptor (#150) 2019-07-10 12:23:34 -07:00
L56_graphics L56 objc bazel support (#153) 2019-08-22 10:42:02 -07:00
.gitignore Git ignore DS_Store 2017-03-09 11:38:14 -08:00
A1-http-connect-proxy-support.md Reference Java APIs for implemented proposals 2018-04-04 07:07:19 -07:00
A2-service-configs-in-dns.md Update after A21 service config error handling changes (#133) 2019-03-08 13:29:34 -08:00
A3-channel-tracing.md Add more better phrasing 2018-10-04 13:02:05 -07:00
A5-grpclb-in-dns.md Document gRPCLB dual protocol (http+https) workaround 2018-06-20 09:09:52 -07:00
A6-client-retries.md Allow empty nonfatalStatusCodes in hedging policy (#151) 2019-06-20 11:31:01 -07:00
A8-client-side-keepalive.md keepalive: Document C's option names 2018-07-12 10:42:21 -07:00
A9-server-side-conn-mgt.md keepalive: Document C's option names 2018-07-12 10:42:21 -07:00
A10-avoid-grpclb-and-service-config-for-localhost-and-ip-literals.md minor wording fix 2018-11-01 01:11:57 -07:00
A14-channelz.md Fix typo in A14-channelz (#146) 2019-06-04 11:13:56 -07:00
A15-promote-reflection.md A15: Promote Reflection Proto out of Alpha 2018-06-13 13:50:44 -07:00
A16-binary-logging.md s/conficting rules/duplicate rules/ 2018-09-21 11:18:46 -07:00
A17-client-side-health-checking.md Specify validation rule 2019-03-01 17:03:52 -08:00
A18-tcp-user-timeout.md update implementation status for Go 2018-11-12 21:40:06 -05:00
A21-service-config-error-handling.md A21: add clarification of invalid config after selected for loadBalancingConfig 2019-12-16 10:48:32 -08:00
A24-lb-policy-config.md A24: Update GrpcLbConfig to add child policy in LoadBalancingConfig (#137) 2019-03-25 13:50:43 -07:00
A26-grpclb-selection.md A26: gRPCLB Selection (#164) 2019-11-08 09:31:53 -08:00
CODE-OF-CONDUCT.md Add CODE-OF-CONDUCT.md, GOVERNANCE.md and update README.md (#160) 2019-09-26 09:39:05 -07:00
G1-true-binary-metadata.md Review feedback 2017-04-04 15:25:23 -07:00
GOVERNANCE.md Add CODE-OF-CONDUCT.md, GOVERNANCE.md and update README.md (#160) 2019-09-26 09:39:05 -07:00
GRFC-TEMPLATE.md Initial commit of seed information into the gRPC proposal repo. 2017-01-12 17:08:48 -08:00
L1-cpp-stream-coalescing.md Rename language proposal files for consistency (#113) 2018-10-24 11:28:42 -07:00
L2-cpp-completion-queue-creation-api.md Rename language proposal files for consistency (#113) 2018-10-24 11:28:42 -07:00
L5-node-client-interceptors.md Rename language proposal files for consistency (#113) 2018-10-24 11:28:42 -07:00
L6-core-allow-cpp.md Rename language proposal files for consistency (#113) 2018-10-24 11:28:42 -07:00
L7-go-metadata-api.md L7: Go Metadata API proposal (#25) 2018-01-17 09:49:44 -08:00
L8-cpp-internalization.md Rename language proposal files for consistency (#113) 2018-10-24 11:28:42 -07:00
L9-go-resolver-balancer-API.md L9: new balancer and resolver APIs for gRPC-go (#30) 2018-02-06 15:58:08 -08:00
L11-ruby-interceptors.md Rename language proposal files for consistency (#113) 2018-10-24 11:28:42 -07:00
L12-csharp-interceptors.md Update status to Approved 2018-06-07 08:16:51 -07:00
L13-python-interceptors.md Update status to Approved 2019-02-01 15:47:39 -08:00
L15-php-interceptors.md Rename language proposal files for consistency (#113) 2018-10-24 11:28:42 -07:00
L17-cpp-sync-server-exceptions.md Rename language proposal files for consistency (#113) 2018-10-24 11:28:42 -07:00
L18-core-remove-grpc-alarm.md Rename language proposal files for consistency (#113) 2018-10-24 11:28:42 -07:00
L21-core-gpr-review.md Rename language proposal files for consistency (#113) 2018-10-24 11:28:42 -07:00
L22-cpp-change-grpcpp-dir-name.md Rename language proposal files for consistency (#113) 2018-10-24 11:28:42 -07:00
L23-node-protobufjs-library.md make load, loadSync accept multiple files at once (#143) 2019-05-16 10:25:31 -07:00
L24-cpp-extensible-api.md Rename language proposal files for consistency (#113) 2018-10-24 11:28:42 -07:00
L25-cpp-expose-buffer-reader-writer.md Rename language proposal files for consistency (#113) 2018-10-24 11:28:42 -07:00
L26-cpp-raw-codegen-api.md Update and rename gRFC 2018-07-02 10:53:02 -07:00
L29-cpp-opencensus-filter.md Rename language proposal files for consistency (#113) 2018-10-24 11:28:42 -07:00
L30-cpp-control-max-threads-in-SyncServer.md Rename language proposal files for consistency (#113) 2018-10-24 11:28:42 -07:00
L31-php-intercetor-api-change.md L31: PHP interceptor API change with deserialize argument 2018-10-24 13:32:04 -07:00
L32-node-channel-API.md Expand createCall documentation in L32 2018-06-27 12:52:01 -07:00
L33-node-checkServerIdentity-callback.md Updated approver and discussion link thread. 2018-07-23 11:10:25 -07:00
L34-cpp-opencensus-span-api.md Rename language proposal files for consistency (#113) 2018-10-24 11:28:42 -07:00
L35-node-getAuthContext.md Move L35 to be with other proposals (#99) 2018-09-20 10:04:25 -07:00
L38-objc-api-upgrade.md Mark status as Final 2019-01-04 14:54:13 -08:00
L39-core-remove-grpc-use-signal.md Rename language proposal files for consistency (#113) 2018-10-24 11:28:42 -07:00
L40-node-call-invocation-transformer.md L40: resolve comments on PR 2018-09-27 10:45:01 -07:00
L41-node-server-async-bind.md L41: Add error to callback 2018-09-28 12:27:46 -07:00
L42-python-metadata-flags.md Update the compare phrase between ChannelReadyFuture and wait-for-ready 2018-11-07 16:26:29 -08:00
L43-node-type-info.md L43: Add discussion thread link 2018-11-19 14:44:06 -08:00
L44-python-rich-status.md Fix typo 2019-02-22 15:50:18 -08:00
L45-cpp-server-load-reporting.md Rename L38-cpp.. 2019-01-24 16:30:08 -08:00
L46-python-compression-api.md L46: Python Compression API (#125) 2019-04-09 15:15:42 -07:00
L48-node-metadata-options.md L48: Node Metadata options (#127) 2019-03-15 13:27:50 -07:00
L49-objc-flow-control.md Update status of flow control to "approved" 2019-05-20 09:53:01 -07:00
L50-objc-interceptor.md L50: gRPC Objective-C Interceptor (#140) 2019-06-02 21:14:08 -07:00
L51-java-rm-nano-proto.md L51: Java Remove Nano Protobuf 2019-05-21 17:58:10 -07:00
L52-core-static-method-host.md gRFC for static method and host. (#148) 2019-08-09 13:52:55 -04:00
L54-python-server-wait.md L54: Python Server Wait API (#149) 2019-08-05 15:56:16 -07:00
L55-objc-global-interceptor.md L55 - gRPC Objective-C Global Interceptor (#150) 2019-07-10 12:23:34 -07:00
L56-objc-bazel-support.md L56: fix spelling mistaks (#157) 2019-08-23 11:04:31 -07:00
L57-csharp-new-major-version.md L57 - C# 2.x release (#154) 2019-07-30 05:31:04 -07:00
L59-core-allow-cppstdlib.md L59 - Allow C++ standard library in gRPC Core Library (#156) 2019-09-05 11:20:16 -07:00
L60-core-remove-custom-allocator.md L60: Remove custom allocation function overrides from core surface API (#162) 2019-10-31 14:13:32 -07:00
LICENSE Change license to Apache 2.0 2017-08-29 23:40:50 -07:00
P1-cloud-native.md Add convention for naming files 2017-03-13 16:58:23 -07:00
P3-grfcs-for-core-api-changes.md P3: Core API changes (including additions) need a gRFC (#52) 2018-02-02 08:45:32 -08:00
P4-grpc-cve-process.md change status to approved (#163) 2019-10-10 09:47:52 -07:00
README.md Add CODE-OF-CONDUCT.md, GOVERNANCE.md and update README.md (#160) 2019-09-26 09:39:05 -07:00

README.md

gRPC RFCs

Introduction

Please read the gRPC organization's governance rules and contribution guidelines before proceeding.

This repo contains the design proposals for substantial feature changes for gRPC that need to be designed upfront. The goal of the upfront design process is to:

  • Provide increased visibility to the community on upcoming changes and the design considerations around them.
  • Provide ability to reason about larger “sets” of changes that are too big to be covered either in an Issue or in a PR.
  • Establish a consistent process for structured participation by the community on large changes, especially those that impact multiple runtimes and implementations.

Prerequisites

This process needs to be followed for any significant change to gRPC that needs design. Changes that are considered significant can be:

  • Features that need implementation across runtimes and languages.
  • Process changes that affect how the gRPC product is implemented.
  • Breaking changes to the public API (i.e. semver major changes).

Process

  1. Fork the repo and copy the template GRFC-TEMPLATE.md.
  2. Rename it to $CategoryName-$Summary, eg.: A6-client-retries.md (see category definitions below)
    • For language-specific proposals, include the name of the language: L##-$Language-$Summary. Canonical names: core, cpp, csharp, go, java, node, objc, php, python, ruby.
  3. Write up the RFC.
  4. Submit a Pull Request.
  5. Someone from gRPC team will be assigned as an APPROVER as part of this review. Once the APPROVER is assigned, the OWNER needs to start a discussion on grpc-io and update the PR with the discussion link. After this is done, the OWNER should update the gRFC to the state of In Review. It is expected that the APPROVER will help the OWNER along this process as needed.
  6. For at least a period of 10 business days (the minimum comment period), it is expected that the OWNER will respond to the comments and make updates to the RFC as new commits to the PR. Through the process, the discussion needs to be kept to the designated thread in the mailing list in order to avoid splintering conversations. The OWNER is encouraged to solicit as much feedback on the proposal as possible during this period. PR comments should belimited to formatting and vocabulary.
  7. If there is consensus as deemed by the APPROVER during the comment period, the APPROVER will mark the proposal as final and assign it a gRFC number. Once this is assigned (as part of the closure of discussion), the OWNER will update the state of the PR as final and submit the PR. Commits must not be squashed; the commit history serves as a log of changes made to the proposal.

APPROVER

  • By default a11r is the approver unless another approver is assigned on a per-proposal basis.
  • If the assigned APPROVER and the OWNER cannot satisfactorily settle an issue, the final APPROVER is still a11r.

Proposal Categories

The proposals shall be numbered in increasing order.

  • #An - Affects all languages.
  • #Pnn - Affects processes, such as the proposal process itself.
  • #Lnnn - Language specific changes to external APIs or platform support.
  • #Gnnnn - Protocol level changes.

Proposal Status

  1. Every uncommitted proposal candidate starts off in the Draft state.
  2. After it accepted for review and posted to the group, it enters the In Review state.
  3. Once it is approved for submission by the arbiter, it goes into the Final state. Only minor changes are allowed (what qualifies as minor is left to the APPROVER).
  4. If a proposal needs to be revisited, it can be moved back to the Draft or In Review state. This can happen if issues are discovered during implementation. At which point, the review process as described above must be followed.
  5. Once a proposal is Final and if it has been implemented by a language, it can be updated to a status of Implemented with the list of languages listed (listing versions is not required).