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

For detailed information, follow the RFC process.

Summary of the process (deck)

Stay informed

You can configure Gerrit Notifications to email you when new RFCs are uploaded.

Include the docs/contribute/governance/rfcs search expression and select Changes to receive email notifications for each new RFC proposal.

Gerrit settings screenshot demonstrating
the above

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

  • Kernel

RFC-0008

Remove zx_clock_get and zx_clock_adjust

  • Kernel

RFC-0009

Edge triggered async_wait

  • Kernel

RFC-0010

zx_channel_iovec_t support for zx_channel_write and zx_channel_call

  • Kernel

RFC-0011

zx_object_get_info ZX_INFO_KMEM_STATS_EXTENDED

  • Kernel

RFC-0012

Zircon Discardable Memory

  • Kernel

RFC-0013

Cloning a VMO mapping

  • Kernel

RFC-0014

Relax zx_fifo_create constraints

  • Kernel

RFC-0015

Compatibility Tests for Fuchsia (CTF)

  • Governance
  • Testing

RFC-0016

Boot time page sizes

  • Kernel

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

FIDL Syntax Revamp

  • 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

  • Kernel

RFC-0069

Standard I/O in ELF Runner

  • Component Framework

RFC-0070

PCI protocol changes to support legacy interrupts

  • Kernel

RFC-0071

OTA backstop

  • System

RFC-0072

Standalone Image Assembly Tool

  • Build

RFC-0074

Expose Process Start Time

  • Kernel

RFC-0075

Deprecate Zedboot-based paving for provisioning devices

  • General

RFC-0076

FIDL API Summaries

  • FIDL

RFC-0077

zx_clock_update accuracy improvement

  • Kernel

RFC-0078

Kernel Sanitizer Coverage for Fuchsia Fuzzing

  • Kernel

RFC-0079

Detecting debuglog data loss

  • Kernel
  • Diagnostics

RFC-0080

Detecting VMO Immutability

  • Kernel

RFC-0081

fastboot boot

  • General

RFC-0082

Running unmodified Linux programs on Fuchsia

  • Foreign ABI Compatibility

RFC-0083

FIDL versioning

  • FIDL

RFC-0084

Add more metrics to zx_info_task_runtime_t

  • Kernel

RFC-0085

Reducing the zx_status_t space

  • Kernel
  • System

RFC-0086

Updates to RFC-0050: FIDL Attributes Syntax

  • FIDL

RFC-0087

Updates to RFC-0050: FIDL Method Parameter Syntax

  • FIDL

RFC-0089

Core realm variations

  • Component Framework

RFC-0090

Driver shared libraries allowlist

  • Kernel

RFC-0091

zx_system_get_event ZX_SYSTEM_EVENT_IMMINENT_OUT_OF_MEMORY

  • Kernel

RFC-0092

Sessions

  • Sessions

RFC-0093

Design principles of component manifests

  • Component Framework

RFC-0094

Carnelian Virtcon

  • General

RFC-0095

Build and assemble Workstation out-of-tree

  • General

RFC-0096

User input architecture

  • HCI

RFC-0097

FIDL Toolchain

  • FIDL

RFC-0098

Component Framework RFC Criteria

  • Component Framework
  • Governance

RFC-0099

Introduce `zx_socket_set_disposition`

  • Kernel

RFC-0100

Product Metadata

  • Developer

RFC-0101

Dynamic components with numbered handles

  • Component Framework

RFC-0102

Forbid CHILD_NO_WRITE with CHILD_RESIZABLE

  • Kernel

RFC-0103

Software Delivery RFC Criteria

  • Software Delivery
  • Governance

RFC-0104

Relative Component URLs

  • Component Framework

RFC-0105

Regular expression libraries

  • General

RFC-0106

Component manifest includes in the Fuchsia SDK

  • Component Framework

RFC-0107

Dynamic Offers

  • Component Framework

RFC-0108

Component binder protocol

  • Component Framework

RFC-0109

Fast UDP sockets

  • Netstack

RFC-0110

Reboot for termination of critical components

  • Component Framework

RFC-0111

Initial Fuchsia hardware platform specifications

  • Governance

RFC-0112

ACPI support on x86

  • Devices

RFC-0113

Efficient envelopes

  • FIDL

RFC-0114

Inlining small values in FIDL envelopes

  • FIDL

RFC-0115

Build Types

  • System

RFC-0117

Component fuzzing framework

  • Testing

RFC-0118

SWD policy at image assembly

  • Software Delivery

RFC-0119

System-absolute paths considered harmful

  • Build

RFC-0120

Standalone use of the FIDL wire format

  • FIDL

RFC-0121

Component lifecycle events

  • Component Framework

RFC-0122

RFC Stakeholders

  • Governance

RFC-0123

CPU performance info syscalls

  • Kernel

RFC-0124

Decentralized Product Integration: Artifact Description and Propagation

  • General

RFC-0125

Shortlinks on Fuchsia.dev

  • Developer

RFC-0126

Driver Runtime

  • Devices

RFC-0127

Structured Configuration

  • Component Framework

RFC-0128

Introduce `zx_vcpu_kick`

  • Kernel

RFC-0129

Python Support in Fuchsia

  • Governance

RFC-0130

Supported Hardware

  • Governance

RFC-0131

Design principles of the FIDL wire format

  • FIDL

RFC-0132

FIDL table size limit

  • FIDL

RFC-0133

Software Delivery Goals

  • Software Delivery

RFC-0134

Software updates time dependency

  • Software Delivery

RFC-0135

Package ABI revisions

  • Software Delivery

RFC-0136

Fxfs

  • Storage

RFC-0137

Discard unknown data in FIDL

  • FIDL

RFC-0138

Handling unknown interactions

  • FIDL

RFC-0139

Bazel SDK

  • General

RFC-0140

Realm Builder

  • Component Framework

RFC-0141

CTF Process

  • Testing

RFC-0142

zx_thread_legacy_yield

  • Kernel

RFC-0143

Userspace Top-Byte-Ignore

  • Kernel

RFC-0144

Size Check Tool

  • Developer

RFC-0145

Eager package updates

  • Software Delivery

RFC-0146

Structured Config Schemas in CML

  • Component Framework

RFC-0147

View System

  • Graphics
  • HCI
  • View System

RFC-0148

CI Guidelines

  • Developer
  • Governance

RFC-0149

FIDL encode validation not mandatory

  • FIDL

RFC-0150

Update opt-out

  • Software Delivery

RFC-0151

Compiler tuning flags for CPU targeting

  • Toolchain

RFC-0152

Improved OOM handling behavior

  • Drivers
  • Kernel
  • Power

RFC-0153

Ninja customization for Fuchsia

  • Build

RFC-0154

Subpackages

  • Software Delivery

RFC-0155

Optional capability routes

  • Component Framework

RFC-0156

Stream Append Mode

  • Kernel

RFC-0157

Fxfs encryption and multi-volume support

  • Storage

RFC-0158

Structured Config Accessors

  • Component Framework

RFC-0159

Execute Only Memory

  • Kernel
  • Toolchain

RFC-0160

Remove support for FIDL struct defaults

  • FIDL

RFC-0161

Scenic Allocator API

  • Graphics

RFC-0162

Flatland API

  • Graphics

RFC-0163

Test Output Format

  • Testing

RFC-0164

Test Suite API

  • Testing

RFC-0165

SDK categories

  • Developer

RFC-0166

One UI Stack

  • Graphics
  • HCI
  • View System

RFC-0167

Packages in early userspace bootstrapping

  • Component Framework

RFC-0168

Exposing Inspect through InspectSink

  • Diagnostics
  • Component Framework

RFC-0169

SDK Tool Compatibility

  • Developer

RFC-0170

Remove binary images from the update package

  • Software Delivery

RFC-0171

Improved diagnostics routing

  • Diagnostics
  • Component Framework

RFC-0172

UI Activity Service

  • HCI
  • Graphics

RFC-0173

Structured Configuration in Component Framework APIs

  • Component Framework

RFC-0174

Scale in Flatland

  • Graphics

RFC-0175

ELF Runner stdio forwarding defaults

  • Component Framework

RFC-0176

Disallow New Dart programs in the Fuchsia Source Tree

  • Build
  • Developer

RFC-0177

Focus Observer for Parent Views

  • View System
  • HCI

RFC-0178

Multiple debug exception channels per job

  • Kernel

RFC-0179

Basic clipboard service

  • HCI

RFC-0180

Test UI Stack

  • View System

RFC-0181

Lockless Discardable VMO

  • Kernel

RFC-0182

Deprecate config-data

  • Component Framework

RFC-0183

SDK Library Documentation

  • Developer

RFC-0184

POSIX Compatibility for the System Netstack

  • Foreign ABI Compatibility
  • Netstack

RFC-0185

Remove `zx_interrupt_bind_vcpu`

  • Virtualization

RFC-0186

Bazel for Fuchsia

  • Build

RFC-0187

Allow first thread in process to start with zx_thread_start

  • Kernel

RFC-0188

Component ABI Compatibility

  • Component Framework

RFC-0189

Window Management

  • Graphics
  • HCI
  • View System

RFC-0190

FIDL Support for Syscalls

  • FIDL
  • Kernel

RFC-0191

Fuchsia-on-GCE as a supported system configuration

  • Governance

RFC-0192

Device Trees on Fuchsia

  • Devices

RFC-0193

Supported C++ Versions

  • Build
  • Developer
  • Toolchain

RFC-0194

Addendum: Sessions

  • Sessions

RFC-0195

Positions and ranges in text APIs

  • HCI

RFC-0196

FIDL large messages

  • FIDL

RFC-0197

Node Groups for composites

  • Driver SDK

RFC-0198

Magma API

  • Graphics

RFC-0199

Protect child VMARs

  • Kernel

RFC-0200

Support adb protocol and interface for hardware testing

  • Developer
  • Testing

RFC-0201

Reclaim guest VM memory

  • Virtualization

RFC-0202

Test manager as a Service

  • Testing

RFC-0203

Introduce `zx_system_energy_info`

  • Kernel
  • Power

RFC-0204

VMO Reference Child

  • Kernel

RFC-0205

Vulkan Loader

  • Graphics

RFC-0206

Deprecate stash

  • Security
  • Storage

RFC-0207

Offline blob compression

  • Software Delivery

RFC-0208

Distributing Packages with the SDK

  • Software Delivery
  • Testing

RFC-0209

Memory priority profiles

  • Kernel

RFC-0210

Virtualization Capability Routing

  • Virtualization

RFC-0211

Fuchsia on RISC-V

  • Build
  • Devices
  • Drivers
  • EngProd/Infra
  • Firmware
  • General
  • Kernel
  • Languages and Libraries
  • Security
  • Toolchain

RFC-0212

Package Sets

  • Software Delivery

RFC-0213

Removing devfs FIDL multiplexing

  • Drivers

RFC-0214

Fuchsia churn policy

  • General
  • Governance

RFC-0215

Structured Configuration Parent Overrides

  • Component Framework

RFC-0216

Fuchsia Hosted Repository Guidelines

  • Developer
  • Governance
  • General

RFC-0217

Open Package Tracking

  • Software Delivery

RFC-0218

IOBuffer: A Peered Shared Memory Object for Efficient IO

  • Kernel
  • System

RFC-0219

Zircon Page Compression

  • Kernel

RFC-0220

The future of in-tree products

  • General
  • Software Assembly

RFC-0221

Python for out-of-tree system testing

  • Languages and Libraries
  • Testing

RFC-0222

Introduce Fuchsia Controller

  • Developer
  • FIDL
  • Testing

RFC-0223

zx_vmo_transfer_data

  • Kernel

RFC-0224

Userspace J-Extension Pointer Masking

  • Kernel

RFC-0225

Fxblob: Storing blobs in Fxfs

  • Storage

RFC-0226

Zircon Pager Writeback

  • Kernel

RFC-0227

Fuchsia Release Process

  • Developer
  • Software Assembly

RFC-0228

FDomain: Remote control of Fuchsia targets

  • Developer
  • Testing

RFC-0229

FIDL 2023

  • FIDL

RFC-0230

Suspend-To-Idle in Fuchsia

  • Power

RFC-0231

FIDL versioning replacement syntax

  • FIDL

RFC-0232

FIDL bindings for multiple API levels

  • FIDL

RFC-0234

Updating the RISC-V ABI: RVA22 + V

  • Kernel
  • Toolchain

RFC-0235

Component dictionaries

  • Component Framework

RFC-0236

VMO Snapshot-Modified Clone

  • Kernel

RFC-0237

Signalling Clock Updates With ZX_CLOCK_UPDATED

  • Kernel

RFC-0238

VMO size

  • Kernel

RFC-0239

Platform Versioning in Practice

  • General
  • Governance

RFC-0240

Asynchronous operations are on objects

  • Kernel

RFC-0241

Explicit Platform / External Split in SDK Interfaces

  • FIDL

RFC-0242

Configuration Capabilities

  • Component Framework

RFC-0243

WLAN Roaming

  • WLAN

RFC-0244

Raise user-defined Zircon exception

  • Kernel

RFC-0245

VMO Prefetch

  • Kernel

RFC-0246

API Levels are 32 bits

  • General

RFC-0247

Enabling LTO in Fuchsia

  • Build
  • Toolchain

RFC-0248

Problem Statement

  • Governance

RFC-0249

crosvm support in the platform

  • Governance

RFC-0250

Power topology

  • Power

RFC-0251

No Root Access

  • Drivers

RFC-0252

No Physical VMO CacheOps

  • Kernel

RFC-0253

zx_object_get_info ZX_INFO_VMAR_MAPS

  • Kernel

RFC-0254

Changing Attribution for Copy-on-Write Pages

  • Kernel

RFC-0255

System Activity Governor

  • Power

RFC-0256

Python application bundling for Lacewing tests

  • Build
  • Software Delivery
  • Testing
  • Toolchain

RFC-0257

storage-host: Componentizing upper-layer storage drivers

  • Storage

RFC-0258

Update from C++17 to C++20

  • Build
  • Languages and Libraries
  • Toolchain

RFC-0259

Monotonic Clock Suspension and the Boot Timeline

  • System

RFC-0260

Kernel Boot Time Support

  • Kernel

RFC-0261

Fast and efficient user space kernel emulation

  • Kernel

RFC-0262

Expand KMEM_STATS

  • Kernel

RFC-0263

Migrate driver communication to services

  • Driver SDK

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

Separating 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-0051

Safer structs for C++

  • FIDL

RFC-0062

Method impossible

  • FIDL

RFC-0063

OrdinalRange

  • FIDL

RFC-0064

Box <Knox>

  • FIDL

RFC-0065

No optional strings or vectors

  • FIDL

RFC-0088

Updates to RFC-0050: FIDL Bits, Enum, and Constraints Syntax

  • FIDL

RFC-0116

Wire format support for sparser FIDL tables

  • FIDL

RFC-0233

FIDL legacy by default

  • FIDL