SlideShare a Scribd company logo
1 of 103
Download to read offline
Mobile @ Facebook

Christian Legnitto (christianl@fb.com)
Mobile release engineering
Who is this guy?
Who is this guy?
Facebook

• Manage Mobile Release Engineering
• I’m hiring
• Run the iOS and Android releases
• Ran Facebook.com web pushes for ~3 months
Who is this guy?
Facebook

• Manage Mobile Release Engineering
• I’m hiring
• Run the iOS and Android releases
• Ran Facebook.com web pushes for ~3 months

Mozilla

• Firefox release manager
• Helped design & implement 6 week releases
• Desktop ( 3 platforms ) & mobile ( Android )
• Still a community member
Who is this guy?
Facebook

• Manage Mobile Release Engineering
• I’m hiring
• Run the iOS and Android releases
• Ran Facebook.com web pushes for ~3 months

Mozilla

• Firefox release manager
• Helped design & implement 6 week releases
• Desktop ( 3 platforms ) & mobile ( Android )
• Still a community member

Apple

• Jaguar → Lion updates
• OS X pre-release updates
• Safari, Xcode, Java, iApps
• Build system, scrubber, PM tools
874,000,000 MAUs
507,000,000 DAUs
iPads &
iPhones
native
& web
supports
iOS6+
native
& web

+1M beta
testers

supports
Froyo+

15 apks

+20K
alpha
testers
How we USED to develop
Mobile core team owned mobile
Desktop Web

iOS

Group
messages

Group
messages

Group
messages

Chat

Messages team

Android

Chat

Chat

Upcoming
events

Upcoming
events

Upcoming
events

Birthdays

Birthdays

Birthdays

Photo albums

Photo albums

Photo albums

Photo picker

Photo picker

Photo picker

...

...

...

Events team
Photos team
Android core team
iOS core team
Doesn’t SCALE
Mobile core team owned mobile
Desktop Web

iOS

Group
messages

Group
messages

Group
messages

Chat

Messages team

Android

Chat

Chat

Upcoming
events

Upcoming
events

Upcoming
events

Birthdays

Birthdays

Birthdays

Photo albums

Photo albums

Photo albums

Photo picker

Photo picker

Photo picker

Events team
Photos team
Android core team
iOS core team
Mobile core team owned mobile
Desktop Web

Events team
Photos team
Android core team
iOS core team

Group
messages

Group
messages

Group
messages

Chat

Chat

Upcoming
events

Upcoming
events

Upcoming
events

Birthdays

Birthdays

Birthdays

Photo albums

20

iOS

Chat

Messages team

Android

Photo albums

Photo albums

Photo picker

Photo picker

Photo picker

10
30
20
20
Mobile core team owned mobile
Desktop Web

Photos team
Android core team
iOS core team

(numbers made up)

Group
messages

Group
messages

Group
messages

Chat

Chat

Upcoming
events

Upcoming
events

Upcoming
events

Birthdays

Birthdays

Birthdays

Photo albums

Photo albums

Photo albums

Photo picker

Events team

20

iOS

Chat

Messages team

Android

Photo picker

Photo picker

10
30
20
20
Mobile core team owned mobile
Desktop Web

Events team
Photos team
Android core team
iOS core team

Group
messages

Group
messages

Group
messages

Chat

Chat

Upcoming
events

Upcoming
events

Upcoming
events

Birthdays

Birthdays

Birthdays

Photo albums

20

iOS

Chat

Messages team

Android

Photo albums

Photo albums

Photo picker

Photo picker

Photo picker

10
30
20
20
Mobile core team owned mobile
Desktop Web

Photos team
Android core team
iOS core team

Group
messages

Group
messages

Chat

Events team

iOS

Group
messages

Chat

Chat

Upcoming
events

Upcoming
events

Upcoming
events

Birthdays

Birthdays

Birthdays

Photo albums

Messages team

Android

Photo albums

Photo albums

Photo picker

Photo picker

Photo picker

10
30
20
20

20
Mobile core team owned mobile
Desktop Web

iOS

Group
messages

Group
messages

Group
messages

Chat

Chat

Chat

Upcoming
events

Upcoming
events

Upcoming
events

Birthdays

Birthdays

Birthdays

Photo albums

Messages team

Android

Photo albums

Photo albums

Photo picker

Photo picker

Photo picker

Events team
Photos team
Android core team
iOS core team

30
20
20

20
10
Mobile core team owned mobile
Desktop Web

iOS

Group
messages

Group
messages

Group
messages

Chat

Chat

Chat

Upcoming
events

Upcoming
events

Upcoming
events

Birthdays

Birthdays

Birthdays

Photo albums

Messages team

Android

Photo albums

Photo albums

Photo picker

Photo picker

Photo picker

Events team
Photos team
Android core team
iOS core team

20
20

20
60
30
10
Mobile core team owned mobile
Desktop Web

iOS

Group
messages

Group
messages

Group
messages

Chat

Chat

Chat

Upcoming
events

Upcoming
events

Upcoming
events

Birthdays

Birthdays

Birthdays

Photo albums

Messages team

Android

Photo albums

Photo albums

Photo picker

Photo picker

Photo picker

20
60
30
10

20

Events team
Photos team
Android core team
iOS core team

20
Mobile core team owned mobile
Desktop Web

iOS

Group
messages

Group
messages

Group
messages

Chat

Messages team

Android

Chat

Chat

Upcoming
events

Upcoming
events

Upcoming
events

Birthdays

Birthdays

Birthdays

Photo albums

Photo albums

Photo albums

Photo picker

Photo picker

Photo picker

20
60
30
10

20

20

Events team
Photos team
Android core team
iOS core team
Doesn’t produce the BEST product
Mobile core team owned mobile
Desktop Web

iOS

Group
messages

Group
messages

Group
messages

Chat

Messages team

Android

Chat

Chat

Upcoming
events

Upcoming
events

Upcoming
events

Birthdays

Birthdays

Birthdays

Photo albums

Photo albums

Photo albums

Photo picker

Photo picker

Photo picker

Events team
Photos team
Android core team
iOS core team
Mobile core team owned mobile
Desktop Web

iOS

Group
messages

Group
messages

Group
messages

Chat

Messages team

Android

Chat

Chat

Upcoming
events

Upcoming
events

Upcoming
events

Birthdays

Birthdays

Birthdays

Photo albums

Photo albums

Photo albums

Photo picker

Photo picker

Photo picker

Events team
Photos team
Android core team
iOS core team

product experts
Mobile core team owned mobile
Desktop Web

iOS

Group
messages

Group
messages

Group
messages

Chat

Messages team

Android

Chat

Chat

Upcoming
events

Upcoming
events

Upcoming
events

Birthdays

Birthdays

Birthdays

Photo albums

Photo albums

Photo albums

Photo picker

Photo picker

Photo picker

Events team
Photos team
Android core team
iOS core team

product experts

platform experts
How we USED to ship
Feature-based releases
Feature-based releases

Decide on features
Feature-based releases

Decide on features
Furiously work on them
Feature-based releases

Decide on features
Furiously work on them
Test
Feature-based releases

Decide on features
Furiously work on them
Test
Ship when all features are done
All features are PRIORITY #1
Decide on features
Desktop Web
Group
messages
Chat
Upcoming
events
Birthdays
Photo albums
Photo picker

...
Decide on features
Desktop Web
1. Emoji
2. Green dot
3. Naming convos

Group
messages
Chat
Upcoming
events
Birthdays
Photo albums
Photo picker

...
Decide on features
Desktop Web
1. Emoji
2. Green dot
3. Naming convos

Group
messages

1. Reply inline
2. Birthday reminder
3. Gifts integration

Upcoming
events

Chat

Birthdays
Photo albums
Photo picker

...
Decide on features
Desktop Web
1. Emoji
2. Green dot
3. Naming convos

Group
messages

1. Reply inline
2. Birthday reminder
3. Gifts integration

Upcoming
events

1. Automatic upload
2. Tag suggestions
3. Change cover photo

Chat

Birthdays
Photo albums
Photo picker

...
Decide on features
Desktop Web

Android

1. Emoji
2. Green dot
3. Naming convos

Group
messages

Group
messages

Chat

Chat

1. Reply inline
2. Birthday reminder
3. Gifts integration

Upcoming
events

Upcoming
events

Birthdays

Birthdays

Photo albums

Photo albums

Photo picker

Photo picker

...

...

1. Automatic upload
2. Tag suggestions
3. Change cover photo
Decide on features
Desktop Web

Android

1. Emoji
2. Green dot
3. Naming convos

Group
messages

Group
messages

Chat

Chat

1. Reply inline
2. Birthday reminder
3. Gifts integration

Upcoming
events

Upcoming
events

Birthdays

Birthdays

Photo albums

Photo albums

Photo picker

Photo picker

...

...

1. Automatic upload
2. Tag suggestions
3. Change cover photo

1. Emoji
1. Reply inline
1. Automatic upload
Decide on features
Desktop Web

Android

1. Emoji
2. Green dot
3. Naming convos

Group
messages

Group
messages

Chat

Chat

1. Reply inline
2. Birthday reminder
3. Gifts integration

Upcoming
events

Upcoming
events

Birthdays

Birthdays

Photo albums

Photo albums

Photo picker

Photo picker

...

...

1. Automatic upload
2. Tag suggestions
3. Change cover photo

1. Emoji
1. Reply inline
1. Automatic upload
2. Green dot
2. Birthday reminder
2. Tag suggestions
Decide on features
Desktop Web

Android

1. Emoji
2. Green dot
3. Naming convos

Group
messages

Group
messages

Chat

Chat

1. Reply inline
2. Birthday reminder
3. Gifts integration

Upcoming
events

Upcoming
events

Birthdays

Birthdays

Photo albums

Photo albums

Photo picker

Photo picker

...

...

1. Automatic upload
2. Tag suggestions
3. Change cover photo

1. Emoji
1. Reply inline
1. Automatic upload
2. Green dot
2. Birthday reminder
2. Tag suggestions
3. Naming convos
3. Gifts integration
3. Change cover photo
The market and company
CHANGES RAPIDLY
Decide on features
Android
Group
messages
Chat
Upcoming
events
Birthdays
Photo albums
Photo picker

...

1. Emoji
2. Reply inline
3. Automatic upload
4. Green dot
5. Birthday reminder
6. Tag suggestions
7. Naming convos
8. Gifts integration
9. Change cover photo
Decide on features
Android
Group
messages
Chat
Upcoming
events
Birthdays
Photo albums
Photo picker

...

1. Emoji
2. Reply inline
3. Automatic upload
4. Green dot
5. Birthday reminder
6. Tag suggestions
7. Naming convos
8. Gifts integration
9. Change cover photo
Decide on features
Android
Group
messages
Chat
Upcoming
events
Birthdays
Photo albums
Photo picker

...

1. Emoji
2. Reply inline
3. Automatic upload
4. Green dot
5. Birthday reminder
6. Tag suggestions
7. Naming convos
8. Gifts integration
9. Change cover photo
Decide on features
Android
Group
messages
Chat
Upcoming
events
Birthdays
Photo albums
Photo picker

...

1. Emoji
2. Reply inline
3. Automatic upload
4. Green dot
5. Birthday reminder
6. Tag suggestions
7. Naming convos
8. Gifts integration
9. Change cover photo
Decide on features
Android
Group
messages
Chat
Upcoming
events
Birthdays
Photo albums
Photo picker

...

1. Emoji
2. Reply inline
3. Automatic upload
4. Green dot
5. Birthday reminder
6. Tag suggestions
7. Naming convos
8. Gifts integration
9. Change cover photo
Decide on features
Android
Group
messages
Chat
Upcoming
events
Birthdays
Photo albums
Photo picker

...

1. Emoji
2. Reply inline
3. Automatic upload
4. Green dot
5. Birthday reminder
6. Tag suggestions
7. Naming convos
8. Gifts integration
9. Change cover photo
Decide on features
Android
Group
messages
Chat
Upcoming
events
Birthdays
Photo albums
Photo picker

...

1. Emoji
2. Reply inline
3. Automatic upload
4. Green dot
5. Birthday reminder
6. Tag suggestions
7. Naming convos
8. Gifts integration
9. Change cover photo
Decide on features
Android
Group
messages
Chat
Upcoming
events
Birthdays
Photo albums
Photo picker

...

1. Emoji
2. Reply inline
3. Automatic upload
4. Green dot
5. Birthday reminder
6. Tag suggestions
7. Naming convos
8. Gifts integration
9. Change cover photo
Decide on features
Android
Group
messages
Chat
Upcoming
events
Birthdays
Photo albums
Photo picker

...

1. Emoji
2. Reply inline
3. Automatic upload
4. Green dot
5. Birthday reminder
6. Tag suggestions
7. Naming convos
8. Gifts integration
9. Change cover photo
Don’t know when code SHIPS
Feature-based releases
Can’t judge risk vs reward
Feature-based releases
Can’t judge risk vs reward

80% done?
Feature-based releases
Can’t judge risk vs reward

80% done?

Good enough
Confuses DEV and RELEASE
Development process
Create the best product possible
→ Focus on improving
Development process
Create the best product possible
→ Focus on improving

Release process
Ship finished work in a timely manner
→ Focus on not regressing
Took lessons learned from
DESKTOP WEB and applied
them to MOBILE
How we develop NOW
Old and busted
Desktop Web

iOS

Group
messages

Group
messages

Group
messages

Chat

Messages team

Android

Chat

Chat

Upcoming
events

Upcoming
events

Upcoming
events

Birthdays

Birthdays

Birthdays

Photo albums

Photo albums

Photo albums

Photo picker

Photo picker

Photo picker

...

...

...

Events team
Photos team
Android core team
iOS core team
New hotness
Desktop Web

iOS

Group
messages

Group
messages

Group
messages

Chat

Messages team

Android

Chat

Chat

Upcoming
events

Upcoming
events

Upcoming
events

Birthdays

Birthdays

Birthdays

Photo albums

Photo albums

Photo albums

Photo picker

Photo picker

Photo picker

...

...

...

Events team
Photos team
Android core team
iOS core team
Engineers committing mobile code
iOS and Android
How we ship NOW
features
quality
schedule
features
quality
schedule

pick 2
features
quality
schedule

pick 2
Date-based releases
Rule #1

We ship on time
Date-based releases
Rule #2

Make users
no worse off
Date-based releases
Rule #3

There’s always
the next one
Date-based releases
Rule #4

Retreat to safety
tiv
na

Automated cut every 4 weeks

e
m
ile
ob

4 weeks of development

4 weeks of development
master

3.5 weeks of stabilization
release branch

RC
p
to
sk
de

Automated cut every 1 week

w
eb

1 week of development

1 week of development
trunk

Stabilize

Release branch

release branch

Weekly

Twice Daily
tiv
na

Automated cut every 4 weeks

e
m
ile
ob

4 weeks of development

4 weeks of development
master

3.5 weeks of stabilization
release branch

RC
tiv
na

Dogfooding

e
m
ile
ob

master

release branch
How we write CODE
Source control
Git

>100,000 commits

>150,000 files

>300 engineers
Code review
Phabricator
Continuous integration
Buildbot
Builds

Lint / static analysis

Tests

Facebook
i386

Facebook
arm

Messenger
i386

Messenger
arm

...

regex

clang

android

findbugs

...

OCUnit

snapshot

JUnit

robolectric

...

https://github.com/facebook/ios-snapshot-test-case
Continuous integration
Buildbot

Before diff

Create diff

(optional)

(mandatory)

Diff updated Landing queue
(mandatory)

(optional)

Git commit
(mandatory)
Continuous integration
Mac minis
Android
Building & running tests
Buck - build tool

•
•
•
•

Fast

•

Distributed Cassandra build cache

•

buckd for background builds

Scalable and extensible
“buck clean is a bug”
Android and generic Java support
Building & running tests
Buck - build tool

•
•
•
•

Fast

•

Distributed Cassandra build cache

•

buckd for background builds

Scalable and extensible
“buck clean is a bug”
Android and generic Java support
Building & running tests
Buck - build tool

“Gerrit Code Review recently switched its build process from
Maven to Buck, reducing build time by 67-98% while improving
build reproducibility, maintainability and developer happiness.
The Gerrit project migrated itself out of the Maven tarpit into a

”

better build.

- Shawn Pearce (Google)
Building & running tests
Buck - join us!
Start using Buck:
http://facebook.github.io/buck/
Get help in the discussion group:
https://groups.google.com/forum/#!forum/buck-build
File bugs and submit patches on GitHub:
https://github.com/facebook/buck
iOS
Building & running tests
xctool - build tool
Makes iOS & Mac continuous integration easier.
• CLI tool, runs tests just as Xcode.app would
• Can parallelize test runs
• Can emit JSON objects for every build/test event
• Reporters for Phabricator, JUnit XML
• Attractive, concise output
Building & running tests
xctool - “pretty” reporter
Building & running tests
xctool - “json-stream” reporter
Building & running tests
xctool - how it works
xctool

xcodebuild

xcodebuild-shim.dylib
Injected

otest
(SenTestingKit)

xctest
(XCTest)

test-shim.dylib
Injected

test-shim.dylib
Injected
Building & running tests
xctool - join us!
On GitHub:
github.com/facebook/xctool
On Homebrew:
brew install xctool
Also available on Travis-CI
Crash reports
atos
Crash reports
atosl
Crash reports
atosl

github.com/facebook/atosl
Changed how we DEVELOP
Changed how we SHIP
Changed how we WRITE CODE
Kept our CULTURE
Facebook is mobile
Learn from our experience and use our tools
Links to mentioned awesomeness
Contact me
Buck

christianl@fb.com, https://fb.me/legnitto, @LegNeato
http://github.com/facebook/buck

XCTool

http://github.com/facebook/xctool

atosl

http://github.com/facebook/atosl

Snapshot Test http://github.com/facebook/ios-snapshot-test-case
Mobile @ Facebook

Christian Legnitto (christianl@fb.com)
Mobile release engineering

More Related Content

Similar to Mobile @ Facebook - QConSF 2013

Day1 what is android(print)
Day1 what is android(print)Day1 what is android(print)
Day1 what is android(print)Dongchul Shin
 
App Nation: a Creative Look at the Design, Gestures and Native Features used ...
App Nation: a Creative Look at the Design, Gestures and Native Features used ...App Nation: a Creative Look at the Design, Gestures and Native Features used ...
App Nation: a Creative Look at the Design, Gestures and Native Features used ...Molly Garris
 
Developing for Mobility
Developing for MobilityDeveloping for Mobility
Developing for MobilityScotty Logan
 
Industrial Training in Window Application
Industrial Training in Window ApplicationIndustrial Training in Window Application
Industrial Training in Window ApplicationArcadian Learning
 
Apteligent Data Report iOS 9.3 Edition
Apteligent Data Report iOS 9.3 EditionApteligent Data Report iOS 9.3 Edition
Apteligent Data Report iOS 9.3 EditionApteligent
 
Fighting Fragmentation with Fragments
Fighting Fragmentation with FragmentsFighting Fragmentation with Fragments
Fighting Fragmentation with Fragmentsgrunicanada
 
How to become an android developer
How to become an android developerHow to become an android developer
How to become an android developerum_adeveloper
 
Js On Mobile Devices
Js On Mobile DevicesJs On Mobile Devices
Js On Mobile DevicesJens Arps
 
Android PPT Presentation 2018
Android PPT Presentation 2018Android PPT Presentation 2018
Android PPT Presentation 2018Rao Purna
 
SMX London 2014 - Best Practices for Mobile SEO - Shawn Dragann
SMX London 2014 - Best Practices for Mobile SEO - Shawn DragannSMX London 2014 - Best Practices for Mobile SEO - Shawn Dragann
SMX London 2014 - Best Practices for Mobile SEO - Shawn DragannIdea Evolver
 
Short notes of android
Short notes of androidShort notes of android
Short notes of androidMohamed Fathy
 
Smartphone security
Smartphone  securitySmartphone  security
Smartphone securityManish Gupta
 

Similar to Mobile @ Facebook - QConSF 2013 (20)

RLA-CE Apps Handout
RLA-CE Apps HandoutRLA-CE Apps Handout
RLA-CE Apps Handout
 
Customer Touchpoints
Customer TouchpointsCustomer Touchpoints
Customer Touchpoints
 
Day1 what is android(print)
Day1 what is android(print)Day1 what is android(print)
Day1 what is android(print)
 
App Nation: a Creative Look at the Design, Gestures and Native Features used ...
App Nation: a Creative Look at the Design, Gestures and Native Features used ...App Nation: a Creative Look at the Design, Gestures and Native Features used ...
App Nation: a Creative Look at the Design, Gestures and Native Features used ...
 
Developing for Mobility
Developing for MobilityDeveloping for Mobility
Developing for Mobility
 
Industrial Training in Window Application
Industrial Training in Window ApplicationIndustrial Training in Window Application
Industrial Training in Window Application
 
Great Apps for Great Librarians
Great Apps for Great LibrariansGreat Apps for Great Librarians
Great Apps for Great Librarians
 
MAP FOR ANDROID APPS(MFAA):AMITOZ SINGH
MAP FOR ANDROID APPS(MFAA):AMITOZ SINGHMAP FOR ANDROID APPS(MFAA):AMITOZ SINGH
MAP FOR ANDROID APPS(MFAA):AMITOZ SINGH
 
Apteligent Data Report iOS 9.3 Edition
Apteligent Data Report iOS 9.3 EditionApteligent Data Report iOS 9.3 Edition
Apteligent Data Report iOS 9.3 Edition
 
Android
AndroidAndroid
Android
 
Fighting Fragmentation with Fragments
Fighting Fragmentation with FragmentsFighting Fragmentation with Fragments
Fighting Fragmentation with Fragments
 
How to become an android developer
How to become an android developerHow to become an android developer
How to become an android developer
 
Js On Mobile Devices
Js On Mobile DevicesJs On Mobile Devices
Js On Mobile Devices
 
Android
AndroidAndroid
Android
 
Android PPT Presentation 2018
Android PPT Presentation 2018Android PPT Presentation 2018
Android PPT Presentation 2018
 
Andriod vs iOS
Andriod vs iOSAndriod vs iOS
Andriod vs iOS
 
SMX London 2014 - Best Practices for Mobile SEO - Shawn Dragann
SMX London 2014 - Best Practices for Mobile SEO - Shawn DragannSMX London 2014 - Best Practices for Mobile SEO - Shawn Dragann
SMX London 2014 - Best Practices for Mobile SEO - Shawn Dragann
 
Making the most of using your smartphone
Making the most of using your smartphoneMaking the most of using your smartphone
Making the most of using your smartphone
 
Short notes of android
Short notes of androidShort notes of android
Short notes of android
 
Smartphone security
Smartphone  securitySmartphone  security
Smartphone security
 

Recently uploaded

AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 

Recently uploaded (20)

AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 

Mobile @ Facebook - QConSF 2013

  • 1. Mobile @ Facebook Christian Legnitto (christianl@fb.com) Mobile release engineering
  • 2. Who is this guy?
  • 3. Who is this guy? Facebook • Manage Mobile Release Engineering • I’m hiring • Run the iOS and Android releases • Ran Facebook.com web pushes for ~3 months
  • 4. Who is this guy? Facebook • Manage Mobile Release Engineering • I’m hiring • Run the iOS and Android releases • Ran Facebook.com web pushes for ~3 months Mozilla • Firefox release manager • Helped design & implement 6 week releases • Desktop ( 3 platforms ) & mobile ( Android ) • Still a community member
  • 5. Who is this guy? Facebook • Manage Mobile Release Engineering • I’m hiring • Run the iOS and Android releases • Ran Facebook.com web pushes for ~3 months Mozilla • Firefox release manager • Helped design & implement 6 week releases • Desktop ( 3 platforms ) & mobile ( Android ) • Still a community member Apple • Jaguar → Lion updates • OS X pre-release updates • Safari, Xcode, Java, iApps • Build system, scrubber, PM tools
  • 6.
  • 8.
  • 10.
  • 12.
  • 13.
  • 14. How we USED to develop
  • 15. Mobile core team owned mobile Desktop Web iOS Group messages Group messages Group messages Chat Messages team Android Chat Chat Upcoming events Upcoming events Upcoming events Birthdays Birthdays Birthdays Photo albums Photo albums Photo albums Photo picker Photo picker Photo picker ... ... ... Events team Photos team Android core team iOS core team
  • 17. Mobile core team owned mobile Desktop Web iOS Group messages Group messages Group messages Chat Messages team Android Chat Chat Upcoming events Upcoming events Upcoming events Birthdays Birthdays Birthdays Photo albums Photo albums Photo albums Photo picker Photo picker Photo picker Events team Photos team Android core team iOS core team
  • 18. Mobile core team owned mobile Desktop Web Events team Photos team Android core team iOS core team Group messages Group messages Group messages Chat Chat Upcoming events Upcoming events Upcoming events Birthdays Birthdays Birthdays Photo albums 20 iOS Chat Messages team Android Photo albums Photo albums Photo picker Photo picker Photo picker 10 30 20 20
  • 19. Mobile core team owned mobile Desktop Web Photos team Android core team iOS core team (numbers made up) Group messages Group messages Group messages Chat Chat Upcoming events Upcoming events Upcoming events Birthdays Birthdays Birthdays Photo albums Photo albums Photo albums Photo picker Events team 20 iOS Chat Messages team Android Photo picker Photo picker 10 30 20 20
  • 20. Mobile core team owned mobile Desktop Web Events team Photos team Android core team iOS core team Group messages Group messages Group messages Chat Chat Upcoming events Upcoming events Upcoming events Birthdays Birthdays Birthdays Photo albums 20 iOS Chat Messages team Android Photo albums Photo albums Photo picker Photo picker Photo picker 10 30 20 20
  • 21. Mobile core team owned mobile Desktop Web Photos team Android core team iOS core team Group messages Group messages Chat Events team iOS Group messages Chat Chat Upcoming events Upcoming events Upcoming events Birthdays Birthdays Birthdays Photo albums Messages team Android Photo albums Photo albums Photo picker Photo picker Photo picker 10 30 20 20 20
  • 22. Mobile core team owned mobile Desktop Web iOS Group messages Group messages Group messages Chat Chat Chat Upcoming events Upcoming events Upcoming events Birthdays Birthdays Birthdays Photo albums Messages team Android Photo albums Photo albums Photo picker Photo picker Photo picker Events team Photos team Android core team iOS core team 30 20 20 20 10
  • 23. Mobile core team owned mobile Desktop Web iOS Group messages Group messages Group messages Chat Chat Chat Upcoming events Upcoming events Upcoming events Birthdays Birthdays Birthdays Photo albums Messages team Android Photo albums Photo albums Photo picker Photo picker Photo picker Events team Photos team Android core team iOS core team 20 20 20 60 30 10
  • 24. Mobile core team owned mobile Desktop Web iOS Group messages Group messages Group messages Chat Chat Chat Upcoming events Upcoming events Upcoming events Birthdays Birthdays Birthdays Photo albums Messages team Android Photo albums Photo albums Photo picker Photo picker Photo picker 20 60 30 10 20 Events team Photos team Android core team iOS core team 20
  • 25. Mobile core team owned mobile Desktop Web iOS Group messages Group messages Group messages Chat Messages team Android Chat Chat Upcoming events Upcoming events Upcoming events Birthdays Birthdays Birthdays Photo albums Photo albums Photo albums Photo picker Photo picker Photo picker 20 60 30 10 20 20 Events team Photos team Android core team iOS core team
  • 26. Doesn’t produce the BEST product
  • 27. Mobile core team owned mobile Desktop Web iOS Group messages Group messages Group messages Chat Messages team Android Chat Chat Upcoming events Upcoming events Upcoming events Birthdays Birthdays Birthdays Photo albums Photo albums Photo albums Photo picker Photo picker Photo picker Events team Photos team Android core team iOS core team
  • 28. Mobile core team owned mobile Desktop Web iOS Group messages Group messages Group messages Chat Messages team Android Chat Chat Upcoming events Upcoming events Upcoming events Birthdays Birthdays Birthdays Photo albums Photo albums Photo albums Photo picker Photo picker Photo picker Events team Photos team Android core team iOS core team product experts
  • 29. Mobile core team owned mobile Desktop Web iOS Group messages Group messages Group messages Chat Messages team Android Chat Chat Upcoming events Upcoming events Upcoming events Birthdays Birthdays Birthdays Photo albums Photo albums Photo albums Photo picker Photo picker Photo picker Events team Photos team Android core team iOS core team product experts platform experts
  • 30. How we USED to ship
  • 33. Feature-based releases Decide on features Furiously work on them
  • 34. Feature-based releases Decide on features Furiously work on them Test
  • 35. Feature-based releases Decide on features Furiously work on them Test Ship when all features are done
  • 36. All features are PRIORITY #1
  • 37. Decide on features Desktop Web Group messages Chat Upcoming events Birthdays Photo albums Photo picker ...
  • 38. Decide on features Desktop Web 1. Emoji 2. Green dot 3. Naming convos Group messages Chat Upcoming events Birthdays Photo albums Photo picker ...
  • 39. Decide on features Desktop Web 1. Emoji 2. Green dot 3. Naming convos Group messages 1. Reply inline 2. Birthday reminder 3. Gifts integration Upcoming events Chat Birthdays Photo albums Photo picker ...
  • 40. Decide on features Desktop Web 1. Emoji 2. Green dot 3. Naming convos Group messages 1. Reply inline 2. Birthday reminder 3. Gifts integration Upcoming events 1. Automatic upload 2. Tag suggestions 3. Change cover photo Chat Birthdays Photo albums Photo picker ...
  • 41. Decide on features Desktop Web Android 1. Emoji 2. Green dot 3. Naming convos Group messages Group messages Chat Chat 1. Reply inline 2. Birthday reminder 3. Gifts integration Upcoming events Upcoming events Birthdays Birthdays Photo albums Photo albums Photo picker Photo picker ... ... 1. Automatic upload 2. Tag suggestions 3. Change cover photo
  • 42. Decide on features Desktop Web Android 1. Emoji 2. Green dot 3. Naming convos Group messages Group messages Chat Chat 1. Reply inline 2. Birthday reminder 3. Gifts integration Upcoming events Upcoming events Birthdays Birthdays Photo albums Photo albums Photo picker Photo picker ... ... 1. Automatic upload 2. Tag suggestions 3. Change cover photo 1. Emoji 1. Reply inline 1. Automatic upload
  • 43. Decide on features Desktop Web Android 1. Emoji 2. Green dot 3. Naming convos Group messages Group messages Chat Chat 1. Reply inline 2. Birthday reminder 3. Gifts integration Upcoming events Upcoming events Birthdays Birthdays Photo albums Photo albums Photo picker Photo picker ... ... 1. Automatic upload 2. Tag suggestions 3. Change cover photo 1. Emoji 1. Reply inline 1. Automatic upload 2. Green dot 2. Birthday reminder 2. Tag suggestions
  • 44. Decide on features Desktop Web Android 1. Emoji 2. Green dot 3. Naming convos Group messages Group messages Chat Chat 1. Reply inline 2. Birthday reminder 3. Gifts integration Upcoming events Upcoming events Birthdays Birthdays Photo albums Photo albums Photo picker Photo picker ... ... 1. Automatic upload 2. Tag suggestions 3. Change cover photo 1. Emoji 1. Reply inline 1. Automatic upload 2. Green dot 2. Birthday reminder 2. Tag suggestions 3. Naming convos 3. Gifts integration 3. Change cover photo
  • 45. The market and company CHANGES RAPIDLY
  • 46. Decide on features Android Group messages Chat Upcoming events Birthdays Photo albums Photo picker ... 1. Emoji 2. Reply inline 3. Automatic upload 4. Green dot 5. Birthday reminder 6. Tag suggestions 7. Naming convos 8. Gifts integration 9. Change cover photo
  • 47. Decide on features Android Group messages Chat Upcoming events Birthdays Photo albums Photo picker ... 1. Emoji 2. Reply inline 3. Automatic upload 4. Green dot 5. Birthday reminder 6. Tag suggestions 7. Naming convos 8. Gifts integration 9. Change cover photo
  • 48. Decide on features Android Group messages Chat Upcoming events Birthdays Photo albums Photo picker ... 1. Emoji 2. Reply inline 3. Automatic upload 4. Green dot 5. Birthday reminder 6. Tag suggestions 7. Naming convos 8. Gifts integration 9. Change cover photo
  • 49. Decide on features Android Group messages Chat Upcoming events Birthdays Photo albums Photo picker ... 1. Emoji 2. Reply inline 3. Automatic upload 4. Green dot 5. Birthday reminder 6. Tag suggestions 7. Naming convos 8. Gifts integration 9. Change cover photo
  • 50. Decide on features Android Group messages Chat Upcoming events Birthdays Photo albums Photo picker ... 1. Emoji 2. Reply inline 3. Automatic upload 4. Green dot 5. Birthday reminder 6. Tag suggestions 7. Naming convos 8. Gifts integration 9. Change cover photo
  • 51. Decide on features Android Group messages Chat Upcoming events Birthdays Photo albums Photo picker ... 1. Emoji 2. Reply inline 3. Automatic upload 4. Green dot 5. Birthday reminder 6. Tag suggestions 7. Naming convos 8. Gifts integration 9. Change cover photo
  • 52. Decide on features Android Group messages Chat Upcoming events Birthdays Photo albums Photo picker ... 1. Emoji 2. Reply inline 3. Automatic upload 4. Green dot 5. Birthday reminder 6. Tag suggestions 7. Naming convos 8. Gifts integration 9. Change cover photo
  • 53. Decide on features Android Group messages Chat Upcoming events Birthdays Photo albums Photo picker ... 1. Emoji 2. Reply inline 3. Automatic upload 4. Green dot 5. Birthday reminder 6. Tag suggestions 7. Naming convos 8. Gifts integration 9. Change cover photo
  • 54. Decide on features Android Group messages Chat Upcoming events Birthdays Photo albums Photo picker ... 1. Emoji 2. Reply inline 3. Automatic upload 4. Green dot 5. Birthday reminder 6. Tag suggestions 7. Naming convos 8. Gifts integration 9. Change cover photo
  • 55. Don’t know when code SHIPS
  • 57. Feature-based releases Can’t judge risk vs reward 80% done?
  • 58. Feature-based releases Can’t judge risk vs reward 80% done? Good enough
  • 59. Confuses DEV and RELEASE
  • 60. Development process Create the best product possible → Focus on improving
  • 61. Development process Create the best product possible → Focus on improving Release process Ship finished work in a timely manner → Focus on not regressing
  • 62. Took lessons learned from DESKTOP WEB and applied them to MOBILE
  • 64. Old and busted Desktop Web iOS Group messages Group messages Group messages Chat Messages team Android Chat Chat Upcoming events Upcoming events Upcoming events Birthdays Birthdays Birthdays Photo albums Photo albums Photo albums Photo picker Photo picker Photo picker ... ... ... Events team Photos team Android core team iOS core team
  • 65. New hotness Desktop Web iOS Group messages Group messages Group messages Chat Messages team Android Chat Chat Upcoming events Upcoming events Upcoming events Birthdays Birthdays Birthdays Photo albums Photo albums Photo albums Photo picker Photo picker Photo picker ... ... ... Events team Photos team Android core team iOS core team
  • 66. Engineers committing mobile code iOS and Android
  • 67. How we ship NOW
  • 72. Date-based releases Rule #2 Make users no worse off
  • 75. tiv na Automated cut every 4 weeks e m ile ob 4 weeks of development 4 weeks of development master 3.5 weeks of stabilization release branch RC
  • 76. p to sk de Automated cut every 1 week w eb 1 week of development 1 week of development trunk Stabilize Release branch release branch Weekly Twice Daily
  • 77. tiv na Automated cut every 4 weeks e m ile ob 4 weeks of development 4 weeks of development master 3.5 weeks of stabilization release branch RC
  • 79. How we write CODE
  • 82.
  • 83. Continuous integration Buildbot Builds Lint / static analysis Tests Facebook i386 Facebook arm Messenger i386 Messenger arm ... regex clang android findbugs ... OCUnit snapshot JUnit robolectric ... https://github.com/facebook/ios-snapshot-test-case
  • 84. Continuous integration Buildbot Before diff Create diff (optional) (mandatory) Diff updated Landing queue (mandatory) (optional) Git commit (mandatory)
  • 87. Building & running tests Buck - build tool • • • • Fast • Distributed Cassandra build cache • buckd for background builds Scalable and extensible “buck clean is a bug” Android and generic Java support
  • 88. Building & running tests Buck - build tool • • • • Fast • Distributed Cassandra build cache • buckd for background builds Scalable and extensible “buck clean is a bug” Android and generic Java support
  • 89. Building & running tests Buck - build tool “Gerrit Code Review recently switched its build process from Maven to Buck, reducing build time by 67-98% while improving build reproducibility, maintainability and developer happiness. The Gerrit project migrated itself out of the Maven tarpit into a ” better build. - Shawn Pearce (Google)
  • 90. Building & running tests Buck - join us! Start using Buck: http://facebook.github.io/buck/ Get help in the discussion group: https://groups.google.com/forum/#!forum/buck-build File bugs and submit patches on GitHub: https://github.com/facebook/buck
  • 91. iOS
  • 92. Building & running tests xctool - build tool Makes iOS & Mac continuous integration easier. • CLI tool, runs tests just as Xcode.app would • Can parallelize test runs • Can emit JSON objects for every build/test event • Reporters for Phabricator, JUnit XML • Attractive, concise output
  • 93. Building & running tests xctool - “pretty” reporter
  • 94. Building & running tests xctool - “json-stream” reporter
  • 95. Building & running tests xctool - how it works xctool xcodebuild xcodebuild-shim.dylib Injected otest (SenTestingKit) xctest (XCTest) test-shim.dylib Injected test-shim.dylib Injected
  • 96. Building & running tests xctool - join us! On GitHub: github.com/facebook/xctool On Homebrew: brew install xctool Also available on Travis-CI
  • 100. Changed how we DEVELOP Changed how we SHIP Changed how we WRITE CODE Kept our CULTURE
  • 101. Facebook is mobile Learn from our experience and use our tools
  • 102. Links to mentioned awesomeness Contact me Buck christianl@fb.com, https://fb.me/legnitto, @LegNeato http://github.com/facebook/buck XCTool http://github.com/facebook/xctool atosl http://github.com/facebook/atosl Snapshot Test http://github.com/facebook/ios-snapshot-test-case
  • 103. Mobile @ Facebook Christian Legnitto (christianl@fb.com) Mobile release engineering