Kristina Chodorow | 974b208 | 2015-03-31 14:49:30 +0000 | [diff] [blame] | 1 | --- |
Damien Martin-Guillerez | 95a54b9 | 2016-07-28 12:47:11 +0000 | [diff] [blame] | 2 | layout: contribute |
| 3 | title: Roadmap |
Kristina Chodorow | 974b208 | 2015-03-31 14:49:30 +0000 | [diff] [blame] | 4 | --- |
Damien Martin-Guillerez | 95a54b9 | 2016-07-28 12:47:11 +0000 | [diff] [blame] | 5 | |
| 6 | # Bazel Feature Roadmap |
| 7 | |
| 8 | This document describes the Bazel team's plans for introducing features that |
| 9 | will be incorporated into version 1.0. Note that this roadmap only includes |
| 10 | features that the Bazel team itself intends to support. We anticipate that a |
| 11 | number of other features will be added by code contributors. |
| 12 | |
| 13 | For the alpha and beta releases, the Bazel team will maintain two code |
| 14 | repositories: |
| 15 | |
| 16 | * A Google-internal repository, containing both Bazel code and |
| 17 | Google-specific extensions and features |
| 18 | * An external [GitHub repository](https://github.com/bazelbuild/bazel), |
| 19 | containing only the Bazel code. |
| 20 | |
| 21 | We anticipate making the external repository *primary* in the future, that is, |
| 22 | code from Google and non-Google contributors will be committed and tested in the |
| 23 | external repository first, then imported into the internal repository. For |
| 24 | the alpha and beta releases, however, the internal repository will be primary. |
| 25 | Changes to Bazel code will be frequently pushed from the internal to |
| 26 | the external repository. |
| 27 | |
| 28 | ## Feature list |
| 29 | |
| 30 | In the following table, each feature is associated with a corresponding |
| 31 | milestone. The convention for the priorities are: |
| 32 | |
| 33 | * P0 feature will block the milestone; we will delay the milestone date |
| 34 | until the feature is shipped. |
| 35 | * P1 feature can delay the milestone if the feature can be shipped with a |
| 36 | reasonable delay (2 months max). |
| 37 | * P2 feature will be dropped and rescheduled for later rather than delaying |
| 38 | the milestone. |
| 39 | |
| 40 | We will update this list when reaching each milestone; some milestones may also |
| 41 | be refined if appropriate. |
| 42 | |
| 43 | <table class="table table-condensed table-bordered"> |
| 44 | <colgroup> |
| 45 | <col class="roadmap-col-phase"/> |
| 46 | <col class="roadmap-col-milestone"/> |
| 47 | <col class="roadmap-col-date"/> |
| 48 | <col class="roadmap-col-features"/> |
| 49 | </colgroup> |
| 50 | <thead> |
| 51 | <tr> |
| 52 | <th>Phase</th> |
| 53 | <th>Milestone</th> |
| 54 | <th>Target date</th> |
| 55 | <th>Features</th> |
| 56 | </tr> |
| 57 | </thead> |
| 58 | <tbody> |
| 59 | <tr> |
| 60 | <td rowspan="9"><b><a name="alpha"></a>Alpha</b></td> |
| 61 | <td rowspan="9"><b>Alpha</b><br/><span class="label label-default">Released</span></td> |
| 62 | <td rowspan="9"><b>2015‑03‑24</b></td> |
| 63 | <td>Linux & OS X Support</td> |
| 64 | </tr> |
| 65 | <tr><td>C++ (<a href="http://bazel.io/docs/be/c-cpp.html#cc_binary">build</a> and <a href="http://bazel.io/docs/be/c-cpp.html#cc_test">test</a>)</td></tr> |
| 66 | <tr><td>Java (<a href="http://bazel.io/docs/be/java.html#java_binary">build</a> and <a href="http://bazel.io/docs/be/java.html#java_test">test</a>)</td></tr> |
| 67 | <tr><td>Objective-C for iOS (<a href="http://bazel.io/docs/be/objective-c.html#objc_binary">build</a>)</td></tr> |
| 68 | <tr><td>Python (<a href="http://bazel.io/docs/be/python.html#py_binary">build</a>)</td></tr> |
| 69 | <tr><td>iOS applications (<a href="http://bazel.io/docs/be/objective-c.html#ios_application">build</a>)</td></tr> |
| 70 | <tr><td>Skylark extension mechanism (<a href="http://bazel.io/docs/skylark/index.html">build</a>)</td></tr> |
| 71 | <tr><td>Basic test suite on GitHub</td></tr> |
| 72 | <tr><td>Support for fetching dependencies from <a href="http://bazel.io/docs/be/workspace.html#maven_jar">Maven repositories</a> |
| 73 | and <a href="http://bazel.io/docs/be/workspace.html#http_archive">web servers</a></td></tr> |
| 74 | <tr> |
| 75 | <td rowspan="30"><b><a name="beta"></a>Beta</b></td> |
| 76 | <td rowspan="9"> |
| 77 | <a href="https://github.com/bazelbuild/bazel/releases/tag/0.1.0"><b>0.1</b> |
| 78 | <br/><span class="label label-default">Released</span></a> |
| 79 | </td> |
| 80 | <td rowspan="9"><b>2015‑09‑01</b></td> |
| 81 | <td>P0. Binary distribution for Linux & OS X</td< |
| 82 | </tr> |
| 83 | <tr><td>P0. Public <a href="http://ci.bazel.io">continuous integration system</a></td></tr> |
| 84 | <tr><td>P0. Support for <a href="http://bazel.io/docs/external.html">fetching transitive dependencies from Maven Central</a></td></tr> |
| 85 | <tr><td>P0. Android application (<a href="http://bazel.io/docs/be/android.html#android_binary">build</a> |
| 86 | and <a href="http://bazel.io/docs/bazel-user-manual.html#mobile-install">install</a>)</td></tr> |
| 87 | <tr><td>P1. Support for <a href="http://bazel.io/docs/external.html">prefetching and caching remote dependencies</a></td></tr> |
| 88 | <tr><td>P1. Docker (<a href="http://bazel.io/docs/be/docker.html">build and load</a>)</td></tr> |
| 89 | <tr><td>P2. <a href="http://bazel.io/docs/bazel-user-manual.html#sandboxing">Sandboxing of actions for Linux</a></td></tr> |
| 90 | <tr><td>P2. AppEngine (<a href="http://bazel.io/docs/be/appengine.html">build and load</a>)</td></tr> |
| 91 | <tr><td>P2. <a href="http://bazel.io/blog/2015/07/29/dashboard-dogfood.html">Test result dashboard</a></tr></td> |
| 92 | <tr> |
| 93 | <td rowspan="5"> |
| 94 | <a href="https://github.com/bazelbuild/bazel/releases/tag/0.2.0"><b>0.2</b> |
| 95 | <br/><span class="label label-default">Released</span></a> |
| 96 | </td> |
| 97 | <td rowspan="5"><b>2016‑02‑18</b></td> |
| 98 | <td>P0. <a href="https://github.com/bazelbuild/bazel/tree/master/src/test/java/com/google/devtools">Significantly increase test coverage</a></td> |
| 99 | </tr> |
| 100 | <tr><td>P0. Support for fetching <a href="http://bazel.io/docs/external.html">remote</a> <a href="http://bazel.io/docs/be/functions.html#load">Skylark rules</a></td></tr> |
David Chen | 2d0411a | 2016-09-09 11:22:24 +0000 | [diff] [blame] | 101 | <tr><td>P2. <a href="https://github.com/bazelbuild/rules_go">Go language support (build and tests)</a></td></tr> |
Damien Martin-Guillerez | 95a54b9 | 2016-07-28 12:47:11 +0000 | [diff] [blame] | 102 | <tr><td>P2. <a href="https://github.com/bazelbuild/bazel/releases/latest">Debian packages for Bazel</a></td></tr> |
| 103 | <tr><td>P2. <a href="http://braumeister.org/formula/bazel">OS X homebrew recipe for distributing Bazel</a></td></tr> |
| 104 | <tr> |
| 105 | <td rowspan="5"> |
| 106 | <a href="https://github.com/bazelbuild/bazel/releases/tag/0.3.0"><b>0.3</b> |
| 107 | <br/><span class="label label-default">Released</span></a> |
| 108 | </td> |
| 109 | <td rowspan="5"><b>2016‑06‑10</b></td> |
| 110 | <td>P0. <a href="http://bazel.io/docs/windows.html">Bazel can bootstrap itself on Windows without requiring admin privileges</a></td></tr> |
| 111 | </tr> |
| 112 | <tr><td>P1. <a href="http://bazel.io/blog/2016/06/10/ide-support.html">Interface for IDE support</a></td></tr> |
| 113 | <tr><td>P1. IDE support for <a href="http://tulsi.bazel.io">Xcode (stable)</a> and <a href="https://github.com/bazelbuild/e4b">Eclipse (experimental)</a></td></tr> |
| 114 | <tr><td>P1. <a href="https://docs.google.com/document/d/1jKbNXOVp2T1zJD_iRnVr8k5D0xZKgO8blMVDlXOksJg">Custom remote repositories using Skylark</a></td></tr> |
| 115 | <tr><td>P2. <a href="https://github.com/bazelbuild/bazel/commit/79adf59e2973754c8c0415fcab45cd58c7c34697">Prototype for distributed caching of build artifact</a></td></tr> |
| 116 | <tr> |
| 117 | <td rowspan="2"><b>0.4</b></td> |
Damien Martin-Guillerez | 0b12de6 | 2016-09-06 14:54:59 +0000 | [diff] [blame] | 118 | <td rowspan="2"><b>2016‑10</b></td> |
Helen Altshuler | 08673c1 | 2016-09-27 22:53:24 +0000 | [diff] [blame] | 119 | <td>P0.<a |
| 120 | href="https://github.com/bazelbuild/bazel/commit/490f250b27183a886cf70a5fe9e99d9428141b34"> Persistent Java compiler is enabled</a></td> |
Damien Martin-Guillerez | 95a54b9 | 2016-07-28 12:47:11 +0000 | [diff] [blame] | 121 | </tr> |
| 122 | <tr><td>P2. Sandboxing of action for OS X</td></tr> |
| 123 | <tr> |
| 124 | <td rowspan="4"><b>0.5</b></td> |
Damien Martin-Guillerez | 780a105 | 2016-08-26 07:56:24 +0000 | [diff] [blame] | 125 | <td rowspan="4"><b>2016‑11</b></td> |
Damien Martin-Guillerez | 95a54b9 | 2016-07-28 12:47:11 +0000 | [diff] [blame] | 126 | <td>P0. Support for testing Android apps</td> |
| 127 | </tr> |
| 128 | <tr><td>P0. Bazel supports building Java, C++ and Python on Windows</td></tr> |
Damien Martin-Guillerez | 780a105 | 2016-08-26 07:56:24 +0000 | [diff] [blame] | 129 | <tr><td>P1. Bazel supports distributed execution of actions through a stable API</td></tr> |
Damien Martin-Guillerez | 95a54b9 | 2016-07-28 12:47:11 +0000 | [diff] [blame] | 130 | <tr><td>P2. Support for Swift language</td></tr> |
| 131 | <tr> |
| 132 | <td rowspan="2"><b>0.6</b></td> |
Damien Martin-Guillerez | 0b12de6 | 2016-09-06 14:54:59 +0000 | [diff] [blame] | 133 | <td rowspan="2"><b>2017 Q1</b></td> |
Damien Martin-Guillerez | 95a54b9 | 2016-07-28 12:47:11 +0000 | [diff] [blame] | 134 | <td>P0. Searchable "hub" of Skylark rules</td> |
| 135 | </tr> |
| 136 | <tr><td>P2. Reference ("pull") remote docker images as an input to the build process</td></tr> |
| 137 | <tr> |
| 138 | <td rowspan="3"><b>0.7</b></td> |
Damien Martin-Guillerez | 0b12de6 | 2016-09-06 14:54:59 +0000 | [diff] [blame] | 139 | <td rowspan="3"><b>2017 Q2</b></td> |
Damien Martin-Guillerez | 95a54b9 | 2016-07-28 12:47:11 +0000 | [diff] [blame] | 140 | <td>P0. Full Windows support for Android: Android feature set is identical for Windows and Linux/OS X</tr> |
| 141 | </tr> |
| 142 | <tr><td>P1. Android Studio interoperability</td></tr> |
| 143 | <tr><td>P1. Support for testing iOS apps</td></tr> |
| 144 | <tr> |
| 145 | <td rowspan="3"><b><a name="stable"></a>Stable</b></td> |
| 146 | <td rowspan="3"><b>1.0</b></td> |
| 147 | <td rowspan="3"><b>2017 Q4</b></td> |
| 148 | <td>P0. Github repository is primary</td> |
| 149 | </tr> |
| 150 | <tr><td>P0. Extension APIs are stable and versioned</td></tr> |
| 151 | <tr><td>P1. Bazel is available in the Ubuntu and Debian package managers</td></tr> |
| 152 | </tbody> |
| 153 | </table> |