Google Fuchsia is based on a modular design that breaks the concept of the app. Software units are referred to as packages. A package is a selection of files – including metadata, manifest files, and executable elements. The latter are called components in Google terminology.
Fuchsia components come closest to what we call apps today. Each component performs a specific task and can be combined with other components to enable complex applications. The parts of a component include a manifest file as well as the associated code. Components always run in their own sandbox, access objects via namespaces, and publish them via an export directory. Fuchsia OS focuses on two types of components: modules and agents.
Components in the role of an agent work in the background and provide services for other components. An agent is called either by another component or by the system – for example, in response to certain triggers such as push notifications or other on-screen processes.
Modules are components with a user interface that are executed in the foreground, visible to the user. Each module within the operating system has been designed for a specific task and is marked accordingly so that it can be accessed automatically when needed. This is done using the module’s function, which can be described using so-called verbs and nouns.
Each module includes a list of verbs that indicate what work the module can do, as well as a list of nouns that represent entities that are being worked with. According to Google terminology, the term entity includes any uniquely identifiable person, place, thing, event, or concept that exists as a structured data object that can be referenced and retrieved, presented, manipulated, or shared.
In practice, working with the real-time operating system Fuchsia is therefore as follows: As soon as a user executes an action, Fuchsia OS automatically determines the appropriate module for the task. The desired action is translated into a combination of verbs and nouns. The system then retrieves a list of all modules that support the desired verb and in the next step, filters according to the module that can also handle the desired noun.
Related modules can be grouped into so-called stories. Stories combine different actions and tasks according to current requirements and should enable users to assemble complex applications according to their own ideas and requirements.