<a id="exp-index"></a>

# Explanation

These explanatory articles cover the main building blocks of **Workshop**.
To start using **Workshop** and **SDKcraft**,
it is important to understand how these concepts fit together.

<a id="exp-arch"></a>

## Architecture

**Workshop**’s architecture combines a set of system components
with well-defined runtime behavior
to provide container-isolated development environments.

* [Architecture](https://ubuntu.com/workshop/docs//explanation/architecture/index.md)
  * [System components](https://ubuntu.com/workshop/docs//explanation/architecture/components.md)
  * [Runtime behavior](https://ubuntu.com/workshop/docs//explanation/architecture/runtime-behavior.md)

<a id="exp-workshop"></a>

## Workshops and projects

<!-- @artefact project -->
<!-- @artefact workshop (container) -->
<!-- @artefact workshop definition -->

Workshops are development environments, each running in a container,
mapping your project to its contained dependencies.
In turn, a project is a working directory
where multiple workshop definitions can be placed.

* [Workshops](https://ubuntu.com/workshop/docs//explanation/workshops/index.md)
  * [Workshop concepts](https://ubuntu.com/workshop/docs//explanation/workshops/concepts.md)
  * [Projects](https://ubuntu.com/workshop/docs//explanation/workshops/projects.md)
  * [Multi-workshop patterns](https://ubuntu.com/workshop/docs//explanation/workshops/multi-workshop-patterns.md)
  * [Changes, tasks](https://ubuntu.com/workshop/docs//explanation/workshops/changes-tasks.md)
  * [workshop (CLI)](https://ubuntu.com/workshop/docs//explanation/workshops/workshop-cli.md)

<a id="exp-sdks"></a>

## SDKs

<!-- @artefact SDK -->

SDKs are packages of software dependencies that can be installed in workshops
to create tailored development environments.

* [SDKs](https://ubuntu.com/workshop/docs//explanation/sdks/index.md)
  * [SDK concepts](https://ubuntu.com/workshop/docs//explanation/sdks/concepts.md)
  * [Parts](https://ubuntu.com/workshop/docs//explanation/sdks/parts.md)
  * [Design best practices](https://ubuntu.com/workshop/docs//explanation/sdks/best-practices.md)
  * [SDKs versus Dockerfiles](https://ubuntu.com/workshop/docs//explanation/sdks/sdk-vs-dockerfile.md)
  * [sdk (CLI)](https://ubuntu.com/workshop/docs//explanation/sdks/sdk-cli.md)
  * [sdkcraft (CLI)](https://ubuntu.com/workshop/docs//explanation/sdks/sdkcraft-cli.md)
  * [workshopctl (CLI)](https://ubuntu.com/workshop/docs//explanation/sdks/workshopctl-cli.md)

<a id="exp-interfaces"></a>

## Interfaces

Interfaces allow communication and resource sharing
between a workshop and the host system,
as well as between the different SDKs that are part of a workshop.

* [Interfaces](https://ubuntu.com/workshop/docs//explanation/interfaces/index.md)
  * [Interface concepts](https://ubuntu.com/workshop/docs//explanation/interfaces/concepts.md)
  * [Camera interface](https://ubuntu.com/workshop/docs//explanation/interfaces/camera-interface.md)
  * [Custom device interface](https://ubuntu.com/workshop/docs//explanation/interfaces/custom-device-interface.md)
  * [Desktop interface](https://ubuntu.com/workshop/docs//explanation/interfaces/desktop-interface.md)
  * [GPU interface](https://ubuntu.com/workshop/docs//explanation/interfaces/gpu-interface.md)
  * [Mount interface](https://ubuntu.com/workshop/docs//explanation/interfaces/mount-interface.md)
  * [SSH interface](https://ubuntu.com/workshop/docs//explanation/interfaces/ssh-interface.md)
  * [Tunnel interface](https://ubuntu.com/workshop/docs//explanation/interfaces/tunnel-interface.md)

## Security considerations

This overview discusses the security aspects of **Workshop** and **SDKcraft**,
such as isolation, privileges, relevant risks, and interface mechanics.
See [Security policy](https://ubuntu.com/workshop/docs//security.md).
