blob: c0a08a257bbcd156dd9873f5d73e86f860e365a4 [file] [log] [blame] [view]
# 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.