# Bazel

*{Fast, Correct} - Choose two*

Bazel is a build tool that builds code quickly and reliably.
It executes as few build steps as possible by tracking dependencies and outputs,
controls the build environment to keep builds hermetic, and uses its
knowledge of dependencies to parallelize builds.

* Find more background in our [FAQ](docs/FAQ.md)

* Start using Bazel:

  * How to [install Bazel](docs/install.md)
  * How to [get started using Bazel](docs/getting-started.md)
  * The rule reference documentation is in the [build encyclopedia](docs/build-encyclopedia.html).
  * How to [use the query command](docs/bazel-query.html)
  * How to [extend Bazel](docs/skylark/index.md)
  * TODO(bazel-team): link to the user-manual
  * TODO(bazel-team): link to the test encyclopedia?

* About the Bazel project:

  * How to [contribute to Bazel](docs/contributing.md)
  * Our [governance plan](docs/governance.md)
  * Future plans are in the [roadmap](docs/roadmap.md)
  * For each feature, which level of [support](docs/support.md) to expect.
