---
layout: default
title: FAQ
nav: faq
---

What is Bazel?
--------------

Bazel is a tool that automates software builds and tests. Supported build tasks
include running compilers and linkers to produce executable programs and
libraries, and assembling deployable packages for Android, iOS and other target
environments. Bazel is similar to other tools like Make, Ant, Gradle, Buck,
Pants and Maven.

What is special about Bazel?
----------------------------

Bazel was designed to fit the way software is developed at Google. It
has the following features:

*   Multi-language support: Bazel supports Java, Objective-C and C++ out
    of the box, and can be extended to support arbitrary programming
    languages.

*   High-level build language: Projects are described in the BUILD
    language, a concise text format that describes a project as sets of
    small interconnected libraries, binaries and tests. In contrast, with
    tools like Make, you have to describe individual files and compiler
    invocations.

*   Multi-platform support: The same tool and the same BUILD files can
    be used to build software for different architectures, and even
    different platforms.  At Google, we use Bazel to build everything from
    server applications running on systems in our data centers to client apps
    running on mobile phones.

*   Reproducibility: In BUILD files, each library, test and binary must
    specify its direct dependencies completely.  Bazel uses this
    dependency information to know what must be rebuilt when you make
    changes to a source file, and which tasks can run in parallel.  This
    means that all builds are incremental and will always produce the
    same result.

*   Scalable: Bazel can handle large builds; at Google, it is common for
    a server binary to have 100k source files, and builds where no files
    were changed take about ~200ms.


Why doesn't Google use ...?
---------------------------

*   Make, Ninja: These tools give very exact control over what commands
    get invoked to build files, but it's up to the user to write rules
    that are correct.

    Users interact with Bazel on a higher level. For example, Bazel has
    built-in rules for "Java test", "C++ binary", and notions such as
    "target platform" and "host platform". These rules have been battle
    tested to be foolproof.

*   Ant and Maven: Ant and Maven are primarily geared toward Java, while
    Bazel handles multiple languages.  Bazel encourages subdividing
    codebases in smaller reusable units, and can rebuild only ones that
    need rebuilding. This speeds up development when working with larger
    codebases.

*   Gradle: Bazel configuration files are much more structured than
    Gradle's, letting Bazel understand exactly what each action does.
    This allows for more parallelism and better reproducibility.

*   Pants, Buck: Both tools were created and developed by ex-Googlers at
    Twitter and Foursquare, and Facebook respectively. They have been modeled
    after Bazel, but their feature sets are different, so they aren't viable
    alternatives for us.


Where did Bazel come from?
--------------------------

Bazel is a flavor of the tool that Google uses to build its server
software internally. It has expanded to build other software as well,
like mobile apps (iOS, Android) that connect to our servers.

Did you rewrite your internal tool as open-source? Is it a fork?
----------------------------------------------------------------

Bazel shares most of its code with the internal tool and its rules
are used for millions of builds every day.

Why did Google build Bazel?
---------------------------

A long time ago, Google built its software using large, generated
Makefiles. These led to slow and unreliable builds, which began to
interfere with our developers' productivity and the company's
agility. Bazel was a way to solve these problems.

Does Bazel require a build cluster?
-----------------------------------

Google's in-house flavor of Bazel does use [build
clusters](http://google-engtools.blogspot.com/2011/09/build-in-cloud-distributing-build-steps.html),
so Bazel does have hooks in the code base to plug in a remote build
cache or a remote execution system.

The open source Bazel code runs build operations locally. We believe
that this is fast enough for most of our users.

How does the Google development process work?
----------------------------------------------

For our server code base, we use the following development workflow:

*   All our server code is in a single, gigantic version control
    system.

*   Everybody builds their software with Bazel.

*   Different teams own different parts of the source tree, and make
    their components available as BUILD targets.

*   Branching is primarily used for managing releases, so everybody
    develops their software at the head revision.

Bazel is a cornerstone of this philosophy: since Bazel requires all
dependencies to be fully specified, we can predict which programs and
tests are affected by a change, and vet them before submission.

More background on the development process at Google can be found on
the [eng tools blog](http://google-engtools.blogspot.com/).

Why are you opening up Bazel?
-----------------------------

Building software should be fun and easy. Slow and unpredictable
builds take the fun out of programming.

Why would I want to use Bazel?
------------------------------

*   Bazel may give you faster build times because it can recompile only
    the files that need to be recompiled. Similarly, it can skip
    re-running tests that it knows haven't changed.

*   Bazel produces deterministic results. This eliminates skew
    between incremental and clean builds, laptop and CI system, etc.

*   Bazel can build different client and server apps with the same tool
    from the same workspace. For example, you can change a client/server
    protocol in a single commit, and test that the updated mobile app
    works with the updated server, building both with the same tool,
    reaping all the aforementioned benefits of Bazel.

Can I see examples?
-------------------

Yes. For a simple example, see:

  <https://github.com/bazelbuild/bazel/blob/master/examples/cpp/BUILD>

The Bazel source code itself provides a more complex example:

  <https://github.com/bazelbuild/bazel/blob/master/src/BUILD>

What is Bazel best at?
----------------------

Bazel shines at building and testing projects with the following properties:

*   Projects with a large codebase
*   Projects written in (multiple) compiled languages
*   Projects that deploy on multiple platforms
*   Projects that have extensive tests

Where can I run Bazel?
---------------------------------

Currently, Linux and Mac OS X. Porting to other UNIX platforms should be
straightforward, as long as a JDK is available for the platform.

What about Windows?
-------------------

Due to its UNIX heritage, porting Bazel to Windows is significant work. For
example, Bazel uses symlinks extensively, which has varying levels of support
across Windows versions.

We are currently actively working on improving Windows support, but it's still
ways from being usable.

What should I not use Bazel for?
--------------------------------

*   Bazel tries to be smart about caching. This means that it is not good
    for running build operations whose outputs should not be cached. For example,
    the following steps should not be run from Bazel:

    *   A compilation step that fetches data from the internet.
    *   A test step that connects to the QA instance of your site.
    *   A deployment step that changes your site's cloud configuration.

*   Bazel tries to minimize expensive compilation steps. If you are only
    using interpreted languages directly, such as JavaScript or Python,
    Bazel will likely not interest you.

How stable is Bazel's feature set?
----------------------------------

The core features (C++, Java, and shell rules) have extensive use
inside Google, so they are thoroughly tested and have very little
churn.  Similarly, we test new versions of Bazel across hundreds of
thousands of targets every day to find regressions, and we release new
versions multiple times every month.

In short, except for features marked as experimental, Bazel should Just Work.
Changes to non-experimental rules will be backward compatible. A more detailed
list of feature support statuses can be found in our
[support document](support.html).

How stable is Bazel as a binary?
--------------------------------

Inside Google, we make sure that Bazel crashes are very rare. This
should also hold for our open source codebase.

How can I start using Bazel?
----------------------------

See our [getting started document](docs/getting-started.html).

Doesn't Docker solve the reproducibility problems?
--------------------------------------------------

With Docker you can easily create sandboxes with fixed OS releases,
for example, Ubuntu 12.04, Fedora 21. This solves the problem of
reproducibility for the system environment -- that is, "which version of
/usr/bin/c++ do I need?"

Docker does not address reproducibility with regard to changes in the
source code.  Running Make with an imperfectly written Makefile inside a
Docker container can still yield unpredictable results.

Inside Google, we check tools into source control for reproducibility.
In this way, we can vet changes to tools ("upgrade GCC to 4.6.1") with
the same mechanism as changes to base libraries ("fix bounds check in
OpenSSL").

Can I build binaries for deployment on Docker?
----------------------------------------------

With Bazel, you can build standalone, statically linked binaries in
C/C++, and self-contained jar files for Java. These run with few
dependencies on normal UNIX systems, and as such should be simple to
install inside a Docker container.

Bazel has conventions for structuring more complex programs, for example, a
Java program that consumes a set of data files, or runs another
program as subprocess. It is possible to package up such environments
as standalone archives, so they can be deployed on different systems,
including Docker images.

Can I build Docker images with Bazel?
-------------------------------------

Yes, you can use our
[Docker rules](http://bazel.io/docs/be/docker.html)
to build reproducible Docker images.

Will Bazel make my builds reproducible automatically?
-----------------------------------------------------

For Java and C++ binaries, yes, assuming you do not change the
toolchain. If you have build steps that involve custom recipes
(for example, executing binaries through a shell script inside a rule), you
will need to take some extra care:

  *   Do not use dependencies that were not declared. Sandboxed
      execution (--spawn_strategy=sandboxed, only on Linux) can
      help find undeclared dependencies.

  *   Avoid storing timestamps and user-IDs in generated files. ZIP files and
      other archives are especially prone to this.

  *   Avoid connecting to the network. Sandboxed execution can help here
      too.

  *   Avoid processes that use random numbers, in particular, dictionary
      traversal is randomized in many programming languages.

Do you have binary releases?
----------------------------

Yes, you can find the latest release binaries
[here](https://github.com/bazelbuild/bazel/releases/latest). Our release
policy is documented [here](http://bazel.io/support.html).

I use Eclipse/IntelliJ. How does Bazel interoperate with IDEs?
--------------------------------------------------------------

We currently have no IDE integration API as such but the iOS rules generate
Xcode projects based on Bazel BUILD targets (see below).

How does Bazel interact with Xcode?
-----------------------------------

Bazel generates Xcode projects that you can use to work with any inputs and
dependencies for the target, to build apps from Xcode directly and to deploy to
an iOS simulator and devices. Simply open the project file whose path is printed
by Bazel after building any iOS target. There is no support to invoke Bazel from
Xcode (for example to re-generate generated sources such as Objective-C files
based on protos), nor to open Xcode from Bazel directly.

I use Jenkins/CircleCI/TravisCI. How does Bazel interoperate with CI systems?
-----------------------------------------------------------------------------

Bazel returns a non-zero exit code if the build or test invocation
fails, and this should be enough for basic CI integration.  Since
Bazel does not need clean builds for correctness, the CI system should not
be configured to clean before starting a build/test run.

Further details on exit codes are in the [User Manual](docs/bazel-user-manual.html).

What future features can we expect in Bazel?
--------------------------------------------

Our initial goal is to work on Google's internal use-cases. This
includes Google's principal languages (C++, Java, Go) and major
platforms (Linux, Android, iOS).  For practical reasons, not all of
these are currently open-sourced. For more details see our
[roadmap](roadmap.html).

What about Python?
------------------

It is possible to write Python rules as extensions (see below). See
the following files for an example of generating self-contained zip
files for python:

  <https://github.com/bazelbuild/bazel/blob/master/tools/build_rules/py_rules.bzl>\\
  <https://github.com/bazelbuild/bazel/tree/master/examples/py>

We have opened up a subset of our internal Python rules, so they
can be used as helper scripts as part of a build.

Simplistic support for PEX-style binaries is at
[here](https://github.com/bazelbuild/bazel/blob/master/tools/build_rules/py_rules.bzl).


What about Go?
--------------

If your codebase is 100% Go, the `go` tool has excellent support for
building and testing, and Bazel will not bring you much benefit.

The server code written in Go at Google is built with Bazel. However, the rules
that accomplish this are rather complex due to their interactions with our C++
libraries, and are incompatible with the conventions of the `go` tool.  We are
working on improving this situation.

Can I use Bazel for my [INSERT LANGUAGE HERE] project?
------------------------------------------------------

We have an extension mechanism called Skylark that allows you to add new rules
without recompiling Bazel.

For documentation: see [here](/docs/skylark/index.html). We have support for
several languages that use that extension mechanism, see our
[build encyclopedia](/docs/be/overview.html) for the full
list of supported languages.

I need more functionality. Can I add rules that are compiled into Bazel?
------------------------------------------------------------------------

If our extension mechanism is insufficient for your use case, email
the mailing list for advice: <bazel-discuss@googlegroups.com>.

Can I contribute to the Bazel code base?
----------------------------------------

See our [contribution guidelines](contributing.html).

Why isn't all development done in the open?
-------------------------------------------

We still have to refactor the interfaces between the public code in
Bazel and our internal extensions frequently. This makes it hard to do
much development in the open. See our [governance plan](governance.html)
for more details.

How do I contact the team?
--------------------------

We are reachable at <bazel-discuss@googlegroups.com>.

Where do I report bugs?
-----------------------

Send an e-mail to <bazel-discuss@googlegroups.com> or file a bug
[on GitHub](https://github.com/bazelbuild/bazel/issues).



What's up with the word "Blaze" in the codebase?
------------------------------------------------

This is an internal name for the tool. Please refer to Bazel as
Bazel.


Why do other Google projects (Android, Chrome) use other build tools?
---------------------------------------------------------------------

Until now, Bazel was not available externally, so open source projects
such as Chromium, Android, etc. could not use it. In addition, lack of
Windows support is a problem for building Windows applications, such
as Chrome.


How do you pronounce "Bazel"?
-----------------------------

The same way as "basil" (the herb) in US English: "BAY-zel". It rhymes with
"hazel". IPA: /ˈbeɪzˌəl/
