# Distribution

## What is distribution?

Distribution is the mechanism in Nuvolos for sharing the content of your work with others. You can distribute:

* **Files**, sets of files, or entire directories
* **Database tables** or sets of tables
* **Applications** with all their configurations and dependencies
* **Entire snapshots** containing the full state of your work

Recipients can be members of your own project team, students in your course, or external colleagues and referees.

Because applications and data in Nuvolos are containerised (as explained in the sections on [applications](https://docs.nuvolos.com/features/nuvolos-basic-concepts/applications) and [snapshots](https://docs.nuvolos.com/features/snapshots)), it is possible to share them individually or wholesale. Instead of sending files around via email, you can use the distribution feature in the Nuvolos UI to select what you want to share, and Nuvolos handles the rest.

## How does distribution work?

Distribution is a **push** operation: you select the items you want to share and push them to a target location. This is done using the *Stage* — a temporary area for collecting objects to be distributed. During the process, you choose how to deal with conflicts (such as overwriting or copying), similar to a file system manager.

{% hint style="info" %}
For step-by-step instructions on distributing objects, see [Object Distribution](https://docs.nuvolos.com/features/object-distribution).
{% endhint %}

## Distribution use cases

Distribution is an important building block for efficient workflows in Nuvolos.

### Restoring from a snapshot

You can partially restore from a snapshot by distributing selected files back to your current state. This enables experimentation: if something doesn't work out, you can restore from a previous snapshot and try again.

### Distributing teaching material to students

You can deliver teaching material to every student in a course at the same time. The distribution feature automatically sends coursework to all students. You can also distribute applications as working environments alongside the material, minimising setup overhead and ensuring all students start from the same configuration.

### Assignments

[Assignments](https://docs.nuvolos.com/user-guides/education-guides/setting-assignments) are a special type of distribution that also:

* Adds a deadline for a student response (*hand-in*).
* Creates dedicated storage for responses and instructor feedback.
* Creates an audit trail of all actions taken in response to the distribution.

### Involving others in your research

You can quickly onboard a new colleague or student by setting up a working environment and distributing relevant materials (such as an application configuration and code) to it. This saves time and avoids compatibility issues during transfer.

Distribution also enables sharing work results with colleagues outside your project. You can share code and application configurations (with their dependencies) directly with referees or colleagues, supporting scientific reproducibility.
