Author: The Bazel Team
This document describes the Bazel team's plans for introducing future system features. The document is divided into two main sections:
- Near-term plans: Features that the team is committed to supporting for alpha and beta releases.
- Tentative post-beta plans: Features that the team is considering supporting within one year of the beta release. The availability and sequencing of features on this list will depend technical feasibility and user demand.
Note that this roadmap only includes features that the Bazel team itself intends to support. We anticipate that a number of other features will be added by code contributors.
For the alpha and beta releases, the Bazel team will maintain two code repositories:
- A Google-internal repository, containing both Bazel code and Google-specific extensions and features
- An external GitHub repository, containing only the Bazel code.
We anticipate making the external repository primary in the future, that is, code from Google and non-Google contributors will committed and tested in the external repository first, then imported into the internal repository. For the alpha and beta releases, however, the internal repository will be primary. Changes to Bazel code will be frequently pushed from the internal to the external repository.
This release is intended to
- give users access to a basic set of supported features
- allow potential code contributors to understand Bazel's capabilities and architecture
- enable users to monitor the team's progress toward a beta release
Alpha users will need to build Bazel from source; we will not provide binary releases until the beta. We will accept code contributions, but may need to reject or defer code contributions related to beta features still under development. Some features will be fully supported henceforward, others are still experimental or partially supported; see our feature support document for details.
The following features/capabilities will be available in the alpha:
- Bazel runs on Linux and OS X
- Bazel builds itself on Linux and OS X
- Build rules target executables running on Linux and OS X
- Support for building and testing C++
- Support for building and testing Java
- Support for building Objective C
- Support for building Python
- Support for building iOS apps
- Documentation for supported build rules and features
- Online support for bug and feature requests
- A basic Bazel test suite in GitHub
- Support for referencing Java JAR dependencies from HTTP and Maven endpoints
- Support for referencing remote source repositories via HTTP
- Support for extensibility via an interpreted Python subset (Skylark)
The beta release will add support for additional languages and platform and various other fully supported features. In particular, the following features/capabilities will be available:
- Binary versions of Bazel for Linux and OS X
- All Bazel tests currently in Google's repository are ported to GitHub
- The Bazel test suite runs on externally-visible continuous integration infrastructure
- Support for referencing transitive sources via Maven
- Support for prefetching and caching remote dependencies
- Support for building and testing Android apps
- Support for testing iOS apps
- Support for build action sandboxing
- Binary releases of Bazel at least monthly
- The external repository is primary
- An auto-update mechanism to allow Bazel to dynamically check for, fetch, and install updated releases, rules, etc.
- AppEngine support
- Support for remote mobile testing
- Support for the Go language
- Support for Javascript
- Android Studio interoperability