Glossary

The purpose of this document is to provide short definitions for a collection of technical terms used in Fuchsia.

To add a glossary definition, see Adding glossary entries.

Terms

Glossary area




  • The binary-level interface to the system.

    Full description

    The Application Binary Interface(ABI) for a system is the binary-level interface to the system. Typically you don't write software that uses the system ABI directly. Instead, you write software against the system API. When the software is compiled, the binary artifact created by the compiler interfaces with the system through the ABI. Changes to the system ABI may require you to recompile your source code to account for the changes in the ABI.


  • Fuchsia uses a bootloader with two partitions A and B, and a recovery slot.

    Full description

    Fuchsia uses a bootloader with two partitions A and B, and a recovery slot. This logic is not required to boot Zircon or run a basic Fuchsia system, but it is required to take full advantage of Fuchsia's over-the-air (OTA) update features.

    The term slot is used to refer to a set of partitions that update together. If an update fails, the partitions fall back together. This works because there are two copies of each partition on disk. By convention, the slots used for normal updates are denoted A and B, and the corresponding partitions are labeled with a suffix of "_a" or "_b". The slot used for recovery is denoted R which is chosen when neither A nor B is bootable.


    Related links
  • The JSON file that the product owner writes in order to specify (1) lists of product-specific packages, components, drivers, and configuration and (2) platform features and configuration. This is the configuration that encapsulates both a Product Config and a Platform Config.


    Related links
  • An Assembly Input Bundle is a self-contained directory of artifacts with a manifest file in the root describing what is included. This bundle is used internally by the Software Assembly tool. Fuchsia is composed of many packages, components, drivers, and configuration data. These elements are grouped together inside Assembly Input Bundles (AIBs) for inclusion together into the assembled product. All AIBs other than the Legacy AIBs are "platform AIBs".


    Related links
  • Language for definition protocols that communicate between drivers.

    Full description

    Banjo is a language for defining protocols that are used to communicate between drivers. It is different from FIDL in that it specifies an ABI for drivers to use to call into each other, rather than an IPC protocol.


  • In v2 components, a component instance binds to component instances that provided capabilities.

    Full description

    In Components v2, a component instance binds to another component instance when it connects to a capability provided by the other component instance. This is the most common reason for a component to start.


  • The boot filesystem that contains the files needed early in the boot process.

    Full description

    The bootfs RAM disk contains the files needed early in the boot process when no other filesystems are available. It is part of the zircon boot image, and is decompressed and served by bootsvc. After the early boot process is complete, the bootfs is mounted at `/boot`.


  • Provides a filesystem service for the bootfs and a loader service.

    Full description

    The second process started in Fuchsia. It provides a filesystem service for the bootfs and a loader service that loads programs from the same bootfs. After starting these services, it loads the third program, which defaults to `component_manager`.


  • The process of getting Fuchsia to run on a new board.

    Full description

    Bringup is the catchall term for all of the engineering work related to getting Fuchsia to run on a new board. A board is a complete computer hardware platform with a CPU, memory, peripherals, and so on. The term "bringup" should not be used for situations where Fuchsia support for the board already exists. For example, flashing a Fuchsia image onto a VIM3 is not bringup. The original engineering work of implementing the drivers and so on so that Fuchsia can run on the VIM3 is bringup.


    Related links
  • A driver for a device that has multiple children.

    Full description

    A driver for a device that has multiple children. For example, hardware interfaces like PCI specify a topology in which a single controller is used to interface with multiple devices connected to it. In that situation, the driver for the controller would be a bus driver.


  • A private directory, that may be cleared by the system at any time, within which a component instance may cache data local to the device.

    Full description

    A private directory, that may be cleared by the system at any time, within which a component instance may cache data local to the device. Similar to a data directory, except that the contents of a cache directory may be cleared by the system at any time, such as when the device is under storage pressure. Canonically mapped to /cache in the component instance’s namespace.


    Related links

  • A value that combines an object reference and a set of rights.

    Full description

    A capability is a value that combines an object reference and a set of rights. When a program has a capability it is conferred the privilege to perform certain actions using that capability. A handle is a common example for a capability.


    Related links
  • A way for one component instance to give capabilities to another component instance.

    Full description

    A way for one component instance to give capabilities to another instance over the component instance tree. Component manifests define how routing takes place, with syntax for service capabilities, directory capabilities, and storage capabilities.


    Related links
  • An IPC primitive provided by Zircon.

    Full description

    A channel is an IPC primitive provided by Zircon. It is a bidirectional, datagram-like transport that can transfer small messages including handles. FIDL protocols typically use channels as their underlying transport.


    Related links
  • A child component instance is a component instance that is owned by another instance, the parent.


    Related links
  • A cloud service for storing and distributing packages. Packages can be arbitrary collections of files, but most often contain prebuilt binaries.

    Full description

    The Fuchsia project uses CIPD to download, publish, and distribute compiled software such as the Fuchsia SDK. Jiri has built-in support for versioning and downloading CIPD packages.


    Related links
  • Components are the common abstraction that defines how all software is described, sandboxed, and executed on a Fuchsia system.

    Full description

    Components are the common abstraction that defines how all software (regardless of source, programming language, or runtime) is described, sandboxed, and executed on a Fuchsia system.


    Related links
  • A node in the component instance tree whose children are dynamically instantiated rather than statically defined in a component manifest.

    Full description

    A node in the component instance tree whose children are dynamically instantiated rather than statically defined in a component manifest.


    Related links
  • The process of tailoring a component instance to the context it's running in.

    Full description

    The process of tailoring a component instance to the context it's running in. This includes defining and delivering the data that a component can use to understand and adapt to the context in which it was launched.


    Related links
  • Data supplied to a component instance that it can use to understand and adapt to the context in which it was launched.

    Full description

    Data supplied to a component instance that it can use to understand and adapt to the context in which it was launched.


    Related links
  • A FIDL table that includes information about a component.

    Full description

    A component declaration is a fidl table (fuchsia.sys2.ComponentDecl) that includes information about a component’s runtime configuration, capabilities it exposes, offers, and uses, and facets.


    Related links
  • An application framework for declaring and managing components, consisting of build tools, APIs, conventions, and system services.


    Related links
  • One of possibly many instances of a particular components at runtime.


    Related links
  • A tree structure that represents the runtime state of parent-child relationships component instances.

    Full description

    Component instance tree is a components v2 concept. A tree structure that represents the runtime state of parent-child relationships between component instances. If instance A launches instance B then in the tree A will be the parent of B. The component instance tree is used to route capabilities such that parents can offer capabilities to their children to use, and children can expose capabilities for their parents to expose to their parents or offer to other children.


    Related links
  • A system service that lets component instances manage their children and capability routing between them, thus implementing the component instancetree.

    Full description

    A system service that lets component instances manage their children and capability routing between them, thus implementing the component instancetree. Component manager is the system service that implements the components v2 runtime.


    Related links
  • A binary file ending in .cm that encodes a component declaration, often distributed as part of a package.

    Full description

    A binary file ending in .cm that encodes a component declaration, often distributed as part of a package. The cmc tool generates a component manifest from a component manifest source file.


    Related links
  • A JSON5 file ending with a .cml extension that describes a component and its capabilities.

    Full description

    In components v2, a component manifest is a file with a .cml extension, that encodes a component declaration.

    It is a JSON file that contains information about a component’s runtime configuration, services and directories it receives in its namespace, and facets.


    Related links
  • Additional component manifest metadata.

    Full description

    Additional metadata that is carried in a component manifest. This is an extension point to the framework.


    Related links
  • A unique, stable identifer for a component instance.

    Full description

    A unique, stable identifer for a component instance. The instance id is the canonical identifier for a component instance. The component runtime uses this to key a component's persistent resources, if it has any. While a component instance's moniker may change, its instance ID remains the same.

    Instance IDs are assigned to component instances using a component ID index.


    Related links
  • Collective term for the component instance tree and the capability routes over that tree.

    Full description

    The component topology describes the set of relationships between component instances in a Fuchsia system. It consists of the parent-child relationships of the component instance tree as well as the capability routes over that tree.


    Related links
  • URL that identifies a component.

    Full description

    URL that identifies a component, most often used when instantiating a component, for example fuchsia-pkg://fuchsia.com/stash#meta/stash_secure.cm.


    Related links
  • The modern component architecture of Fuchsia.

    Full description

    A shorthand for the component architecture in its modern implementation. Includes a runtime as implemented by component_manager, protocols and types as defined in fuchsia.sys2, and build-time tools such as cmc.


  • A hardware driver that supports multiple concurrent operations.

    Full description

    A hardware driver that supports multiple concurrent operations. This may be, for example, through a hardware command queue or multiple device channels. From the perspective of the core driver, the device has multiple pending operations, each of which completes or fails independently. If the driven device can internally parallelize an operation, but can only have one operation outstanding at a time, it may be better implemented with a sequential device driver.


  • Graphical content containing a bitmap that is attached to a Transform in Flatland. Image, Viewport and FilledRect are types of Contents.

    Full description

    Graphical content containing a bitmap that is attached to a Transform in Flatland. Image, Viewport and FilledRect are types of Contents. Each Transform can have, at most, one attached Content. A Content inherits all of the attributes from its attached Transform.


  • A driver that implements the application-facing RPC interface for a class of drivers.

    Full description

    A driver that implements the application-facing RPC interface for a class of drivers (e.g. block drivers, ethernet drivers). It is hardware-agnostic. It communicates with a hardware driver through banjo to service its requests.


  • The artifact containing Fuchsia APIs, Fuchsia tools, binaries, and metadata. Used to access the Fuchsia tools, or the Fuchsia APIs.


  • A private directory within which a component instance may store data local to the device.

    Full description

    A private directory within which a component instance may store data local to the device, canonically mapped to /data in the component instance’s namespace.


  • A Components v2 concept. A capability that permits access to a filesystem directory by adding it to the namespace of the component instance that uses it.

    Full description

    A Components v2concept. A capability that permits access to a filesystem directory by adding it to the namespace of the component instance that uses it. If multiple component instances are offered the same directory capability then they will have access to the same underlying filesystem directory.


    Related links
  • A driver is a dynamic shared library that driver manager can load into a driver-host and that enables, and controls one or more devices.


    Related links
  • A process containing one or more device drivers.

    Full description

    A process containing one or more device drivers. They are created by the Driver Manager, as needed, to provide isolation between drivers for stability and security.


  • The Driver Manager (formerly devmgr or devcoordinator) is responsible for enumerating, loading, and managing the life cycle of device drivers.


  • The corresponding class or data type in a target language (such as C++) used to represent a FIDL type. A domain object usually models an entity in a problem domain space.


  • A container for a set of components.

    Full description

    A container for a set of components, which provides a way to manage their lifecycle and provision services for them. All components in an environment receive access to (a subset of) the environment's services.


  • Graphics library for compositing user interface content.

    Full description

    Graphics library for compositing user interface content. Its design is inspired by modern real-time and physically based rendering techniques though Fuchsia anticipates most of the content it renders to have non-realistic or stylized qualities suitable for user interfaces.


  • The artifact containing experimental Fuchsia APIs.


  • A keyword for a component instance to indicate that it is making a capability available to its parent to route.

    Full description

    A component instance may use the expose manifest keyword to indicate that it is making a capability available to its parent to route. Parents may offer a capability exposed by any of their children to their other children or to their parent, but they cannot use it themselves in order to avoid dependency cycles.


    Related links
  • A file system directory that contains the set of exposed capabilities for a component.

    Full description

    A file system directory provided by component manager that contains the set of capabilities exposed by a component to its parent.


    Related links
  • The Fuchsia Archive Format is a container for files to be used by Zircon and Fuchsia.


    Related links
  • FBL is the Fuchsia Base Library, which is shared between kernel and userspace.


    Related links
  • The Fuchsia driver framework is the documentation, APIs, and ABIs necessary to build Zircon device drivers.

    Full description

    The Fuchsia driver framework is the documentation, APIs, and ABIs necessary to build Zircon device drivers. Device drivers are implemented as ELF shared libraries loaded by Zircon's driver manager.


    Related links
  • The Zircon IO library.

    Full description

    The Zircon IO library. It provides the implementation of posix-style open(), close(), read(), write(), select(), poll(), etc, against the RemoteIO RPC protocol. These APIs are return- not-supported stubs in libc, and linking against libfdio overrides these stubs with functional implementations. Sometimes referred to as "POSIX Lite".


    Related links
  • Fuchsia's primary tool for working with a Fuchsia system and Fuchsia tools. Example use cases include stream logs from a device and start an emulator.


    Related links
  • A solid color rectangle can be attached to a Transform in Flatland.

    Full description

    A solid color rectangle can be attached to a Transform in Flatland. FilledRect is type of a Content.


  • The Fuchsia Interface Definition Language (FIDL) is a language for defining protocols.

    Full description

    The Fuchsia Interface Definition Language (FIDL) is a language for defining protocols that are typically used over channels. FIDL is programming language agnostic and has bindings for many popular languages, including C, C++, Dart, Go, and Rust. This approach lets system components written in a variety of languages interact seamlessly.


    Related links
  • A FIDL protocol that allows sending 2D graphical content to Scenic.

    Full description

    The 2D composition API for Fuchsia graphics clients. Flatland clients can construct their scene graph and send to Scenic to compose into the shared scene graph that is submitted to the display.


  • A functional-reactive user interface framework optimized for Fuchsia and is used by many system components.

    Full description

    A functional-reactive user interface framework optimized for Fuchsia and is used by many system components. Flutter also runs on a variety of other platforms, including Android and iOS. Fuchsia itself does not require you to use any particular language or user interface framework.


    Related links
  • Deprecated, replaced by RFC. An FTP is the way developers can suggest changes to FIDL.

    Full description

    An FTP is the way developers can suggest changes to FIDL. After being written, an FTP goes through a formal review process where it is either accepted or rejected.


    Related links
  • The Fuchsia API Surface is the combination of the Fuchsia system interface and the client libraries included in the Fuchsia IDK.


  • The Fuchsia emulator (FEMU) is the default emulator for Fuchsia.

    Full description

    The Fuchsia emulator (FEMU) is the default emulator for Fuchsia. It allows you to test Fuchsia components and applications without needing a Fuchsia device. FEMU is based on the Android Emulator (AEMU), which is a fork of QEMU.


    Related links
  • A scheme that refers to a repository, a package, or a package resource.

    Full description

    A scheme that refers to a repository, a package, or a package resource. The syntax is fuchsia-pkg://[/][#]]`. For example, for the component echo_client_dart.cm published under the package echo_dart's meta directory, from the fuchsia.com repository, its URL is fuchsia-pkg://fuchsia.com/echo_dart#meta/echo_client_dart.cm.


    Related links
  • An extension for Visual Studio Code (VsCode) supporting common developer workflows for Fuchsia, like environment set up, editing, debugging, and testing.


    Related links
  • Set of deliverables from the Fuchsia Authors that make it easier to develop components against Fuchsia. Some artifacts include: Fuchsia SDK, Fuchsia tools, components, and editor extensions.


  • The Fuchsia SDK is the set of APIs, tools, build system integrations, and language integration artifacts produced by Fuchsia that enable the production of software and products for and with Fuchsia.


  • An integration of the Bazel build system with the Fuchsia SDK. Enables developers to compile, run, and test their software with Bazel. Supports C++ through a bundled Clang toolchain.


  • The binary interface that the Fuchsia operating system presents to software it runs.

    Full description

    The binary interface that the Fuchsia operating system presents to software it runs. For example, the entry points into the vDSO as well as all the FIDL protocols are part of the Fuchsia System Interface.


    Related links
  • Programs designed to help work with Fuchsia. For example, tools to compile FIDL IDL (interactive data language), or tools to get logs from a device.


  • Fuchsia Volume Manager (FVM) is a partition manager providing dynamically allocated groups of blocks known as slices into a virtual block address space.

    Full description

    Fuchsia Volume Manager (FVM) is a partition manager providing dynamically allocated groups of blocks known as slices into a virtual block address space. The FVM partitions provide a block interface enabling filesystems to interact with it in a manner largely consistent with a regular block device.


    Related links
  • GN is a meta-build system that generates build files.

    Full description

    GN is a meta-build system that generates build files so that Fuchsia can be built with Ninja. GN is fast and comes with solid tools to manage and explore dependencies. GN files, named `BUILD.gn`, are located all over the repository.


    Related links
  • A FIDL protocol that organizes and presents graphical views.

    Full description

    A FIDL protocol that organizes and presents graphical views. The presented views can be annotated with element annotations to communicate presentation properties to the GraphicalPresenter. This protocol is used, for example, when a session component written in Rust wants to delegate presentation logic to a child component written in Flutter, or when a session component that manages the lifecycle of elements delegates the presentation of element views to a child component that implements GraphicalPresenter.


    Related links
  • A Handle is how a userspace process refers to a kernel object.

    Full description

    A Handle is how a userspace process refers to a kernel object. They can be passed to other processes over channels.


    Related links
  • A driver that controls a device.

    Full description

    A driver that controls a device. It receives requests from its core driver and translates them into hardware-specific operations. Hardware drivers strive to be as thin as possible. They do not support RPC interfaces, ideally have no local worker threads (though that is not a strict requirement), and some will have interrupt handling threads. They may be further classified into sequential device drivers and concurrent device drivers.


  • A portal for tools to access detailed structural information about component instances at runtime, such as their names, job and process ids, and exposed capabilities.


    Related links
  • A bitmap containing pixels that can be attached to a Transform in Flatland.

    Full description

    A bitmap containing pixels that can be attached to a Transform in Flatland. Image is type of a Content.


  • This configuration file that tells the Software Assembly tooling which images to generate and how to generate them.

    Full description

    The Images Config is an internal contract between the two subsystems of Software Assembly -- Product Assembly and Image Assembly. The structure and contents of this file is subject to rapid iteration, as it is consumed only by the Software Assembly team.


    Related links
  • Relating to or describing an action to be performed inside a Fuchsia checkout.

    Full description

    For instance, checking out the Fuchsia source code is a prerequisite for performing any in-tree development. The `fx build` command is used to operate the in-tree build system.


    Related links

  • A Rust trait in the input pipeline client library.

    Full description

    Represents a connection to a physical input device (e.g. mouse, keyboard) in an input pipeline. An InputDeviceBinding does the following:

    The input pipeline creates and owns InputDeviceBinding`s as new input peripherals are connected to a device.


    Related links

  • Describes the ranges of values a particular input device can generate.

    Full description

    A property of the Rust struct InputReport of type enum InputDeviceDescriptor and a FIDL table. For example, a InputDeviceDescriptor contains the keys available on the keyboard, and a InputDeviceDescriptor::Touch contains the maximum number of touch contacts and the range of x- and y- values each contact can take on.


    Related links
  • Represents an input event from an input device.

    Full description

    A property of the Rust struct InputEvent. InputDeviceEvent`s contain more context than the raw InputReport`s they are parsed from. For example, InputDeviceEvent::Keyboard contains all the pressed keys, as well as the key's phase (pressed, released, etc.).


    Related links

  • An event from an input device containing context (a InputDeviceDescriptor and state (e.g. phase and location of a button press). The input pipeline generates InputEvent`s from hardware signals.

    Full description

    A Rust struct in the input pipeline client library.


    Related links

  • Represents a client of InputEvent in an input pipeline. When an InputHandler receives an InputEvent, it does at least one of the following:

    Full description

    A Rust trait in the input pipeline client library.


    Related links

  • A stateless representation of an event from a physical input device.

    Full description

    A FIDL struct. Zircon generates InputReport`s from HID Reports.


    Related links
  • Jiri is a tool for multi-repo development.

    Full description

    It is used to checkout the Fuchsia codebase. It supports various subcommands, which makes it easy for developers to manage their local checkouts.


    Related links
  • A kernel object that groups a set of related processes, their child processes, and their jobs (if any).

    Full description

    Every process in the system belongs to a job and all jobs form a single rooted tree.


    Related links
  • The root of the job tree and the first job in the system.

    Full description

    The root job is created by the kernel to allow userboot to begin execution.


    Related links
  • A kernel object is a kernel data structure that is used to regulate access to system resources such as memory, I/O, processor time and access to other processes.

    Full description

    Userspace can only reference kernel objects through handles.


    Related links
  • A Kernel Object Identifier.


    Related links
  • The "Legacy AIB" is an AIB that includes both platform and product artifacts that are specified via the GN build arguments such as base_product_labels and bootfs_labels.

    Full description

    The Legacy Assembly Input Bundle (LAIB) is an AIB that includes both platform and product artifacts that are specified via the GN build arguments such as base_product_labels and bootfs_labels. Eventually, all the contents of the Legacy AIB will be migrated to platform AIBs or the Assembly Config, and it will be deleted entirely. As of November 2022 (last time this definition was updated), Software Assembly is not feature-complete, and products have not been fully migrated over to using Software Assembly. Many of the current platform features and product code lack the support in Assembly to define them inside the Assembly Config, therefore we invented a temporary solution.


    Related links
  • Little Kernel (LK) is the embedded kernel that formed the core of the Zircon Kernel.

    Full description

    LK is more microcontroller-centric and lacks support for MMUs, userspace, system calls -- features that Zircon added.


    Related links
  • A role a component can play to contribute UI to a user experience container (story) within a Modular session.

    Full description

    A Modular concept that is being deprecated. Any component that exports a Scenic ViewProvider can be be used as a module.


    Related links
  • Identifies a specific component instance in the component tree using a topological path.

    Full description

    A component's moniker is defined as a path to the component instance in the component instance tree.


    Related links
  • Fuchsia's standard C library (libc) is based on Musl Libc.


    Related links
  • A namespace is the composite hierarchy of files, directories, sockets, services, and other named objects offered to components by their environment.


    Related links
  • An implementation of TCP, UDP, IP, and related networking protocols for Fuchsia.


  • The build system executing Fuchsia builds.

    Full description

    It is a small build system with a strong emphasis on speed. Unlike other systems, Ninja files are not supposed to be manually written but should be generated by other systems, such as GN in Fuchsia.


    Related links
  • A keyword for a component instance to route a capability that was exposed to it.

    Full description

    A component instance may use the offer manifest keyword to route a capability that was exposed to it to one of its children (other than the child that exposed it).


    Related links
  • Relating to or describing an action that can be done outside of a Fuchsia checkout.

    Full description

    For instance, the IDK allows developing for Fuchsia outside the Fuchsia tree. The SDK tools are available as prebuilts so developers don't need to check out Fuchsia code and build the same tools from source code using Fuchsia's in-tree build system.


    Related links

  • A file system directory where a component serves protocol handles to capabilities it has exposed.

    Full description

    A file system directory where a component serves protocol handles to capabilities it has exposed. Other components connect to these exposed capabilities using the handles in this directory.


    Related links
  • Over-the-air update.

    Full description

    Over-the-air updates are changes made to device software (generally the full system, but possibly smaller modules as well) without re-initializing the device's disk via a pave or flash.


    Related links
  • A unit of software distribution in Fuchsia.

    Full description

    A unit of software distribution in Fuchsia. It is a collection of files, such as manifests, metadata, zero or more executables (e.g. components), and assets. Individual Fuchsia packages can be identified using fuchsia-pkg URL.


  • Also known as the Fully-Qualified Package URL, a url with the "fuchsia-pkg" scheme (fuchsia-pkg:///) representing a fully qualified location for a fuchsia package. For example: fuchsia-pkg://fuchsia.com/package_name
    Related links
  • A package URL with a URL parameter "hash" with value that is the merkle hash of the package's meta.far (fuchsia-pkg:///?hash=). Pinning a package is the act of uniquely identifying a version of a package, through the hash URL parameter. For example: fuchsia-pkg://fuchsia.com/package_name?hash=716178364a3a0fc8be2850f88a7414f95ed895489bc0f74bc2d60d78d3682c65
    Related links
  • A parent component instance is a component instance that owns other instances called child component instances


    Related links
  • A tool in Zircon that installs partition images to internal storage of a device.


    Related links
  • A process KOID. A KOID that uniquely identifies a process object.


    Related links
  • The open source code hosted on fuchsia.googlesource.com, which comprises the source code for Fuchsia.

    Full description

    A given Fuchsia system can include additional software from outside the platform source tree by adding the appropriate Fuchsia package.


  • A specification for an assembled system.

    Full description

    For instance, the Fuchsia platform defines products such as `bringup` and `core` in terms of build-time configuration values and a set of packages to assemble into a system image.


    Related links
  • The set of artifacts representing a Fuchsia product which are needed to emulate, flash, boot, or update the product on a Fuchsia target.

    Full description

    A Product Bundle contains all the images required for an A/B/R Fuchsia target. Artifacts include, but are not limited to, the product image and packages associated with it.


    Related links
  • Whoever defines a product, and is responsible for its provenance and releases.


    Related links
  • A kernel object that represents an instance of a program as a set of instructions that are executed by one or more threads together with a collection of capabilities.

    Full description

    Every process is contained in a job.


    Related links
  • In FIDL, a protocol groups methods and events to describe how one process interacts with another.

    Full description

    In components v2, a protocol is used and routed to other components as a protocol capability.


    Related links
  • A capability that permits communicating with a protocol over a channel using a specified FIDL protocol.

    Full description

    The server end of the channel is held by the component instance that provides the capability. The client end of the channel is given to the component instance that uses the capability.


    Related links
  • In Components v2, a realm is a subtree of component instances in the component instance tree. It acts as a container for component instances and capabilities in the subtree.


    Related links
  • A roller is an infrastructure job that watches for updates to a repository's pinned dependencies and automatically creates and submits a commit that updates the pinned version (a "roll") when it detects that a new version of a dependency is available.

    Full description

    The Fuchsia project uses rollers to update pinned versions of repositories and CIPD packages. Rollers can be configured to trigger automatically on new commits to a repository, run as a cron job that periodically polls for changes, or only be triggered manually.


  • A component that provides a runtime environment for other components, e.g. the ELF runner, the Dart AOT runner, the Chromium web runner.

    Full description

    Every component needs a runner in order to launch. Components express their dependency on a runner in the component's declaration. When the component framework starts a component, it first determines the capabilities that the component should receive, then asks the component's runner to launch the component. The runner is responsible for creating any necessary processes, loading executable code, initializing language runtimes, handing control to the component's entry points, and terminating thecomponent when requested by the component framework.


    Related links
  • Scenic is Fuchsia's system compositor, which composes graphical objects from multiple components into a shared scene graph.

    Full description

    Scenic includes views, input, compositor, and GPU services.


    Related links
  • A hardware driver that will only service a single request at a time. The core driver synchronizes and serializes all requests.


  • In FIDL, a service groups protocols to describe how one process interacts with another.

    Full description

    A service is used and routed to other components as a service capability.


    Related links
  • A capability that permits communicating with a service over a channel using a specified FIDL service.

    Full description

    The server end of the channel is held by the component instance that provides the capability. The client end of the channel is given to the component instance that uses the capability.


    Related links
  • A session component is a component that encapsulates a product's user experience and runs as a child of the platform `session_manager` component.

    Full description

    A "session component" is a component. Each Fuchsia product encapsulates its user experience within a session component (and its descendent components). The term "user experience" is used broadly: it encompasses traditional graphical experiences with touch/mouse/keyboard interaction, as well as simpler experiences with a single RGB LED and several hardware buttons, or those with only network I/O. Simple products may specify a session component with no children, while complex products have many children of the session component. For example, the workstation session instantiates components to display the system user interface, a command line shell, and a web browser as descendents of its session component.


    Related links
  • A FIDL protocol, exposed by the session manager, used to start or restart sessions.

    Full description

    It is available to developer tools such as session_control to control session components at runtime.


    Related links
  • The platform component that manages the lifecycle of the session component.

    Full description

    The session manager defines the set of system capabilities provided to sessions at runtime.


    Related links

  • The process of gathering compiled artifacts, configuration metadata, and other information required to create a complete Product Bundle.

    Full description

    The Software Assembly process is carried out by an ffx plugin which gathers various targets declared in the Assembly Config, Legacy AIB, and Platform AIBs. The result of Software Assembly is a Product Bundle.


    Related links
  • A runner that allows for running unmodified Linux binaries on Fuchsia.

    Full description

    A runner that allows for running unmodified Linux binaries on Fuchsia. Linux binaries are not run inside a virtual machine. Instead, starnix creates a compatible runtime environment by implementing the Linux UAPI.


    Related links
  • A storage capability is a capability that allocates per-component isolated storage for a designated purpose within a filesystem directory.

    Full description

    Multiple component instances may be given the same storage capability, but underlying directories that are isolated from each other will be allocated for each individual use. This is different from directory capabilities, where a specific filesystem directory is routed to a specific component instance. Isolation is achieved because Fuchsia does not support dotdot. There are three types of storage capabilities:

    Storage capability is a components v2 concept.


    Related links
  • A sub-realm is the realm corresponding to a child component instance.


    Related links
  • A kernel object that represents a time-shared CPU execution context. Each thread is contained in process.


    Related links
  • A hierarchical piece of a Flatland graph.

    Full description

    A hierarchical piece of a Flatland graph. Transform is the fundamental object used to organize a Flatland graph. Transforms can have children Transforms and can attach a Content.


  • Tools used by developers to compile sources into binaries. Fuchsia supports Clang for C/C++.


  • A keyword for a component instance to consume a capability that was offered to it.

    Full description

    A component instance may use the use manifest keyword to to consume a capability that was offered to it by its parent.


    Related links
  • The first process started by the Zircon kernel.

    Full description

    It is loaded from the kernel image in the same way as the vDSO, instead of being loaded from a filesystem. Its primary purpose is to load the second process, bootsvc, from the bootfs.


    Related links
  • A region of the Scenic scene graph and the reference frame of a Scenic client.

    Full description

    The region a Scenic client can draw in, and the coordinate system input events are delivered in. Views can be referred to cross-process by their associated ViewRef.


    Related links
  • The parent endpoint of two connected Flatland instances.

    Full description

    The parent endpoint of two connected Flatland instances. View is the child endpoint. Viewport is type of a Content.


  • Uniquely identifies the parent connection point of a connection between two Flatland instances.

    Full description

    Uniquely identifies the parent connection point of a connection between two Flatland instances. There is only one ViewCreationToken associated with a ViewportCreationToken.


  • Represents a handle to a remote View that was launched by calling PresentView() on a GraphicalPresenter.

    Full description

    A FIDL protocol. With this handle, the caller (often, the session) can control the View's lifecycle. Closing the ViewController should close the presented view, and allow the system to reclaim its resources.


    Related links
  • Uniquely identifies the child connection point of a connection between two Flatland instances.

    Full description

    Uniquely identifies the child connection point of a connection between two Flatland instances. There is only one ViewportCreationToken associated with a ViewCreationToken.


  • Uniquely identifies an attachment point for a view in the global scene graph.

    Full description

    A FIDL struct. Each ViewHolderToken has exactly one corresponding ViewToken.


    Related links
  • A handle to a kernel object that identifies a unique View across the system.

    Full description

    A FIDL struct. Two ViewRef`s to the same view have the same KOID. During cross-process communications Scenic clients are referred to by ViewRef. This is common for Input, Accessibility and Focus.


    Related links
  • A description of a view to be presented by a GraphicalPresenter.

    Full description

    A FIDL table.


    Related links
  • Uniquely identifies a View, which is the root point for a subgraph in the global scene graph.

    Full description

    A FIDL struct. Each ViewToken has exactly one corresponding ViewHolderToken.


    Related links
  • The Virtual Dynamic Shared Object (vDSO) is a Virtual Shared Library.

    Full description

    It is provided by the Zircon kernel and does not appear in the filesystem or a package. It provides the Zircon System Call API and ABI to userspace processes in the form of an ELF library that's always there. In the Fuchsia IDK and Fuchsia driver framework it exists as libzircon.so for the purpose of having something to pass to the linker representing the vDSO.


  • A Virtual Memory Address Range (VMAR) is a Zircon kernel object that controls where and how virtual memory objects may be mapped into the address space of a process.


    Related links
  • A Virtual Memory Object (VMO) is a Zircon kernel object that represents a collection of pages (or the potential for pages) that may be read, written, mapped into the address space of a process, or shared with another process by passing a handle over a channel.


    Related links
  • A Zircon Boot Image (ZBI) contains everything needed during the boot process before any drivers are working.

    Full description

    This includes the kernel image and a RAM disk for the boot filesystem.


    Related links
  • A recovery image that is used to install and boot a full Fuchsia system.

    Full description

    Zedboot is actually an instance of the Zircon kernel with a minimal set of drivers and services running used to bootstrap a complete Fuchsia system on a target device. Upon startup, Zedboot listens on the network for instructions from a bootserver that may instruct Zedboot to install a new OS. Upon completing the installation Zedboot will reboot into the newly installed system.


  • Zircon is the kernel and lowest level userspace components (driver runtime environment, core drivers, libc, etc) at the core of Fuchsia.

    Full description

    In a traditional monolithic kernel, many of the userspace components of Zircon would be part of the kernel itself.


    Related links
  • An abbreviation of Zircon used in Zircon C APIs and ABIs zx_channel_create(), zx_handle_t, ZX_EVENT_SIGNALED, etc) and libraries (libzx in particular).


  • The native low-level system debugger.


    Related links