| # 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. |