blob: 148831d80cdf597fa8727ef2d99056b5ed6fa431 [file] [log] [blame] [view]
# Updatable
Fuchsia distributes software in packages,
which are hermetically sealed bundles of components, related files, and dependencies.
Fuchsia packages are designed to be updated independently or even delivered ephemerally,
which means they can 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.
## Almost all software on Fuchsia is a component
**[The component framework](/docs/concepts/components/v2/introduction.md)
makes it easier to update the system as new software is created**
The kernel has a minimal set of responsibilities,
nearly everything else is in a user space component.
Components are identified by URLs and
can be resolved, downloaded, and executed on demand like the web.
They are governed by the same mechanisms and they all work together.
Hermetic packaging of components leads to more portable software.
## Software is interchangeable and reusable
**[Fuchsia Interface Definition Language (FIDL)](/docs/concepts/fidl/overview.md)
enables loose coupling between components**
Components exchange capabilities as defined by FIDL protocols.
Software is composed at runtime through protocols
rather than through static composition of libraries.
Fuchsia has no system libraries.
Even the C standard library [(libc)](/docs/concepts/kernel/libc.md)
is expressed as a dependency,
delivered only when software needs it.
Components can be swapped with another implementation
as long they express the same FIDL protocol.
## Push updates and security patches to all products on demand
**[Fuchsia packages](/docs/concepts/packages/package.md)
are the units of software distribution**
All software is delivered in packages that
can be updated independently and delivered on demand, like the web.
This enables a vulnerability patch to be pushed to all Fuchsia products at once
without the need for individual product coordination.
## On the roadmap
This section covers features on
[Fuchsia's roadmap](/docs/contribute/roadmap/index.md).
### Update the system without modifying the driver
**[Drivers](/docs/development/drivers/concepts/getting_started.md)
and system services are designed as user space components that
can be updated independently of the core OS**
We are designing the system so that Fuchsia products can receive system updates
without having to modify or recompile drivers.
Drivers, system services, and end-user applications would be updated
independently through the same mechanism, reducing the maintenance burden.
Device owners could receive Fuchsia updates without having to update
their drivers.