page.title=Codelines, Branches, and Releases
@jd:body

<!--
    Copyright 2013 The Android Open Source Project

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->
<div id="qv-wrapper">
  <div id="qv">
    <h2>In this document</h2>
    <ol id="auto-toc">
    </ol>
  </div>
</div>

<p>
  The Android Open Source Project (AOSP) maintains a complete software stack to be ported by
  OEMs and other device implementors and run on their own hardware. To maintain the quality of
  Android, Google has contributed full-time engineers, product managers, user interface designers,
  quality assurance testers, and all the other roles required to bring modern devices to market.
</p>

<p>
  Accordingly, we maintain a number of "code lines" to clearly separate the current stable
  version of Android from unstable experimental work. We roll the open source administration
  and maintenance of the Android code lines into the larger product development cycle.
</p>

<p>
  The chart below depicts at a conceptual level how AOSP manages code and releases. We're
  referring to these as "code lines" instead of "branches" simply because at any given moment
  there may be more than one branch for a given "code line". For instance, when a
  release is cut, it may or may not become a new branch based on the needs of the moment.
</p>
<ol>
  <li>
	<p>
	  At any given moment, there is a current latest release of the Android platform. This
	  typically takes the form of a branch in the tree.
	</p>
  </li>
  <li>
	<p>
	  Device builders and contributors work with the current latest release, fixing bugs,
	  launching new devices, experimenting with new features, and so on.
	</p>
  </li>
  <li>
	<p>
	  In parallel, Google works internally on the next version of the Android platform and
	  framework according to the product's needs and goals. We develop the next
	  version of Android by working with a device partner on a flagship device whose
	  specifications are chosen to push Android in the direction we believe it should go.
	</p>
  </li>
  <li>
	<p>
	  When the "n+1"th version is ready, it will be published to the public source tree and
	  become the new latest release.
	</p>
  </li>
</ol>
  <img src="{@docRoot}images/code-lines.png" alt="code-line diagram" id="figure1" >
<p class="img-caption">
  <strong>Figure 1.</strong> AOSP code and releases
</p>
<h2 id="terms-and-caveats">
  Terms and Caveats
</h2>
<ul>
  <li>
	<p>
	  A <em>release</em> corresponds to a formal version of the Android platform, such as 1.5,
	  2.1, and so on. Generally speaking, a release of the platform corresponds to the version in
	  the <code>SdkVersion</code> field of AndroidManifest.xml files and defined within
	  <code>frameworks/base/api</code> in the source tree.
	</p>
  </li>
  <li>
	<p>
	  An <em>upstream</em> project is an open source project from which the Android stack is
	  pulling code. These include obvious projects such as the Linux kernel and WebKit.
	  Over time we are migrating some of the semi-autonomous Android projects (such as ART,
	  the Android SDK tools, Bionic, and so on) to work as "upstream" projects. Generally,
	  these projects are developed entirely in the public tree. For some upstream projects,
	  development is done by contributing directly to the upstream project itself. See <a href=
	  "submit-patches.html#upstream-projects">Upstream Projects</a> for details. In both cases,
	  snapshots will be periodically pulled into releases.
	</p>
  </li>
  <li>
	<p>
	  At all times, a release code-line (which may actually consist of more than one actual
	  branch in git) is considered the sole canonical source code for a given Android platform
	  version. OEMs and other groups building devices should pull only from a release branch.
	</p>
  </li>
  <li>
	<p>
	  "Experimental" code-lines are established to capture changes from the community so they can
          be iterated on with an eye toward stability.
	</p>
  </li>
  <li>
	<p>
	  Changes that prove stable will eventually be pulled into a release branch. Note this
	  applies only to bug fixes, application improvements, and other changes that do not affect the
	  APIs of the platform.
	</p>
  </li>
  <li>
	<p>
	  Changes will be pulled into release branches from upstream projects (including the
	  Android "upstream" projects) as necessary.
	</p>
  </li>
  <li>
	<p>
	  The "n+1"th version (that is, next major version of the framework and platform APIs) will
	  be developed by Google internally. See <a href=
          "#about-private-code-lines">About Private Codelines</a> for details.
	</p>
  </li>
  <li>
	<p>
	  Changes will be pulled from upstream, release, and experimental branches into Google's
	  private branch as necessary.
	</p>
  </li>
  <li>
	<p>
	  When the platform APIs for the next version have stabilized and been fully tested, Google
	  will cut a release of the next platform version. (This specifically refers to a new
	  <code>SdkVersion</code>.) This will also correspond to the internal code-line being made
	  a public release branch, and the new current platform code-line.
	</p>
  </li>
  <li>
	<p>
	  When a new platform version is cut, a corresponding experimental code-line will be
	  created at the same time.
	</p>
  </li>
</ul>

<h2 id="about-private-code-lines">
  About Private Codelines
</h2>
<p>
  The source management strategy above includes a code-line that Google will keep private. The
  reason for this is to focus attention on the current public version of Android.
</p>
<p>
  OEMs and other device builders naturally want to ship devices with the latest version of
  Android. Similarly, application developers don't want to deal with more platform
  versions than strictly necessary. Meanwhile, Google retains responsibility for the strategic
  direction of Android as a platform and a product. Our approach focuses on a small number of
  flagship devices to drive features while securing protections of Android-related intellectual
  property. 
</p>
<p>
  As a result, Google frequently has possession of confidential information from third parties.
  And we must refrain from revealing sensitive features until we've secured the appropriate
  protections. In addition, there are real risks to the platform arising from having too many
  platform versions extant at once. For these reasons, we have structured the open source
  project -- including third-party contributions -- to focus on the currently-public stable
  version of Android. "Deep development" on the next version of the platform will happen in
  private until it's ready to become an official release.
</p>
<p>
  We recognize many contributors will disagree with this approach. We respect others
  may have a different point of view; however, this is the approach we feel is best, and
  the one we've chosen to implement.
</p>
