Yeah, welcome here to Forstem and to my talk with the title insights and statistics about the
Android open source project or in short deep dive into AOSP.
I'm Steven Langfeld, I'm a software engineer for and bettered Linux embedded and what
did this project via deep dive into Android open source project because sometimes I like
to collect all the things so I have a sister project that is called C-Life 555 unofficial
archive and mirror where I collect source code tabels because this project, software project,
does not have a good repository and does not have a tabel mirror system, he just
releases one tabel each month and so this project I collect in tabels but now I've turned
to AOSP and collecting AOSP releases. What was my goal? I wanted to inspect and watch all these
repositories that the Google has on his GitHub service, so the Android.Google.Source GitHub service.
And here you see a screenshot, this is the overview of all the GitHub repositories
or the website where you can also click on the links and dive into the gifu repository's
never interface and I wanted to watch all of the gifu repositories so if there's a new
tag on your branch I want to be informed what is happening there and what also other interesting
stuff is in there that you normally do not see or not notice. What do you need for such
and never requirements here you need good downstream bandwidth enough storage, some compute
power to run some computations and some basic links. So I've not done it on my whole server
because the downstream bandwidth is not good enough so I was going shopping to the Hatsuna server
version and just bought one used server there. 60, 62 bits of RAM, 2 disks, 12 cores, something
machine, Libyan Serbian, tooling what I used to make Python in just hell and what you will
see in these slides I used in plots to draw the graphs but this was my setup to watch and inspect
C. GitHub repositories of an Android and yeah it costs somehow 45 years per month to enter
server. So if you are an ASP engineer you will know that quite well for everyone else this is
a tool or repo tool to check out C source code from Android from ASP so you type repo in it and
then you have this well and then you have a branch the minus b branch and versioning and then you
do a repo sync which then will download all the 200 gigabytes of source code. So
important thing that we come up later so you have this kind of base URL this will note not change
and what the google source.com. Then you have a so-called manifest repository that is containing
XML files describing which other gifted policies to download. Here the manifest repository is
platform manifest then you have a group of release before diving to shortly is that a different
group of releases the Google engineers are doing and you have the version name here we have the
versions 16 dot are four then the six sample and we will come up to all the different parts later
as you talk. A bit of caution I was try to be very accurate with my statistics but yeah
there may be some bugs and issues or things I missed out. So question I've downloaded all
three thousand forty git repository from the Google service and this count is going up steadily every
month and in the end it was 1.6 of that type of byte of git git clone data and now I started to
do the number crunching and look into all the repositories that you find all in these three
thousand repositories. First observation is there is not a single manifest repository for repo
but there are eight different. My first repository is on these Google git servers. So we have kernel
mirror platform. This is a highlighted here because it is a manifest repository set I recently used
and pushed tools or there we see releases are still ongoing. Then there are also other manifest repositories
called accessories below we will come to back that later to train tools and swasti and sees
are updorned manifest repositories. So you see at sea dates for example the last release to
below was done in 2016 we will come to back. So one observation is on this git servers not only
poor and what is released but also a different stuff of things are released in different
manifest repositories and are also putting the count of tax and branches this correlates to the amount
of releases Google as Google engineers is doing there and you see mostly that the main releases
and most of the releases are done in the well known platform manifest repository.
Now we look into the biggest one of these platform manifest repositories where you normally
get your language source code and if you look into the repositories and the tech names on the
branch names you will find different groups of releases. There's not a single type of release for
Android. The common known is the Android Coupe I call that that is the normal AOSP release but you
have also other groups for example you have Android mainline releases you have Android CTS releases you
have Android security platform and RTS releases and also sees a different kind of releases for
these things are also good. Then there's also a group that is called Studio which you see has
a bit of small amount of count count as the count of git repository that is referenced.
So the amount of code and git repository you download when you check out such a release.
So Studio are the Android Studio plugins that are used in Android Studio and also there's a
group called NDK. So the NDK is native to your document kit and also the releases for the NDK
are put into this manifest repository. And yeah and I've put in here the first release date
in the last release date you see the for example and void is still released and would mainline
the last release for in what mainline was 20005022 in May and in March for example we'll come to
back side. This is now the first graph I'm showing, so we are now looking at the first group
of releases. This is the time is on the X-axis, the Y-axis is the count of projects. So as
you may know that Android is increasing in size every release and this is kind of showing that
so the amount of git repositories you have download is increasing with every year and release
of Android. It's kind of a linear increase of amount of stuff that we see in Android and AOSP.
Some details to highlight, you see on the white side this Android 16 release green
thing and the green line is below the release is before, for example, the violet stuff.
So Y has Android 16 less projects. Why does less git repositories are referenced?
This was interesting for me, so I dive into and what I found. One thing I found is that
was previously in the previous releases, the Google engineers have put every wasst dependency into
its own git repository. So we had hundreds of git repositories cloned, but it has
moved Android 16, I've seen not in from the run Android 16. They have changed sets, they have introduced
external wasst and what creates IO. This is now a single git repository containing all the
wasst dependencies and they have some tooling to pull in all the wasst dependencies into a single
bigger git repository. One other thing, why it's decreasing is as we heard in the previous
prep presentations that Google has does not release the Android pixel devices to AOSP anymore.
And also in 2025 in June, they have also removed the repositories from the manifest files.
So therefore also the count of git repositories has decreased. What is other interesting is
that you see on the violet graph. See why that's saying and you see it's the tie and then it's
go down and tie and down and tie it. And what is going there on? The thing is that I've learnt
just in the last year is if you have this and what underscore releases and these releases are done
every month or so. And in the why they have increasing number for example, here below you see a
screenshot of the website code names text built numbers from AOSP and you see the releases are
30, are 31 and are 32. The number is going up. You may think of that as a linear increasing
release with a git repository that is going on linearly. This is not the case.
There are different kinds of families in these are releases. And these families are based on
Icingsy foam models. So also on the website you see note down for which foam models are
released a stamp. For example, you see here that below the R30 is done for pixel nine.
The R31 is done for pixel A and nine A and the 30, so the two is done for pixel six, six
pearl and something. And these are really completely different code bases with different git histories.
So even so the arcing is increasing linearly. It's not really a linear history because
Google has different code bases internally just pushing into a linear history. And also previously
security releases were also done on this normal releases. Back to some statistics,
now here we look into a graph that is counting the files in the top level folders and how
over the different end word versions the amount is increasing. And yeah, the overall file count
is going up steadily. The most biggest folders are, if you know ASP, then you all know that
that's external folders. So all the external dependencies making up more of the half of files of ASP.
Then we also have the previous folder which is quite big continuing to a two-chain binaries
and all of that is also very big. And then you have 20% 30% of actual code in the ASP.
One thing to note that the file count is decreasing in 06. I do not know why,
maybe there was a click in up effort. And in and what's 13 also the amount of files has decreased,
which we also see in the next graph. This is not the file count, but the different file types.
So for example split up in different programming languages, for example.
What I can highlight is for example the big green thing, the big green thing are Java files.
So you see that the majority of one thing to note is that we are not looking into external
and prebles that are cut out in the graph. So just see playing ASP code done by the Google
Engineers. So the majority of code you see in Android and is running in Android is at really Java code.
So we have here more than half of the code is Java files. And yeah.
One interesting to note is for example the transition from MK files to BP files. So from Carti to
Song. For example Carti is the Violet Sing and the Bottom. And you see that it starts to increase
until something and what 9. And then starts to decrease. And with BP files starting to appear
at what round and what 8. And we are increasing until now. And what is interesting as I said
in Android 13. Somehow in Android 13, Google Engineers have removed a lot of Java files.
Maybe something of effort is going on there.
Yeah. Okay. I've told you about the different groups of Android releases. And we have looked
at the main group of Android releases for the Pixel phones. Now we call look into our other
group of Android releases. The security releases. The security releases also date on the bottom
kind of projects at the Y-axis. The Android security releases with this special group tack started
around 2021. Before there was also security releases, but they were done in the normal main group.
And what you see here is that the security releases are really on a very, very regular schedule.
As expected, every month Google Engineers have done a security release for different versions of
Android. And you can see around every point in time you see at least three Android versions are
patched with security releases. What is still interesting is that starting with, here you see the
mouse starting with the mid of 2025, the amount of security releases or the cadence of security
releases has decreased. So we are not seeing any security releases any months, but now any quarter.
And this was announcement by Google or some semi-announcement by Google just one out by the
guys watching that they switched to just quarter-liciturity releases to not monthly security
releases anymore. And this you will find here in this graph and in the data. This is happening.
We have less security releases of Android anymore.
And then I shortly briefly mentioned, and below and end with things,
below was an IoT operating system for Constituent devices.
Thanks. It was, yeah, it's so called Android without Java parts.
If you, it was announced in 2015. If you want to read more about that,
yeah, there's a blog post by Chris Simmons about that. And yeah, and if I've seen,
if you want to check out this source code, it's still there on the GitHub service.
This source code is in the manifest below repository. There's the XML files
where you can point you with repo and send, send, check out this source code.
There are just around 10 launches, so Google, Google engineers did just 10 releases,
open source releases of below. And as already seen, the last update to below was done in the
September 16. And the official, so this was the last source code drop was done. And officially,
the announcement was then done in December 2016 that below was discontinued.
So the official announcement really correlates to the source code changes.
From the election. So, but below was not the last attempt,
below has morphed into Android things. That is an Android variant,
including Java for bigger IoT devices, for example, smart speakers.
See releases were not done in the below manifest repository,
but in the normal platform manifest repository on special launches.
These launches contain the IoT name in it.
Now, first source code drop was in February 17. Last source code drop was in 2022.
And officially, if the first version was announced in 18, yeah, but maybe if you follow this space,
or at this time, follow this space. And what seems as already a thing of the past,
it was shut down. And officially announced to be shut down in 2022.
And the final shutdown was in 2022. And yeah, if you want to check out this source code,
again, it's still there. You can look at it and look at this tech tech's code,
Android and IoT release, something or Android O, and my one IoT release,
something that will find the Android things source code.
Another thing you find in the Git servers and the release history is Android mainline.
What is Android mainline also called Android mainline modules?
The marketing name or the end user name is called and what play system updates.
This is a mechanism in AUSP to patch core components, so stuff on the system partition,
without the involvement of C from Wender, but directly from Google onto the devices
through the Google Play Store.
Called Android mainline, this effort, the goal was there to increase or to allow security updates
to reach and use a device as fast as them. Because OAMs are known to delay or have
troubles patching and what systems. This started around Android 10. If you do AUSP development,
you know the devices by the technical name, the technical name or technical infrastructure is called
apex, the Android phony express container format, and they're around a 30 different
Android mainline modules, so different parts of these systems that can be patched for our
patched or updated, for example, t-set data, timezone data, media, wifi, that's the la la la la la.
And what is nice is this Android mainline releases are also you will also find in the AUSP
Gipropositories and source code. They have switched the versioning scheme a bit, so the first
started with the group and word mainline 12 are 116 something. This is going up very high and nowadays
they switch to technames late like I'm our t-set 2 and I'm our wifi something. And the number
is really quite astonishing, so you see it 183 and 529 releases of Android mainline modules,
so quite a lot of code and charm being done by Google to produce the Android mainline models
and to ship and to ship the security updates, parts of component updates to the Android phones.
Here is a graph about this tech group, so here we see different tech names and word
minus mainline or ML. Again, it's the bottom is the date, it's the date and on the y-axis is the
count of projects. This is a lot of important, the important thing I want to hear hired is that
the first version scheme with Android mainline releases was used from 2022 to 2022 2022.
At that point, say switch to a new version schema, the L underscore something, versioning schema
and pushed the updates to AUSP. The interesting thing is that in I think March, April 2025,
no techs appear anymore. So these are the open, so the Android mainline modules as far as I know
are still done to phone, so on my phone, for example, I still get Android play system updates,
but the push to the open source repository AUSP does not happen anymore. At least I have not
found any reference to the, yeah, to the source code for the Android mainline anymore. But this is
maybe not so surprising because we have seen in 2015 and 25 that a lot of releases to the AUSP of
source code were scaled back, for example, security updates were scaled back or pixel updates were
scaled back. So this is the same, in the same way, that they do not work anymore to update,
to publish the source code of these updates. One last thing you find in the
GPU repositories is Android Automotive. So Android Automotive is part of AUSP,
never the less the automotive group at Google does their own releases.
These releases are you find under the name, Android minus Automotive. As 15, 14, 14, something here,
I also put the link to the source. On the Android page, they have also some release notes there.
Yeah, I think they are 8 until now 8 or 10 Automotive releases of AUS. And they also do a different kind
of release. This is called UB minus Automotive Master. These stands for unbundled apps.
Because the Google Automotive group also releases not only the AUSP source code, but also the
app source code for certain apps. And also these releases you will find in the AUSP source code.
Or manifest the repositories to check out Android.
And if you want to know a bit more about build numbers and release names and QPRs and what
they mean, I can highlight another talk here in the demo. It's by Chris Simmons at 14, 22,
to a 25. A quick look at Android release names and build numbers. If you want to know more,
please stay here and watch also the other talk. And with that, thanks for listening,
comments, questions, ideas. If you want to check out the data, I've collected
the graphs, I've put that on codebook, native repository. And yeah, as I'm also making,
I'm also part of the AUSP dev group. If you want to know more about AUSP and work too,
in the AUSP community, please join our community. But with that, that's everything I want to tell.
Thanks.
We have time for one question.
Okay, no question. Then, thanks and see you.