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

Fuchsia RFCs

The Fuchsia RFC process is intended to provide a consistent and transparent path for making project-wide, technical decisions. For example, the RFC process can be used to evolve the project roadmap and the system architecture.

The RFC process evolves over time, and can be read here in its detailed current form. It is also summarized below.

Summary of the process

  • Review criteria for requiring an RFC.
  • Socialize your idea.
  • Draft your RFC using this template.
  • Iterate your idea with appropriate stakeholders.
  • After stakeholders signoff, email eng-council@fuchsia.dev to prompt the Eng Council to decide whether to accept your RFC.
  • If your RFC is accepted, a member of the Eng Council will comment on your change stating that the RFC is accepted, will assign the RFC a number and mark your change Code-Review +2. Your RFC can now be landed.

Criteria for requiring an RFC

Criteria for requiring an RFC is detailed in RFC-0001.

The following kinds of changes must use the RFC process.

  • Changing the project roadmap
  • Adding constraints on future development
  • Making project policy
  • Changing the system architecture
  • Delegating decision-making authority
  • Escalations

In addition, changes in the source directories:

  • /zircon
  • /src/zircon
  • /src/bringup

that meet the following criteria must use the RFC process as described in RFC0006: Addendum of the RFC Process for Zircon.

  • Adding or removing Zircon system interfaces.
  • Changing resource handling behaviors.
  • Modifying isolation guarantees.
  • Significant changes of performance or memory use.
  • Favoring a single platform.
  • Adding or Downgrading support for a platform.
  • New build configurations.

Process to submit an RFC

Once you are familiarized with the RFC guidelines and area ready to send an RFC proposal for review, see Creating a RFC.

Proposals

Active RFCs

Gerrit link

Finalized RFCs

RFC area




Accepted

RFC Title Area Gerrit change

RFC-0001

Fuchsia Request for Comments (RFC) process

  • Governance

RFC-0002

Fuchsia platform versioning

  • General

RFC-0003

Fuchsia logging guidelines

  • General

RFC-0004

Units of bytes

  • Governance

RFC-0006

Addendum of the RFC process for Zircon

  • Governance

RFC-0007

Zircon removal of thread killing

  • Zircon

RFC-0008

Remove zx_clock_get and zx_clock_adjust

  • Zircon

RFC-0009

Edge triggered async_wait

  • Zircon

RFC-0010

zx_channel_iovec_t support for zx_channel_write and zx_channel_call

  • Zircon

RFC-0011

zx_object_get_info ZX_INFO_KMEM_STATS_EXTENDED

  • Zircon

RFC-0012

Zircon Discardable Memory

  • Zircon

RFC-0013

Cloning a VMO mapping

  • Zircon

RFC-0014

Relax zx_fifo_create constraints

  • Zircon

RFC-0015

Fuchsia Compatibility Test Suite (CTS)

  • Governance
  • Testing

RFC-0016

Boot time page sizes

  • Zircon

RFC-0017

The FTP Process is dead, long live the RFC Process!

  • FIDL
  • Governance

RFC-0018

FTP process: A modest proposal

  • FIDL
  • Governance

RFC-0019

Using evolution = uint64;

  • FIDL

RFC-0020

Interface ordinal hashing

  • FIDL

RFC-0021

Soft transitions for methods add and remove

  • FIDL

RFC-0022

Clarification: Default values for struct members

  • FIDL

RFC-0023

Compositional model for protocols

  • FIDL

RFC-0024

Mandatory source compatibility

  • FIDL

RFC-0025

Bit flags

  • FIDL

RFC-0027

You only pay for what you use

  • FIDL

RFC-0028

Handle rights

  • FIDL

RFC-0029

Increasing method ordinals

  • FIDL

RFC-0030

FIDL is little endian

  • FIDL

RFC-0033

Handling of unknown fields and strictness

  • FIDL

RFC-0037

Transactional message header v3

  • FIDL

RFC-0040

Identifier uniqueness

  • FIDL

RFC-0041

Support for unifying services and devices

  • FIDL

RFC-0043

Documentation comment format

  • FIDL

RFC-0047

Tables

  • FIDL

RFC-0048

Explicit union ordinals

  • FIDL

RFC-0049

FIDL tuning process evolution

  • FIDL

RFC-0050

Syntax revamp

  • FIDL

RFC-0051

Safer structs for C++

  • FIDL

RFC-0052

Type aliasing and new types

  • FIDL

RFC-0053

Epitaphs

  • FIDL

RFC-0054

Parameter attributes

  • FIDL

RFC-0055

Documentation comments

  • FIDL

RFC-0056

Empty structs

  • FIDL

RFC-0057

Default no handles

  • FIDL

RFC-0058

Introduce a deprecated attribute

  • FIDL

RFC-0059

Reserved bits in vector, string, and array count fields

  • FIDL

RFC-0060

Error handling

  • FIDL

RFC-0061

Extensible unions

  • FIDL

RFC-0066

Programmer advisory explicit defaults

  • FIDL

RFC-0067

Additions to Fuchsia RFC process

  • Governance

RFC-0068

Page Eviction Hints

  • Zircon

RFC-0069

Standard I/O in ELF Runner

  • Component Framework

RFC-0070

PCI protocol changes to support legacy interrupts

  • Zircon

RFC-0071

OTA backstop

  • System

RFC-0072

Standalone Image Assembly Tool

  • Build

RFC-0074

Expose Process Start Time

  • Zircon

RFC-0075

Deprecate Zedboot-based paving for provisioning devices

  • General

RFC-0076

FIDL API Summaries

  • FIDL

RFC-0077

zx_clock_update accuracy improvement

  • Zircon

RFC-0078

Kernel Sanitizer Coverage for Fuchsia Fuzzing

  • Zircon

RFC-0079

Detecting debuglog data loss

  • Zircon
  • Diagnostics

RFC-0080

Detecting VMO Immutability

  • Zircon

RFC-0081

fastboot boot

  • General

RFC-0082

Runnning unmodified Linux programs on Fuchsia

  • PosixCompat

RFC-0083

FIDL versioning

  • FIDL

RFC-0084

Add more metrics to zx_info_task_runtime_t

  • Zircon

RFC-0085

Reducing the zx_status_t space

  • Zircon
  • System

RFC-0086

Updates to RFC-0050: FIDL Attributes Syntax

  • FIDL

RFC-0087

Updates to RFC-050: FIDL Method Parameter Syntax

  • FIDL

RFC-0089

Core realm variations

  • Components

Rejected

RFC Title Area Gerrit change

RFC-0005

Blobfs snapshots

  • Storage

RFC-0026

Envelopes everywhere

  • FIDL

RFC-0031

Typed Epitaphs

  • FIDL

RFC-0032

Efficient envelopes

  • FIDL

RFC-0034

Null terminate strings

  • FIDL

RFC-0035

Automatic flow tracing

  • FIDL

RFC-0036

Update to struct declarations

  • FIDL

RFC-0038

Seperating layout from constraints

  • FIDL

RFC-0039

Types come second

  • FIDL

RFC-0042

Non nullable types

  • FIDL

RFC-0044

Extensible method arguments

  • FIDL

RFC-0045

Zero-size empty structs

  • FIDL

RFC-0062

Method impossible

  • FIDL

RFC-0063

OrdinalRange

  • FIDL

RFC-0064

Box <Knox>

  • FIDL

RFC-0065

No optional strings or vectors

  • FIDL