# Modules

> DEPRECATION WARNING: The Modular framework is being deprecated in favor of
> the [Session Framework](/docs/concepts/session/introduction.md).

A `Module` is a component which displays UI in a Modular session. Modules are
added to a story (a container for Modules). Multiple modules can be added to a
single story.

## Environment

A module is given access to two services provided by the modular framework in
its incoming namespace:

*   `fuchsia.modular.ComponentContext` which gives the agent access to
    functionality which is shared across components run under the modular
    framework (e.g. modules, shells, agents).
*   `fuchsia.modular.ModuleContext` which gives modules access to module
    specific functionality.

A module is expected to provide three services to the modular framework in its
outgoing namespace:

*   `fuchsia.ui.app.ViewProvider` which is used to display the module's UI.
*   `fuchsia.modular.Lifecycle` which allows the framework to signal the module
    to terminate gracefully.

## Lifecycle

A module's lifecycle is bound to the lifecycle of the story it is part of. In
addition, a given module can have multiple running instances in a single story.

## Communication Mechanisms

Modules can acquire services from agents by connecting to those services
from the module's incoming directory.
