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 when to use the process.
- Socialize your proposal.
- Draft your RFC using this template and share with stakeholders. See creating an RFC and RFC best practices.
- As conversations on your proposal converge, and stakeholders indicate their support, email eng-council@fuchsia.dev to ask the Eng Council to move your proposal to Last Call.
- After a waiting period of at least 7 days, the Eng Council will accept or reject your proposal, or ask that you iterate with stakeholders further.
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.
Proposals
Active RFCs
Finalized RFCs
RFC area
Accepted
RFC | Title | Area | Gerrit change |
---|---|---|---|
RFC-0001: Fuchsia Request for Comments (RFC) process |
| ||
RFC-0002: Fuchsia platform versioning |
| ||
RFC-0003: Fuchsia logging guidelines |
| ||
RFC-0004: Units of bytes |
| ||
RFC-0006: Addendum of the RFC process for Zircon |
| ||
RFC-0007: Zircon removal of thread killing |
| ||
RFC-0008: Remove zx_clock_get and zx_clock_adjust |
| ||
RFC-0009: Edge triggered async_wait |
| ||
RFC-0010: zx_channel_iovec_t support for zx_channel_write and zx_channel_call |
zx_channel_iovec_t support for zx_channel_write and zx_channel_call |
| |
RFC-0011: zx_object_get_info ZX_INFO_KMEM_STATS_EXTENDED |
| ||
RFC-0012: Zircon Discardable Memory |
| ||
RFC-0013: Cloning a VMO mapping |
| ||
RFC-0014: Relax zx_fifo_create constraints |
| ||
RFC-0015: Compatibility Tests for Fuchsia (CTF) |
| ||
RFC-0016: Boot time page sizes |
| ||
RFC-0017: The FTP Process is dead, long live the RFC Process! |
| ||
RFC-0018: FTP process: A modest proposal |
| ||
RFC-0019: Using evolution = uint64; |
| ||
RFC-0020: Interface ordinal hashing |
| ||
RFC-0021: Soft transitions for methods add and remove |
| ||
RFC-0022: Clarification: Default values for struct members |
| ||
RFC-0023: Compositional model for protocols |
| ||
RFC-0024: Mandatory source compatibility |
| ||
RFC-0025: Bit flags |
| ||
RFC-0027: You only pay for what you use |
| ||
RFC-0028: Handle rights |
| ||
RFC-0029: Increasing method ordinals |
| ||
RFC-0030: FIDL is little endian |
| ||
RFC-0033: Handling of unknown fields and strictness |
| ||
RFC-0037: Transactional message header v3 |
| ||
RFC-0040: Identifier uniqueness |
| ||
RFC-0041: Support for unifying services and devices |
| ||
RFC-0043: Documentation comment format |
| ||
RFC-0047: Tables |
| ||
RFC-0048: Explicit union ordinals |
| ||
RFC-0049: FIDL tuning process evolution |
| ||
RFC-0050: FIDL Syntax Revamp |
| ||
RFC-0052: Type aliasing and new types |
| ||
RFC-0053: Epitaphs |
| ||
RFC-0054: Parameter attributes |
| ||
RFC-0055: Documentation comments |
| ||
RFC-0056: Empty structs |
| ||
RFC-0057: Default no handles |
| ||
RFC-0058: Introduce a deprecated attribute |
| ||
RFC-0059: Reserved bits in vector, string, and array count fields |
| ||
RFC-0060: Error handling |
| ||
RFC-0061: Extensible unions |
| ||
RFC-0066: Programmer advisory explicit defaults |
| ||
RFC-0067: Additions to Fuchsia RFC process |
| ||
RFC-0068: Page Eviction Hints |
| ||
RFC-0069: Standard I/O in ELF Runner |
| ||
RFC-0070: PCI protocol changes to support legacy interrupts |
| ||
RFC-0071: OTA backstop |
| ||
RFC-0072: Standalone Image Assembly Tool |
| ||
RFC-0074: Expose Process Start Time |
| ||
RFC-0075: Deprecate Zedboot-based paving for provisioning devices |
| ||
RFC-0076: FIDL API Summaries |
| ||
RFC-0077: zx_clock_update accuracy improvement |
| ||
RFC-0078: Kernel Sanitizer Coverage for Fuchsia Fuzzing |
| ||
RFC-0079: Detecting debuglog data loss |
| ||
RFC-0080: Detecting VMO Immutability |
| ||
RFC-0081: fastboot boot |
| ||
RFC-0082: Running unmodified Linux programs on Fuchsia |
| ||
RFC-0083: FIDL versioning |
| ||
RFC-0084: Add more metrics to zx_info_task_runtime_t |
| ||
RFC-0085: Reducing the zx_status_t space |
| ||
RFC-0086: Updates to RFC-0050: FIDL Attributes Syntax |
| ||
RFC-0087: Updates to RFC-0050: FIDL Method Parameter Syntax |
| ||
RFC-0089: Core realm variations |
| ||
RFC-0090: Driver shared libraries allowlist |
| ||
RFC-0091: zx_system_get_event ZX_SYSTEM_EVENT_IMMINENT_OUT_OF_MEMORY |
| ||
RFC-0092: Sessions |
| ||
RFC-0093: Design principles of component manifests |
| ||
RFC-0094: Carnelian Virtcon |
| ||
RFC-0095: Build and assemble Workstation out-of-tree |
| ||
RFC-0096: User input architecture |
| ||
RFC-0097: FIDL Toolchain |
| ||
RFC-0098: Component Framework RFC Criteria |
| ||
RFC-0099: Introduce `zx_socket_set_disposition` |
| ||
RFC-0100: Product Metadata |
| ||
RFC-0101: Dynamic components with numbered handles |
| ||
RFC-0102: Forbid CHILD_NO_WRITE with CHILD_RESIZABLE |
| ||
RFC-0103: Software Delivery RFC Criteria |
| ||
RFC-0104: Relative Component URLs |
| ||
RFC-0105: Regular expression libraries |
| ||
RFC-0106: Component manifest includes in the Fuchsia SDK |
| ||
RFC-0107: Dynamic Offers |
| ||
RFC-0108: Component binder protocol |
| ||
RFC-0109: Fast UDP sockets |
| ||
RFC-0110: Reboot for termination of critical components |
| ||
RFC-0111: Initial Fuchsia hardware platform specifications |
| ||
RFC-0112: ACPI support on x86 |
| ||
RFC-0113: Efficient envelopes |
| ||
RFC-0114: Inlining small values in FIDL envelopes |
| ||
RFC-0115: Build Types |
| ||
RFC-0117: Component fuzzing framework |
| ||
RFC-0118: SWD policy at image assembly |
| ||
RFC-0119: System-absolute paths considered harmful |
| ||
RFC-0120: Standalone use of the FIDL wire format |
| ||
RFC-0121: Component lifecycle events |
| ||
RFC-0122: RFC Stakeholders |
| ||
RFC-0123: CPU performance info syscalls |
| ||
RFC-0124: Decentralized Product Integration: Artifact Description and Propagation |
Decentralized Product Integration: Artifact Description and Propagation |
| |
RFC-0125: Shortlinks on Fuchsia.dev |
| ||
RFC-0126: Driver Runtime |
| ||
RFC-0127: Structured Configuration |
| ||
RFC-0128: Introduce `zx_vcpu_kick` |
| ||
RFC-0129: Python Support in Fuchsia |
| ||
RFC-0130: Supported Hardware |
| ||
RFC-0131: Design principles of the FIDL wire format |
| ||
RFC-0132: FIDL table size limit |
| ||
RFC-0133: Software Delivery Goals |
| ||
RFC-0134: Software updates time dependency |
| ||
RFC-0135: Package ABI revisions |
| ||
RFC-0136: Fxfs |
| ||
RFC-0137: Discard unknown data in FIDL |
| ||
RFC-0138: Handling unknown interactions |
| ||
RFC-0139: Bazel SDK |
| ||
RFC-0140: Realm Builder |
| ||
RFC-0141: CTF Process |
| ||
RFC-0142: zx_thread_legacy_yield |
| ||
RFC-0143: Userspace Top-Byte-Ignore |
| ||
RFC-0144: Size Check Tool |
| ||
RFC-0145: Eager package updates |
| ||
RFC-0146: Structured Config Schemas in CML |
| ||
RFC-0147: View System |
| ||
RFC-0148: CI Guidelines |
| ||
RFC-0149: FIDL encode validation not mandatory |
| ||
RFC-0150: Update opt-out |
| ||
RFC-0151: Compiler tuning flags for CPU targeting |
| ||
RFC-0152: Improved OOM handling behavior |
| ||
RFC-0153: Ninja customization for Fuchsia |
| ||
RFC-0154: Subpackages |
| ||
RFC-0155: Optional capability routes |
| ||
RFC-0156: Stream Append Mode |
| ||
RFC-0157: Fxfs encryption and multi-volume support |
| ||
RFC-0158: Structured Config Accessors |
| ||
RFC-0159: Execute Only Memory |
| ||
RFC-0160: Remove support for FIDL struct defaults |
| ||
RFC-0161: Scenic Allocator API |
| ||
RFC-0162: Flatland API |
| ||
RFC-0163: Test Output Format |
| ||
RFC-0164: Test Suite API |
| ||
RFC-0165: SDK categories |
| ||
RFC-0166: One UI Stack |
| ||
RFC-0167: Packages in early userspace bootstrapping |
| ||
RFC-0168: Exposing Inspect through InspectSink |
| ||
RFC-0169: SDK Tool Compatibility |
| ||
RFC-0170: Remove binary images from the update package |
| ||
RFC-0171: Improved diagnostics routing |
| ||
RFC-0172: UI Activity Service |
| ||
RFC-0173: Structured Configuration in Component Framework APIs |
| ||
RFC-0174: Scale in Flatland |
| ||
RFC-0175: ELF Runner stdio forwarding defaults |
| ||
RFC-0176: Disallow New Dart programs in the Fuchsia Source Tree |
| ||
RFC-0177: Focus Observer for Parent Views |
| ||
RFC-0178: Multiple debug exception channels per job |
| ||
RFC-0179: Basic clipboard service |
| ||
RFC-0180: Test UI Stack |
| ||
RFC-0181: Lockless Discardable VMO |
| ||
RFC-0182: Deprecate config-data |
| ||
RFC-0183: SDK Library Documentation |
| ||
RFC-0184: POSIX Compatibility for the System Netstack |
| ||
RFC-0185: Remove `zx_interrupt_bind_vcpu` |
| ||
RFC-0186: Bazel for Fuchsia |
| ||
RFC-0187: Allow first thread in process to start with zx_thread_start |
| ||
RFC-0188: Component ABI Compatibility |
| ||
RFC-0189: Window Management |
| ||
RFC-0190: FIDL Support for Syscalls |
| ||
RFC-0191: Fuchsia-on-GCE as a supported system configuration |
| ||
RFC-0192: Device Trees on Fuchsia |
| ||
RFC-0193: Supported C++ Versions |
| ||
RFC-0194: Addendum: Sessions |
| ||
RFC-0195: Positions and ranges in text APIs |
| ||
RFC-0196: FIDL large messages |
| ||
RFC-0197: Node Groups for composites |
| ||
RFC-0198: Magma API |
| ||
RFC-0199: Protect child VMARs |
| ||
RFC-0200: Support adb protocol and interface for hardware testing |
| ||
RFC-0201: Reclaim guest VM memory |
| ||
RFC-0202: Test manager as a Service |
| ||
RFC-0203: Introduce `zx_system_energy_info` |
| ||
RFC-0204: VMO Reference Child |
| ||
RFC-0205: Vulkan Loader |
| ||
RFC-0206: Deprecate stash |
| ||
RFC-0207: Offline blob compression |
| ||
RFC-0208: Distributing Packages with the SDK |
| ||
RFC-0209: Memory priority profiles |
| ||
RFC-0210: Virtualization Capability Routing |
| ||
RFC-0211: Fuchsia on RISC-V |
| ||
RFC-0212: Package Sets |
| ||
RFC-0213: Removing devfs FIDL multiplexing |
| ||
RFC-0214: Fuchsia churn policy |
| ||
RFC-0215: Structured Configuration Parent Overrides |
| ||
RFC-0216: Fuchsia Hosted Repository Guidelines |
| ||
RFC-0217: Open Package Tracking |
| ||
RFC-0218: IOBuffer: A Peered Shared Memory Object for Efficient IO |
| ||
RFC-0219: Zircon Page Compression |
| ||
RFC-0220: The future of in-tree products |
| ||
RFC-0221: Python for out-of-tree system testing |
| ||
RFC-0222: Introduce Fuchsia Controller |
| ||
RFC-0223: zx_vmo_transfer_data |
| ||
RFC-0224: Userspace J-Extension Pointer Masking |
| ||
RFC-0225: Fxblob: Storing blobs in Fxfs |
| ||
RFC-0226: Zircon Pager Writeback |
| ||
RFC-0227: Fuchsia Release Process |
| ||
RFC-0228: FDomain: Remote control of Fuchsia targets |
| ||
RFC-0229: FIDL 2023 |
| ||
RFC-0230: Suspend-To-Idle in Fuchsia |
| ||
RFC-0231: FIDL versioning replacement syntax |
| ||
RFC-0232: FIDL bindings for multiple API levels |
| ||
RFC-0234: Updating the RISC-V ABI: RVA22 + V |
| ||
RFC-0235: Component dictionaries |
| ||
RFC-0236: VMO Snapshot-Modified Clone |
| ||
RFC-0237: Signalling Clock Updates With ZX_CLOCK_UPDATED |
| ||
RFC-0238: VMO size |
| ||
RFC-0239: Platform Versioning in Practice |
| ||
RFC-0240: Asynchronous operations are on objects |
| ||
RFC-0241: Explicit Platform / External Split in SDK Interfaces |
| ||
RFC-0242: Configuration Capabilities |
| ||
RFC-0243: WLAN Roaming |
| ||
RFC-0244: Raise user-defined Zircon exception |
| ||
RFC-0245: VMO Prefetch |
| ||
RFC-0246: API Levels are 32 bits |
| ||
RFC-0247: Enabling LTO in Fuchsia |
| ||
RFC-0248: Problem Statement |
| ||
RFC-0249: crosvm support in the platform |
| ||
RFC-0250: Power topology |
| ||
RFC-0251: No Root Access |
| ||
RFC-0252: No Physical VMO CacheOps |
| ||
RFC-0253: zx_object_get_info ZX_INFO_VMAR_MAPS |
| ||
RFC-0254: Changing Attribution for Copy-on-Write Pages |
| ||
RFC-0255: System Activity Governor |
| ||
RFC-0256: Python application bundling for Lacewing tests |
| ||
RFC-0257: storage-host: Componentizing upper-layer storage drivers |
| ||
RFC-0258: Update from C++17 to C++20 |
| ||
RFC-0259: Monotonic Clock Suspension and the Boot Timeline |
| ||
RFC-0260: Kernel Boot Time Support |
| ||
RFC-0261: Fast and efficient user space kernel emulation |
| ||
RFC-0262: Expand KMEM_STATS |
| ||
RFC-0263: Migrate driver communication to services |
|
Rejected
RFC | Title | Area | Gerrit change |
---|---|---|---|
RFC-0005: Blobfs snapshots |
| ||
RFC-0026: Envelopes everywhere |
| ||
RFC-0031: Typed Epitaphs |
| ||
RFC-0032: Efficient envelopes |
| ||
RFC-0034: Null terminate strings |
| ||
RFC-0035: Automatic flow tracing |
| ||
RFC-0036: Update to struct declarations |
| ||
RFC-0038: Separating layout from constraints |
| ||
RFC-0039: Types come second |
| ||
RFC-0042: Non nullable types |
| ||
RFC-0044: Extensible method arguments |
| ||
RFC-0045: Zero-size empty structs |
| ||
RFC-0051: Safer structs for C++ |
| ||
RFC-0062: Method impossible |
| ||
RFC-0063: OrdinalRange |
| ||
RFC-0064: Box <Knox> |
| ||
RFC-0065: No optional strings or vectors |
| ||
RFC-0088: Updates to RFC-0050: FIDL Bits, Enum, and Constraints Syntax |
Updates to RFC-0050: FIDL Bits, Enum, and Constraints Syntax |
| |
RFC-0116: Wire format support for sparser FIDL tables |
| ||
RFC-0233: FIDL legacy by default |
|