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