Google is committed to advancing racial equity for Black communities. See how.

Template - RFC template

Template - RFC template
  • General

The RFC template.

Gerrit change


A one paragraph description of the rest of the proposal.


What problem does this proposal solve?


This is the technically detailed version of your proposal.


How will you go about implementing this design? Can the change be made in a single Gerrit change or does the change involve a complex migration of third-party dependencies? Do you plan to structure the implementation into phases? What dependencies exist at each phase?


What impact will this proposal have on performance? What benchmarks should we create to evaluate the proposal? To evaluate the implementation? Which of those benchmarks should we monitor on an ongoing basis?

Security considerations

What impact will this proposal have on security? Does the proposal require a security review?

A good starting point is to think about how the system might encounter untrusted inputs and how those inputs might be used to manipulate the system. From there, consider how known classes of vulnerabilities might apply to the system and what tools and techniques can be applied to avoid those vulnerabilities.

Privacy considerations

What impact will this proposal have on privacy? Does the proposal require a privacy review?

A good starting point is to think about how user data might be collected, stored, or processed by your system. From there, consider the lifecycle of such data and any data protection techniques that may be employed.


How will you test your feature? A typical testing strategy involves unit, integration, and end-to-end tests. Are our existing test frameworks and infrastructure sufficient to support these tests or does this proposal require additional investment in those areas?

If your system defines a contract implemented by other people, how will those people test that they have implemented the contract correctly? Consider, for example, creating a conformance test suite for this purpose.


Do we need to create or update any documentation to cover this feature? For example, do we need to add or remove an entry from the project roadmap? Do we need to change the architecture document? Would end-developers benefit from documentation related to this proposal?

Drawbacks, alternatives, and unknowns

What are the costs of implementing this proposal?

What other strategies might solve the same problem?

What questions still need to be resolved, or details iterated upon, to accept this proposal? Your answer to this is likely to evolve as the proposal evolves.

Prior art and references

Is there any background material that might be helpful when reading this proposal? For instance, do other operating systems address the same problem this proposal addresses?