# Documentation

## Building and Developing

-   Documentation about building from the command line can be found in
    [the build guide](guides/BUILDING.md)
-   Documentation about running [cirque](https://github.com/openweave/cirque)
    tests can be found in
    [the cirque test guide](../src/test_driver/linux-cirque/README.md)
-   Documentation about standard build & development flows using
    [Visual Studio Code](https://code.visualstudio.com/) can be found in
    [the development guide](./VSCODE_DEVELOPMENT.md)

## Platform Guides

-   Various guides are available [here](./guides/README.md) that cover platform
    bring up, testing, and various troubleshooting things.

## Project Flow

-   Documentation about general project usage of GitHub, and project tools is
    documented in [the project flow](./PROJECT_FLOW.md)

## Style Guide

-   Documentation about style is documented in
    [the style guide](./style/style_guide.md)
-   Additional documentation about more specific files are in the
    [style folder](./style/)

## Third Party Tools

Some tools and utilities are dependent on third party tools, such as Docker.

[Docker](https://www.docker.com) is an excellent way to have stable build
environments that don't pollute the host OS. It is also much easier to maintain
stability across multiple host environments. Install stable version of
[Docker Desktop](https://www.docker.com/products/docker-desktop) relevant to
your native OS (macOS or Windows). Once installed, you can run docker commands
from the shell/terminal.
