aboutsummaryrefslogtreecommitdiffhomepage
path: root/docs/roadmap.md
blob: a36bcf43ee9fcec20f31f32e2161209917019a25 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# 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 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.md) 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