| --- |
| layout: default |
| --- |
| |
| # Bazel Feature Roadmap |
| |
| Author: [The Bazel Team](https://groups.google.com/forum/#!forum/bazel-discuss) |
| |
| 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](https://github.com/google/bazel), |
| 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 be 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. |
| |
| ## Near-term Plans |
| |
| ### <a name="alpha"></a>Alpha release (2015-03) |
| |
| 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](support.html) 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) |
| |
| ### <a name="beta"></a>Beta release (target date: 2015-06) |
| |
| 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 |
| |
| ## Tentative post-beta plans |
| |
| * 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 |