blob: 87285408048c0cd0b5300383b28c65ac61623577 [file] [log] [blame] [view]
# Support Policy
The Bazel community maintains this repository. Neither Google nor the Bazel team
provides support for the code. However, this repository is part of the test
suite used to vet new Bazel releases. See the <project:#contributing>
page for information on our development workflow.
## Supported rules_python Versions
In general, only the latest version is supported. Backporting changes is
done on a best-effort basis based on severity, risk of regressions, and
the willingness of volunteers.
If you want or need particular functionality backported, then the best way
is to open a PR to demonstrate the feasibility of the backport.
### Backports and Patch Releases
Backports and patch releases are provided on a best-effort basis. Only fixes are
backported. Features are not backported.
Backports can be done to older releases, but only if newer releases also have
the fix backported. For example, if the current release is 1.5, in order to
patch 1.4, version 1.5 must be patched first.
Backports can be requested by [creating an issue with the patch release
template][patch-release-issue] or by sending a pull request performing the backport.
See the dev guide for [how to create a backport PR][backport-pr].
[patch-release-issue]: https://github.com/bazelbuild/rules_python/issues/new?template=patch_release_request.md
[backport-pr]: devguide.html#creating-backport-prs
## Supported Bazel Versions
The supported Bazel versions are:
1. The latest rolling release
2. The active major release.
3. The major release prior to the active release.
For (2) and (3) above, only the latest minor/patch version of the major release
is officially supported. Earlier minor/patch versions are supported on a
best-effort basis only. We increase the minimum minor/patch version as necessary
to fix bugs or introduce functionality relying on features introduced in later
minor/patch versions.
See [Bazel's release support matrix](https://bazel.build/release#support-matrix)
for what versions are the rolling, active, and prior releases.
## Supported Python versions
As a general rule, we test all released non-EOL Python versions. Different
interpreter versions may work but are not guaranteed. We are interested in
staying compatible with upcoming unreleased versions, so if you see that things
stop working, please create tickets or, more preferably, pull requests.
## Supported Platforms
We only support the platforms that our continuous integration jobs run on, which
are Linux, Mac, and Windows.
In order to better describe different support levels, the following acts as a rough
guideline for different platform tiers:
* Tier 0 - The platforms that our CI runs on: `linux_x86_64`, `osx_x86_64`, `RBE linux_x86_64`.
* Tier 1 - The platforms that are similar enough to what the CI runs on: `linux_aarch64`, `osx_arm64`.
What is more, `windows_x86_64` is in this list, as we run tests in CI, but
developing for Windows is more challenging, and features may come later to
this platform.
* Tier 2 - The rest of the platforms that may have a varying level of support, e.g.,
`linux_s390x`, `linux_ppc64le`, `windows_arm64`.
:::{note}
Code to support Tier 2 platforms is allowed, but regressions will be fixed on a
best-effort basis, so feel free to contribute by creating PRs.
If you would like to provide/sponsor CI setup for a platform that is not Tier 0,
please create a ticket or contact the maintainers on Slack.
:::
## Compatibility Policy
We generally follow the [Bazel Rule
Compatibility](https://bazel.build/release/rule-compatibility) guidelines, which
provides a path from an arbitrary release to the latest release in an
incremental fashion.
Breaking changes are allowed, but follow a process to introduce them over
a series of releases to so users can still incrementally upgrade. See the
[Breaking Changes](#breaking-changes) doc for the process.
## Experimental Features
An experimental feature is functionality that may not be ready for general
use and may change quickly and/or significantly. Such features are denoted in
their name or API docs as "experimental". They may have breaking changes made at
any time.
If you like or use an experimental feature, then file issues to request it be
taken out of experimental. Often times these features are experimental because
we need feedback or experience to verify they are working, useful, and worth the
effort of supporting.