Provide feedback
As you use Bazel, you may find things that can be improved. You can help by reporting issues when:- Bazel crashes or you encounter a bug that can only be resolved using
bazel clean. - The documentation is incomplete or unclear. You can also report issues from the page you are viewing by using the “Create issue” link at the top right corner of the page.
- An error message could be improved.
Participate in the community
You can engage with the Bazel community by:- Answering questions on Stack Overflow.
- Helping other users on Slack.
- Improving documentation or contributing examples.
- Sharing your experience or your tips, for example, on a blog or social media.
Contribute code
Bazel is a large project and making a change to the Bazel source code can be difficult. You can contribute to the Bazel ecosystem by:- Helping rules maintainers by contributing pull requests.
- Creating new rules and open-sourcing them.
- Contributing to Bazel-related tools, for example, migration tools.
- Improving Bazel integration with other IDEs and tools.
Bazel’s code description
Bazel has a large codebase with code in multiple locations. See the codebase guide for more details. Bazel is organized as follows:- Client code is in
src/main/cppand provides the command-line interface. - Protocol buffers are in
src/main/protobuf. - Server code is in
src/main/javaandsrc/test/java.- Core code which is mostly composed of SkyFrame and some utilities.
- Built-in rules are in
com.google.devtools.build.lib.rulesand incom.google.devtools.build.lib.bazel.rules. You might want to read about the Challenges of Writing Rules first.
- Java native interfaces are in
src/main/native. - Various tooling for language support are described in the list in the compiling Bazel section.