tree: ff91e281ca6324a73ae842ae11832255629a63c0 [path history] [tgz]
  1. README.md
  2. _toc.yaml
  3. api/
  4. architecture/
  5. bluetooth/
  6. booting/
  7. build_system/
  8. components/
  9. drivers/
  10. fidl/
  11. filesystems/
  12. framework/
  13. graphics/
  14. kernel/
  15. media/
  16. modular/
  17. networking/
  18. packages/
  19. session/
  20. source_code/
  21. storage/
  22. system/
  23. testing/
  24. tracing/
  25. usb/
docs/concepts/README.md

Overview

Fuchsia is an open-source operating system designed from the ground up for security and updatability.

Fuchsia is…

Fuchsia is designed for security and privacy

Security and privacy are woven deeply into the architecture of Fuchsia. The basic building blocks of Fuchsia, the kernel primitives, are exposed to applications as object-capabilities, which means that applications running on Fuchsia have no ambient authority: applications can interact only with the objects to which they have been granted access explicitly.

Software is delivered in hermetic packages and everything is sandboxed, which means all software that runs on the system, including applications and system components, receives the least privilege it needs to perform its job and gains access only to the information it needs to know.

Fuchsia is designed to be updatable

Fuchsia works by combining components delivered in packages. Fuchsia packages are designed to be updated independently or even delivered ephemerally, which means packages are designed to come and go from the device as needed and the software is always up-to-date, like a Web page.

Fuchsia aims to provide drivers with a binary-stable interface. In the future, drivers compiled for one version of Fuchsia will continue to work in future versions of Fuchsia without needing to be modified or even recompiled. This approach means that Fuchsia devices will be able to update to newer versions of Fuchsia seamlessly while keeping their existing drivers.

Fuchsia is designed to be language and runtime agnostic

Fuchsia currently supports a variety of languages and runtimes, including C++, Rust, Flutter, and Web. Fuchsia is designed to let developers bring their own runtime, which means a developer can use a variety of languages or runtimes without needing to change Fuchsia itself.

Applications interact with each other and the system using message passing, which means any application that can format messages appropriately can participate fully in the system regardless of its language or runtime. Fuchsia is defined by these protocols, much like the Internet is defined by its protocols rather than a particular client or server implementation.

Fuchsia is designed for performance

Fuchsia makes heavy use of asynchronous communication, which reduces latency by letting the sender proceed without waiting for the receiver. Fuchsia optimizes memory use by avoiding garbage collection in the core operating system, which helps to minimize memory requirements to achieve equivalent performance.

Fuchsia is open source

Fuchsia is built in the open using BSD/MIT-style open source licenses. Fuchsia has an inclusive community that welcomes high-quality, well-tested contributions from everyone.

Fuchsia is not…

Fuchsia is not based on Linux

Fuchsia does not use the Linux kernel. Instead, Fuchsia has its own kernel, Zircon, which evolved from LittleKernel. Fuchsia implements some, but not all, of the POSIX specification as a library on top of the underlying kernel primitives, which focus on secure message passing and memory management. Many core system services, such as file systems and networking, run outside the kernel in least-privilege, need-to-know sandboxes.

Fuchsia is not a microkernel

Although Fuchsia applies many of the concepts popularized by microkernels, Fuchsia does not strive for minimality. For example, Fuchsia has over 170 syscalls, which is vastly more than a typical microkernel. Instead of minimality, the system architecture is guided by practical concerns about security, privacy, and performance. As a result, Fuchsia has a pragmatic, message-passing kernel.

Fuchsia is not a user experience

Fuchsia is not tied to a specific end-user experience. Instead, Fuchsia is general purpose and contains the building blocks necessary for creating a wide variety of high-quality user experiences.

Fuchsia does have a developer experience, which lets developers write software for Fuchsia via SDKs and tools.

Fuchsia is not a science experiment

Fuchsia's goal is to power production devices and products used for business-critical applications. As such, Fuchsia is not a playground for experimental operating system concepts. Instead, the platform roadmap is driven by practical use cases arising from partner and product needs.