Skyler Kaufman | 4443691 | 2011-04-07 15:11:52 -0700 | [diff] [blame^] | 1 | <!-- |
| 2 | Copyright 2010 The Android Open Source Project |
| 3 | |
| 4 | Licensed under the Apache License, Version 2.0 (the "License"); |
| 5 | you may not use this file except in compliance with the License. |
| 6 | You may obtain a copy of the License at |
| 7 | |
| 8 | http://www.apache.org/licenses/LICENSE-2.0 |
| 9 | |
| 10 | Unless required by applicable law or agreed to in writing, software |
| 11 | distributed under the License is distributed on an "AS IS" BASIS, |
| 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 13 | See the License for the specific language governing permissions and |
| 14 | limitations under the License. |
| 15 | --> |
| 16 | |
Skyler Kaufman | 991ae4d | 2011-04-07 12:30:41 -0700 | [diff] [blame] | 17 | # Android Code-Lines # |
| 18 | |
| 19 | The Android Open Source Project maintains a complete software stack intended |
| 20 | to be ported by OEMs and other device implementors to run on actual hardware. |
| 21 | Accordingly, we maintain a number of "code lines" to clearly separate the |
| 22 | current stable version of Android from unstable experimental work. |
| 23 | |
| 24 | The chart below depicts at a conceptual level how AOSP manages code and |
| 25 | releases. We're referring to these as "code lines" instead of "branches" |
| 26 | simply because at any given moment there may be more than one branch extant |
| 27 | for a given "code line". For instance, when a release is cut, sometimes that |
| 28 | will become a new branch in git, and sometimes not, based on the needs of the |
| 29 | moment. |
| 30 | |
| 31 | <img src="/images/code-lines.png"/> |
| 32 | |
| 33 | ## Notes and Explanations ## |
| 34 | |
| 35 | - A *release* corresponds to a formal version of the Android platform, such |
| 36 | as 1.5, 2.1, and so on. Generally speaking, a release of the platform |
| 37 | corresponds to a version of the `SdkVersion` field used in |
| 38 | AndroidManifest.xml files, and defined in `frameworks/base/api` in |
| 39 | the source tree. |
| 40 | |
| 41 | - An *upstream* project is an open-source project from which the Android |
| 42 | stack is pulling code. These include obvious projects such as the Linux kernel |
| 43 | and WebKit, but over time we are migrating some of the semi-autonomous |
| 44 | Android projects (such as Dalvik, the Android SDK tools, Bionic, and so on) to |
| 45 | work as "upstream" projects. Generally, these projects are developed entirely in |
| 46 | the public tree. For some upstream projects, development is done by contributing |
| 47 | directly to the upstream project itself. See [Upstream Projects](submit-patches.html#upstream-projects) |
| 48 | for details. In both cases, snapshots will be periodically pulled into releases. |
| 49 | |
| 50 | - The diagram refers to "Eclair" and "FroYo"; however, they are simply |
| 51 | placeholders, and the diagram actually reflects the overall release and |
| 52 | branching strategy. |
| 53 | |
| 54 | - At all times, a release code-line (which may actually consist of |
| 55 | more than one actual branch in git) is considered the sole canonical source |
| 56 | code for a given Android platform version. OEMs and other groups building devices |
| 57 | should pull only from a release branch. |
| 58 | |
| 59 | - We will set up "experimental" code-lines to capture changes from |
| 60 | the community, so that they can be iterated on, with an eye toward stability. |
| 61 | |
| 62 | - Changes that prove stable will eventually be pulled into a release |
| 63 | branch. Note that this will only apply to bug fixes, app improvements, and |
| 64 | other things that do not affect the APIs of the platform. |
| 65 | |
| 66 | - Changes will be pulled into release branches from upstream projects |
| 67 | (including the Android "upstream" projects) as necessary. |
| 68 | |
| 69 | - The "n+1"th version (that is, next major version of the framework and |
| 70 | platform APIs) will be developed by Google internally. See below for |
| 71 | details. |
| 72 | |
| 73 | - Changes will be pulled from upstream, release, and experimental branches |
| 74 | into Google's private branch as necessary. |
| 75 | |
| 76 | - When the platform APIs for the next version have stabilized and been fully |
| 77 | tested, Google will cut a release of the next platform version. (This |
| 78 | specifically refers to a new `SdkVersion`.) This will also |
| 79 | correspond to the internal code-line being made a public release branch, and the |
| 80 | new current platform code-line. |
| 81 | |
| 82 | - When a new platform version is cut, a corresponding experimental |
| 83 | code-line will be created at the same time. |
| 84 | |
| 85 | ## About Private Code-Lines ## |
| 86 | |
| 87 | The source management strategy above includes a code-line that Google will |
| 88 | keep private. The reason for this is to focus attention on the current public |
| 89 | version of Android. |
| 90 | |
| 91 | OEMs and other device builders naturally want to ship devices with the |
| 92 | latest version of Android. Similarly, application developers don't want to |
| 93 | deal with more extant platform versions than strictly necessary. Meanwhile, |
| 94 | Google retains responsibility for the strategic direction of Android as a |
| 95 | platform and a product. Our approach is based on focusing on a small number of |
| 96 | flagship devices to drive features, and secure protections of Android-related |
| 97 | intellectual property. |
| 98 | |
| 99 | As a result, Google frequently has possession of confidential |
| 100 | information of third parties, and we must refrain from revealing sensitive |
| 101 | features until we've secured the appropriate protections. Meanwhile, there are |
| 102 | real risks to the platform arising from having too many platform versions |
| 103 | extant at once. For these reasons, we have structured the open-source project |
| 104 | -- including third-party contributions -- to focus on the currently-public |
| 105 | stable version of Android. "Deep development" on the next version of the |
| 106 | platform will happen in private, until it's ready to become an official |
| 107 | release. |
| 108 | |
| 109 | We recognize that many contributors will disagree with this approach. We |
| 110 | respect that others may have a different point of view; however, this is the |
| 111 | approach that we feel is best, and the one we've chosen to implement. |
| 112 | |
| 113 | |