SlideShare a Scribd company logo
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

RLA-CE Apps Handout
RLA-CE Apps HandoutRLA-CE Apps Handout
RLA-CE Apps Handout
Heather Beverley
 
Customer Touchpoints
Customer TouchpointsCustomer Touchpoints
Customer Touchpoints
MS Innovation Days
 
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 Mobility
Scotty Logan
 
Industrial Training in Window Application
Industrial Training in Window ApplicationIndustrial Training in Window Application
Industrial Training in Window Application
Arcadian Learning
 
Great Apps for Great Librarians
Great Apps for Great LibrariansGreat Apps for Great Librarians
Great Apps for Great Librarians
Southern Utah University
 
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
MAP FOR ANDROID APPS 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
Apteligent
 
Android
AndroidAndroid
Android
Mohit Patodia
 
Fighting Fragmentation with Fragments
Fighting Fragmentation with FragmentsFighting Fragmentation with Fragments
Fighting Fragmentation with Fragments
grunicanada
 
How to become an android developer
How to become an android developerHow to become an android developer
How to become an android developer
um_adeveloper
 
Js On Mobile Devices
Js On Mobile DevicesJs On Mobile Devices
Js On Mobile Devices
Jens Arps
 
Android
AndroidAndroid
Android PPT Presentation 2018
Android PPT Presentation 2018Android PPT Presentation 2018
Android PPT Presentation 2018
Rao Purna
 
Andriod vs iOS
Andriod vs iOSAndriod vs iOS
Andriod vs iOS
Amara Zafar
 
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
Idea Evolver
 
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
Director - Southern Business Growth Network CIC
 
Short notes of android
Short notes of androidShort notes of android
Short notes of android
Mohamed Fathy
 
Smartphone security
Smartphone  securitySmartphone  security
Smartphone security
Manish 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

dbms calicut university B. sc Cs 4th sem.pdf
dbms  calicut university B. sc Cs 4th sem.pdfdbms  calicut university B. sc Cs 4th sem.pdf
dbms calicut university B. sc Cs 4th sem.pdf
Shinana2
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
Wouter Lemaire
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Alpen-Adria-Universität
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
akankshawande
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
SitimaJohn
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
Recommendation System using RAG Architecture
Recommendation System using RAG ArchitectureRecommendation System using RAG Architecture
Recommendation System using RAG Architecture
fredae14
 
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStrDeep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
saastr
 
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying AheadDigital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Wask
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
Operating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptxOperating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptx
Pravash Chandra Das
 
AWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptxAWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptx
HarisZaheer8
 
Trusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process MiningTrusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process Mining
LucaBarbaro3
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
saastr
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 
WeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation TechniquesWeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation Techniques
Postman
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 

Recently uploaded (20)

dbms calicut university B. sc Cs 4th sem.pdf
dbms  calicut university B. sc Cs 4th sem.pdfdbms  calicut university B. sc Cs 4th sem.pdf
dbms calicut university B. sc Cs 4th sem.pdf
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
Recommendation System using RAG Architecture
Recommendation System using RAG ArchitectureRecommendation System using RAG Architecture
Recommendation System using RAG Architecture
 
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStrDeep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
 
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying AheadDigital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying Ahead
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
Operating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptxOperating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptx
 
AWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptxAWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptx
 
Trusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process MiningTrusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process Mining
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 
WeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation TechniquesWeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation Techniques
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 

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