blob: 5ceb103a32d8415cefde2f69e11a786ba823af35 [file] [log] [blame]
Dan Morrilla9788cd2009-11-15 11:49:30 -08001page.title=Android Code-Lines
2doc.type=source
3@jd:body
4<p>The Android Open Source Project maintains a complete software stack intended
5to be ported by OEMs and other device implementors to run on actual hardware.
6Accordingly, we maintain a number of "code lines" to clearly separate the
7current stable version of Android from unstable experimental work.</p>
8<p>The chart below depicts at a conceptual level how AOSP manages code and
9releases. We're referring to these as "code lines" instead of "branches"
10simply because at any given moment there may be more than one branch extant
11for a given "code line". For instance, when a release is cut, sometimes that
12will become a new branch in git, and sometimes not, based on the needs of the
13moment.</p>
14<img src="{@docRoot}images/code-lines.png"/>
15<h3>Notes and Explanations</h3>
16<ul>
17<li>A <i>release</i> corresponds to a formal version of the Android platform, such
Dan Morrill53c64082010-05-17 13:02:19 -070018as 1.5, 2.1, and so on. Generally speaking, a release of the platform
Dan Morrilla9788cd2009-11-15 11:49:30 -080019corresponds to a version of the <code>SdkVersion</code> field used in
20AndroidManifest.xml files, and defined in <code>frameworks/base/api</code> in
21the source tree.</li>
22<li>An <i>upstream</i> project is an open-source project from which the Android
23stack is pulling code. These include obvious projects such as the Linux kernel
24and WebKit, but over time we are migrating some of the semi-autonomous
25Android projects (such as Dalvik, the Android SDK tools, Bionic, and so on) to
Steve Block9449ece2010-09-02 14:29:43 +010026work as "upstream" projects. Generally, these projects are developed entirely in
27the public tree. For some upstream projects, development is done by contributing
28directly to the upstream project itself. See
29<a href="{@docRoot}source/submit-patches.html#upstream-projects">Upstream Projects</a>
30for details. In both cases, snapshots will be periodically pulled into releases.</li>
Dan Morrill53c64082010-05-17 13:02:19 -070031<li>The diagram refers to "Eclair" and "FroYo"; however, they are simply
Dan Morrilla9788cd2009-11-15 11:49:30 -080032placeholders, and the diagram actually reflects the overall release and
33branching strategy.</li>
Dan Morrill53c64082010-05-17 13:02:19 -070034<li>At all times, a release code-line (which may actually consist of
Dan Morrilla9788cd2009-11-15 11:49:30 -080035more than one actual branch in git) is considered the sole canonical source
Dan Morrill53c64082010-05-17 13:02:19 -070036code for a given Android platform version. OEMs and other groups building devices
37should pull only from a release branch.</li>
38<li>We will set up "experimental" code-lines to capture changes from
Dan Morrilla9788cd2009-11-15 11:49:30 -080039the community, so that they can be iterated on, with an eye toward stability.</li>
Dan Morrill53c64082010-05-17 13:02:19 -070040<li>Changes that prove stable will eventually be pulled into a release
Dan Morrilla9788cd2009-11-15 11:49:30 -080041branch. Note that this will only apply to bug fixes, app improvements, and
42other things that do not affect the APIs of the platform.</li>
Dan Morrill53c64082010-05-17 13:02:19 -070043<li>Changes will be pulled into release branches from upstream projects
44(including the Android "upstream" projects) as necessary.</li>
Dan Morrilla9788cd2009-11-15 11:49:30 -080045<li>The "n+1"th version (that is, next major version of the framework and
Dan Morrill53c64082010-05-17 13:02:19 -070046platform APIs) will be developed by Google internally. See below for
47details.</li>
48<li>Changes will be pulled from upstream, release, and experimental branches
Dan Morrilla9788cd2009-11-15 11:49:30 -080049into Google's private branch as necessary.</li>
50<li>When the platform APIs for the next version have stabilized and been fully
51tested, Google will cut a release of the next platform version. (This
52specifically refers to a new <code>SdkVersion</code>.) This will also
Dan Morrill53c64082010-05-17 13:02:19 -070053correspond to the internal code-line being made a public release branch, and the
Dan Morrilla9788cd2009-11-15 11:49:30 -080054new current platform code-line.</li>
Dan Morrill53c64082010-05-17 13:02:19 -070055<li>When a new platform version is cut, a corresponding experimental
56code-line will be created at the same time.</li>
Dan Morrilla9788cd2009-11-15 11:49:30 -080057</ul>
58<h3>About Private Code-Lines</h3>
59<p>The source management strategy above includes a code-line that Google will
60keep private. The reason for this is to focus attention on the current public
61version of Android.</p>
62<p>OEMs and other device builders naturally want to ship devices with the
63latest version of Android. Similarly, application developers don't want to
64deal with more extant platform versions than strictly necessary. Meanwhile,
65Google retains responsibility for the strategic direction of Android as a
66platform and a product. Our approach is based on focusing on a small number of
67flagship devices to drive features, and secure protections of Android-related
Dan Morrill98620ee2010-04-13 14:48:25 -070068intellectual property.</p>
Dan Morrilla9788cd2009-11-15 11:49:30 -080069<p>As a result, Google frequently has possession of confidential
Dan Morrill98620ee2010-04-13 14:48:25 -070070information of third parties, and we must refrain from revealing sensitive
Dan Morrilla9788cd2009-11-15 11:49:30 -080071features until we've secured the appropriate protections. Meanwhile, there are
72real risks to the platform arising from having too many platform versions
73extant at once. For these reasons, we have structured the open-source project
74-- including third-party contributions -- to focus on the currently-public
75stable version of Android. "Deep development" on the next version of the
76platform will happen in private, until it's ready to become an official
77release.</p>
78<p>We recognize that many contributors will disagree with this approach. We
79respect that others may have a different point of view; however, this is the
80approach that we feel is best, and the one we've chosen to implement.</p>