blob: 7fc4d9a1dd71fd5296b92ba9dbc2b137aa55129e [file] [log] [blame] [view] [edit]
Project: /_project.yaml
Book: /_book.yaml
# Recommended Rules
{% include "_buttons.html" %}
In the documentation, we provide a list of
[recommended rules](/rules).
This is a set of high quality rules, which will provide a good experience to our
users. We make a distinction between the supported rules, and the hundreds of
rules you can find on the Internet.
## Nomination {:#nomination}
If a ruleset meets the requirements below, a rule maintainer can nominate it
to be part of the _recommended rules_ by filing a
[GitHub issue](https://github.com/bazelbuild/bazel/){: .external}.
After a review by the [Bazel core team](/contribute/policy), it
will be recommended on the Bazel website.
## Requirements for the rule maintainers {:#requirements-rule-maintainers}
* The ruleset provides an important feature, useful to a large number of Bazel
users (for example, support for a widely popular language).
* The ruleset is well maintained. There must be at least two active maintainers.
* The ruleset is well documented, with examples, and easy to use.
* The ruleset follows the best practices and is performant (see
[the performance guide](/rules/performance)).
* The ruleset has sufficient test coverage.
* The ruleset is tested on
[BuildKite](https://github.com/bazelbuild/continuous-integration/blob/master/buildkite/README.md){: .external}
with the latest version of Bazel. Tests should always pass (when used as a
presubmit check).
* The ruleset is also tested with the upcoming incompatible changes. Breakages
should be fixed within two weeks. Migration issues should be reported to the
Bazel team quickly.
## Requirements for Bazel developers {:#requirements-dev}
* Recommended rules are frequently tested with Bazel at head (at least once a
day).
* No change in Bazel may break a recommended rule (with the default set of
flags). If it happens, the change should be fixed or rolled back.
## Demotion {:#demotion}
If there is a concern that a particular ruleset is no longer meeting the
requirements, a [GitHub issue](https://github.com/bazelbuild/bazel/){: .external} should be
filed.
Rule maintainers will be contacted and need to respond in 2 weeks. Based on the
outcome, Bazel core team might make a decision to demote the rule set.