| # Overview |
| |
| > DEPRECATION WARNING: The Modular framework is being deprecated in favor of |
| > the [Session Framework](/docs/concepts/session/introduction.md). |
| |
| Modular manages user experiences by composing UI, data, and users from a |
| diverse set of components into logical and visual containers called Stories. |
| |
| The framework defines classes of components to extend user experiences and |
| provides software primitives for component composition, communication, task |
| delegation, state management and data sharing. |
| |
| ## Requirements to use Modular |
| |
| Modular supports software written in any language (for example, Flutter and C++) for any |
| Fuchsia supported runtime, as long as it is a Fuchsia Component. |
| |
| The Modular Framework communicates with components it launches via FIDL, the |
| standard IPC mechanism for Fuchsia. |
| |
| ## Extension Points |
| |
| The framework defines several different classes of components which can be |
| implemented by developers to extend the behavior of user experiences: |
| |
| 1. [Modules](module.md) are components which display UI and are visually |
| composed in a Story. |
| 1. [Agents](agent.md) are components which run in the background to provide |
| services and data to Modules and other Agents. |
| |
| ## `basemgr` and `sessionmgr` |
| |
| After Fuchsia device startup, `basemgr` and `sessionmgr` are processes that |
| provide session management, component lifecycle management and state management. |
| |
| * `basemgr` is responsible for user authentication and |
| authorization. It leverages the Base Shell to present UI. |
| |
| * `sessionmgr` is responsible for the lifecycle of Stories, |
| Modules and Agents, as well as service and state coordination between them. |
| It leverages Session and Story Shells to manage the visual composition of |
| these components. |
| |
| ## Read More |
| |
| * [Configuring Modular](guide/config.md) |
| * [How-To: Write a Module in C++](guide/how_to_write_a_module_cc.md) |
| * [How-To: Write an Agent in C++](guide/how_to_write_an_agent_cc.md) |