blob: 179f93803c2de3499d7c2941ceb01d08a5cc0683 [file] [log] [blame] [view]
# 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)