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
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
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
61. Development process
Create the best product possible
→ Focus on improving
Release process
Ship finished work in a timely manner
→ Focus on not regressing
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
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
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
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