Here are the various relevant "moving" development branches and their
respective descriptions:
-release-1.0 was loosely based on the code that went into Android 1.0
and 1.1. It's only here for historical purposes at this point, hasn't
received any change in a long time and probably never will receive
additional changes.
-cupcake is a close copy of Google's main cupcake branch. 1.5 SDKs
(and the matching online documentation) are generated from Google's
variant. it's not getting much activity any more.
-cupcake-release is a variant of cupcake that matches more closely the
builds that end up on Google-Experience 1.5 devices. It receives
changes cherry-picked from cupcake.
-donut is the branch in which the next significant release is being
developed. Its current state matches the state of Google's donut
branch (minus non-Open-Source parts) as of July 8th. This isn't a
final version by any stretch of the imagination. Google's internal
version of the donut branch is already several weeks ahead and is
still being being actively worked on.
-master is the bleeding edge on the Open-Source side of things, it
contains all the current contributions from Google, all the community
contributions, and changes made there so far have almost all been
merged into Google's master tree (which is being used for post-donut
research and development). It sits "in between" two of Google's trees,
being a superset of the donut tree but a subset of Google's master
tree. This is the only Open-Source branch currently open for
contributions, as Google's source management process can't currently
deal with changes done in other Open-Source branches.
There are also a few "fixed" branches/tags, which are close copies of
previous releases:
-android-1.0 matches the very first code drop of 1.0; it's not very
meaningful as it was only a very loose match for the real 1.0.
-android-sdk-1.5-pre, android-sdk-1.5_r1 and android-sdk-1.5_r3 match
the different releases of the 1.5 SDK (and _r2 is missing for lack of
time). Those are along the cupcake branch.
-android-1.5 and android-1.5r2 respectively match the CRB17 and CRB43
device builds of the 1.5 release (CRB21 is identical to CRB17 as far
as the Open-Source side is concerned). Those are along the
cupcake-release branch. I'm hoping to put CRC01 there when I get the
opportunity.
As a general rule, the so-called Android platform only contains the
projects that are referenced by the official manifests, i.e. code that
is used to build Google-Experience devices. Projects that are hosted
on android.git.kernel.org but aren't referenced by manifests are
provided as extras, independently from and/or unmaintained by Google
and OHA. I'm hoping to make the distinction clearer in the future.
Looking closely at the details of the current state, there are
actually a few notable exceptions to the rules I mentioned above:
-the hardware/msm7k project is somewhat out of date across the board
when compared to the other projects.
-the vendor/htc/dream-open project is currently entirely untested and
pretty much unmaintained.
-the external/opencore project isn't merged from donut to master, and
gets imported into Google's server on its own schedule.
-the frameworks/base and packages/apps/Phone projects don't currently
have their true history exposed. Google's copies contain information
that it currently confidential and therefore can't be disclosed yet,
so the currently visible recent history for those projects is a mere
snapshot.
-the history of the manifests is still quite dirty, and as a result
it's hard to switch between branches.
It's also worth mentioning that Google's primary copy of cupcake
doesn't live in git, and that the script that replicates from our
legacy system into git has been known to have bugs. The git copy
probably deviates a bit from Google's primary version, and isn't
tested at all. Also, for all branches, the Android Open-Source Project
code only represents a part of the code used to build
Google-Experience devices, and Google's current testing process
doesn't test the code from the Android Open-Source Process separately
from the non-Open-Source code; as a result, it's known that some parts
of the Android Open-Source Project depend on non-Open-Source projects,
sometimes accidentally.
Finally, there's been an overall process issue with the way merges are
managed around the open-source master branch, which has been creating
some drift with the other codelines, such that there could be tidbits
code from donut that don't appear in master, or tidbits of code from
master that don't appear in Google's internal tree. Those were all
accidental results of merge conflicts (other than for opencore), but
they are an annoyance. I'll try to limit such drift going forward. I
think that I have an idea for a process change inside Google that
should eliminate that drift, but (assuming that it gets accepted and
implemented) its effects won't be visible until the first code drop
from eclair, so we'll have to live with the current situation for a
while longer.
JBQ
--
Jean-Baptiste M. "JBQ" Queru
Software Engineer, Android Open-Source Project, Google.
Questions sent directly to me that have no reason for being private
will likely get ignored or forwarded to a public forum with no further
warning.