Resource: LCA14
Name: LCA14-403: Importance of migrating external projects used in Android to it's latest version
Date: 06-03-2014
Speaker: Sireesh Tripurari
Designing IA for AI - Information Architecture Conference 2024
LCA14: LCA14-403: Importance of migrating external projects used in Android to it's latest version
1. Thu 6 March, 10:05am, Sireesh Tripurari
LCA14-403: Importance of migrating external
projects used in Android to it’s latest version
2. Android’s upstream (LCU’13)
• Android is, in many ways, just another Linux distribution
• As such, it includes code from many FOSS projects...
• … and quite frequently, isn't in sync with what
upstreams are doing.
3. Current situation (LCU’13)
• Android imports an external FOSS project into its git repository
(sometimes a released version, sometimes a git or svn snapshot)
• Patches to make it work with Android (and sometimes to add, remove or modify
some functionality) are added inside Android's git repository
• There is little or no effort made to upstream those changes, some changes are a
little bogus (checking in a config.h generated by autoconf to avoid the need to
call configure, ...)
• A newer upstream release may or may not be merged into Android – if at all,
merges typically happen months after the upstream release
• Android has no concept of OS component packages, and cannot update an
individual component (e.g. openssl) – often leading to important upstream
updates being ignored by device makers
4. Ideal Situation (LCU’13)
• Patches needed for Android go upstream ASAP (#ifdef-ed if
necessary)
• Upstream releases can be merged into Android quickly and
painlessly because all relevant patches are already there
• Upstream releases actually are merged in a timely manner
• Android adopts some sort of upstream packaging so e.g. an
OpenSSL security update can be pushed even to people who are
stuck with an ancient Android version
5. • They introduce improvements and add new features that
continually increase efficiency.
• Latest version ensures they have fixes for prior bugs.
• Obsoleted versions may inadvertently result in 'forgotten'
and eventually restraining with a version that is no
longer supported.
• Unfortunately, accommodating a recent release may
require more effort, and delay.
Importance of migration
6. • libpng
o source accepted upstream : Version 1.5.7beta01 [November 4, 2011]
o libpng performance improvement : As much as 30%
o https://cards.linaro.org/browse/JUICE-238
• libjpeg-turbo
o https://cards.linaro.org/browse/CARD-1090
o https://cards.linaro.org/browse/CARD-404
• Zlib
o https://cards.linaro.org/browse/CARD-1000
• Sqlite
o https://cards.linaro.org/browse/CARD-998
• Skia
o https://cards.linaro.org/browse/CARD-1091
Linaro – contribution towards FOSS
7. • Mesa +NEON
o https://cards.linaro.org/browse/CARD-291
• Libav
o https://cards.linaro.org/browse/CARD-91
• Guava
o https://cards.linaro.org/browse/CARD-999
• OpenSSL
o https://cards.linaro.org/browse/CARD-519
• Webp
o https://cards.linaro.org/browse/CARD-84
Linaro – contribution towards FOSS
8. • Toolchain
o Android 4.4 r2 uses modified GCC 4.7
o Linaro provides toolchain GCC 4.8
• Android Kernel
o Android 4.4 uses Kernel 3.4.0
o Linaro provides up-to date kernel 3.14+
• FOSS
o Optimized libraries
o ARM NEON support
Linaro - Android
9. • https://cards.linaro.org/browse/CARD-996
Linaro - Analysis
Linaro 11 Work is already in progress under Linaro
OK 5 Can be updated without any issues
No 61
Category not identified / Fonts / Host / Not maintained /
Not Source available in google master branch
Updated 11 Source updated by google
Testing 30
Code which are used for testing (internally by
google or thru CTS) / Scope of contribution
TBD 57 Scope of contribution
Grand Total 175
10. Linaro – working on …
clang llvm
compiler-rt mesa3d
e2fsprogs qemu
Fdlibm sqlite
Jpeg webp
libpng webrtc
Linaro is working on these components and will influence Google (Android) to incorporate them.
11. Linaro – up-streaming for migration
flac libxml2
libogg libxslt
libvorbis tinyxml
gcc-demangle tinyxml2
sfntly
At Linaro we analyzed these components could be migrated (includes minor fixes) without breaking
current system.
Respective issues’ will be raised at AOSP for migration
12. We invite contributions… (AOSP master)
ant-glob dnsmasq jsr305 nist-sip v8
antlr ganymed-ssh2 libcap-ng oauth valgrind
apache-harmony grub libpcap okhttp webkit
apache-http harfbuzz libphonenumber opencv wpa_supplicant
apache-xml harfbuzz_ng libselinux openssh wpa_supplicant
arduino icu4c libvpx ppp wpa_supplicant
bluetooth iproute2 libyuv protobuf xmp_toolkit
chromium ipsec-tools marisa-trie regex-re2
chromium-trace iptables mdnsresponder smali
dbus jhead mp4parser srtp
dhcpcd jmonkeyengine mksh tcpdump
Above lists the components where contribution for migration can be taken up by members.
Some of these items would be shall be picked by Linaro.
13. Invite contributor … (AOSP master)
Fonts Host Updated No new releases Other
cibu-fonts astl bison aac android-clat liblzf dropbear quake
lohit-fonts busybox
eclipse-
basebuilder
bouncycastle
android_inp
ut_bridge
libppp elfutils
replicaislan
d
naver-fonts eyes-free
eclipse-
windowbuilder
checkpolicy bsdiff libsepol hyphenation safe-iop
noto-fonts ffmpeg fat32lib eigen bzip2 lzma javasqlite skia
sil-fonts htop genext2fs giflib dexmaker netcat libffi stlport
jack yaffs2 iputils doclava open-vcdiff libmtp zxing
ncurses lrzsz expat speex libnfc-nci
sonivox openfst fsck_msdos tagsoup libnfc-nxp
srec openssl jline
tinycompre
ss
libnl
svox pixman jmdns zlib libusb
x264 tinyalsa libgsm
libusb-
compat
tremolo markdown
freetype
Above lists the components where contribution for migration can be taken up by members by
providing better solution (replacing old/abandoned projects).
Linaro shall not focus on these, instead influence Google to adopt new after testing.
14. Testing components
Unit testing Benchmark
android-mock hamcrest embunit blktrace stressapptest
easymock proguard gtest iozone stringbench
littlemock javassist junit memtester xmlwriter
mockwebserver jdiff netperf linux-tools-perf
roboelectric jsilver strace nist-pkits
objenesis lava-blackbox
emma
google-diff-
match-patch
Testing is important part of product, these areas can be enhanced by reducing multiple components
providing additional and easy to write testing.
Linaro shall not focus on these, instead influence Google to adopt new after validating.
15. • After analyzing all the external components available in
AOSP, we find that many components are out dated.
• Linaro studied that latest source updates contain critical bug
fixes and/or enhanced performance this effects overall
product durability and customer satisfaction
• Linaro shall push tested and validated components for
migration
• Linaro expects other members to provide support and
contribute by
o Suggesting better solution (where applicable)
o Upstream Google fixes to FOSS (reverse patches)
o Provide components (patches) for smooth migration (timely)
• Linaro would influence Google to migrate based on
regression and validation.
Conclusion
16. More about Linaro Connect: http://connect.linaro.org
More about Linaro: http://www.linaro.org/about/
More about Linaro engineering: http://www.linaro.org/engineering/
Linaro members: www.linaro.org/members