Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Taming the Monorepo Beast: How We Made AndroidX...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Aurimas Liutikas
September 26, 2024
Technology
2
110
Taming the Monorepo Beast: How We Made AndroidX Library Releases At Scale More Bearable
Talk by Aurimas Liutikas (Google) at DPE Summit SF 2024
Aurimas Liutikas
September 26, 2024
Tweet
Share
More Decks by Aurimas Liutikas
See All by Aurimas Liutikas
The Benevolent Gradle Overlord: Keeping Order
aurimas
2
92
Gradle: Your Build, Your Rules
aurimas
2
51
APIs: How Hard Can They Be?
aurimas
1
40
Gradle: The Build System That Loves To Hate You
aurimas
3
3k
Ultimate Iteration Speeds with Gradle Configuration Cache
aurimas
2
190
More Effective Testing on Android Devices
aurimas
1
86
Gradle under the microscope
aurimas
2
180
Chasing the Speed of Gradle Builds: a history of Androidx build
aurimas
1
130
Build bigger, better: Gradle for large projects
aurimas
2
25
Other Decks in Technology
See All in Technology
衛星画像即時マッピングサービスの実現に向けて
lehupa
1
230
AIエージェントに必要なのはデータではなく文脈だった/ai-agent-context-graph-mybest
jonnojun
1
560
30分でわかる「ネットワーク図の描き方入門」/infraengbooks56
corestate55
0
290
個人的3D Gaussian Splattingニュースをご紹介 / sharing 3d gaussian splatting news
drumath2237
0
150
LLMOpsのこれまでとこれからを学ぶ
nsakki55
2
500
Bedrock PolicyでAmazon Bedrock Guardrails利用を強制してみた
yuu551
0
290
ブロックテーマ、WordPress でウェブサイトをつくるということ / 2026.02.07 Gifu WordPress Meetup
torounit
0
220
猫でもわかるKiro CLI(セキュリティ編)
kentapapa
1
190
OWASP Top 10:2025 リリースと 少しの日本語化にまつわる裏話
okdt
PRO
3
1k
20260204_Midosuji_Tech
takuyay0ne
1
170
マネージャー視点で考えるプロダクトエンジニアの評価 / Evaluating Product Engineers from a Manager's Perspective
hiro_torii
0
260
私たち準委任PdEは2つのプロダクトに挑戦する ~ソフトウェア、開発支援という”二重”のプロダクトエンジニアリングの実践~ / 20260212 Naoki Takahashi
shift_evolve
PRO
2
300
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
9.9k
30 Presentation Tips
portentint
PRO
1
230
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
66
37k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.1k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
180
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
130
How to make the Groovebox
asonas
2
1.9k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Code Review Best Practice
trishagee
74
20k
Making the Leap to Tech Lead
cromwellryan
135
9.7k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.1k
Transcript
Taming the Monorepo Beast How We Made AndroidX Library Releases
At Scale More Bearable Aurimas Liutikas / AndroidX @ Google @
[email protected]
What is androidx? Collection of widely used open-source libraries Main
Android API surface Broad range of functionality Developed by dozens of separate teams
Early Days Releases (com.android.support)
Early Days Releases Monolith releases a few times a year
21.0.3 21.0.2 21.0.0
Early Days Releases Uniform version with major based on Android
API level 21.0.3 21.0.2 21.0.0 22.2.1 22.2.0 22.1.1 22.1.0 22.0.0 23.4.0 23.3.0 23.2.1 23.2.0 23.1.1 23.1.0 23.0.1 23.0.0
Early Days Releases Eventually added alpha/beta 21.0.3 21.0.2 21.0.0 22.2.1
22.2.0 22.1.1 22.1.0 22.0.0 23.4.0 23.3.0 23.2.1 23.2.0 23.1.1 23.1.0 23.0.1 23.0.0 24.2.1 24.2.0 24.1.1 24.1.0 24.0.0 24.0.0-beta1 24.0.0-alpha2 24.0.0-alpha1 25.4.0 25.3.1 25.3.0 25.2.0 25.1.1 25.1.0 25.0.1 25.0.0 26.1.0 26.0.2 26.0.1 26.0.0 26.0.0-beta2 26.0.0-beta1 26.0.0-alpha1
No Longer Scaling (circa 2018) 60 libraries from ~13 teams
9 pages of release instructions Some libraries were monoliths of their own Bug fix in one library → 59 released with no changes Forced releases to align with Android OS releases
08 May 2018 Hello World, androidx Generated by Google AI
Image Generator
The New Plan Split and restructure libraries • À la
carte library adoption • Clear maven coordinate to package mapping ◦ androidx.foo:foo-bar →androidx.foo.bar Generated by Google AI Image Generator
The New Plan Adopt per library semantic versioning
The New Plan Adopt per library semantic versioning MAJOR.MINOR.PATCH
The New Plan Adopt per library semantic versioning MAJOR.MINOR.PATCH
The New Plan Adopt per library semantic versioning MAJOR.MINOR.PATCH
The New Plan Adopt per library semantic versioning MAJOR.MINOR.PATCH-(alpha|beta|rc)
The New Plan Depend on the lowest possible versions of
other libraries androidx.foo:foo:1.0.0 androidx.foo:foo:1.0.1 androidx.foo:foo:1.1.0 androidx.foo:foo:1.2.0 androidx.foo:foo:1.3.0 androidx.foo:foo:1.0.0 androidx.foo:foo:1.0.1 androidx.foo:foo:1.1.0 androidx.foo:foo:1.2.0 androidx.foo:foo:1.3.0 vs
Let’s execute the new plan!
Welp, this is a lot of manual work
Interconnectedness
Interconnectedness
Pinned vs Unpinned api(project(“:foo:foo-bar”)) vs api(“androidx.foo:foo-bar:1.1.0”)
Can we move to self-service?
Optional Release Trains (controlled chaos)
None
None
None
androidx-main vs release branches alpha & beta from androidx-main •
regular development rc & stable from androidx-foo-release • cherry-pick only
How Has It Gone?
Scale of androidx androidx migration Jetpad
Scale of androidx androidx migration Jetpad
Scale of androidx Jetpad
MISSION ACCOMPLISHED?
Current Pain Points Painful bugfix releases
Current Pain Points Painful bugfix releases Difficult build infrastructure backports
to release branches
Current Pain Points Painful bugfix releases Difficult build infrastructure backports
to release branches Kotlin Multiplatform artifact explosion
That’s all Folks!