how we make unity
TRANSCRIPT
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
HOW WE MAKE UNITY
A Look into How Development in Unity’s R&D Organization Works
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
A LOOK BACK
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
Text Styles
between levels
Level 1 = Bullet 24 pt. Level 2 = Bullet 24 pt. Level 3 = Bullet 20 pt. Level 4 = Bullet 18 pt. Level 5 = Bullet 16 pt.
again, use SHIFT + TAB
Alternatively,
OTEE ca. 2005 (around Unity 1.0 release)
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
Text Styles
between levels
Level 1 = Bullet 24 pt. Level 2 = Bullet 24 pt. Level 3 = Bullet 20 pt. Level 4 = Bullet 18 pt. Level 5 = Bullet 16 pt.
again, use SHIFT + TAB
Alternatively,
Unite Copenhagen, October 2008
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
Text Styles
between levels
Level 1 = Bullet 24 pt. Level 2 = Bullet 24 pt. Level 3 = Bullet 20 pt. Level 4 = Bullet 18 pt. Level 5 = Bullet 16 pt.
again, use SHIFT + TAB
Alternatively,
Unite San Francisco, October 2009
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
Text Styles
between levels
Level 1 = Bullet 24 pt. Level 2 = Bullet 24 pt. Level 3 = Bullet 20 pt. Level 4 = Bullet 18 pt. Level 5 = Bullet 16 pt.
again, use SHIFT + TAB
Alternatively,
Unite Montreal, November 2010
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
Text Styles
between levels
Level 1 = Bullet 24 pt. Level 2 = Bullet 24 pt. Level 3 = Bullet 20 pt. Level 4 = Bullet 18 pt. Level 5 = Bullet 16 pt.
again, use SHIFT + TAB
Alternatively,
Unite San Francisco, August 2011
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
Text Styles
between levels
Level 1 = Bullet 24 pt. Level 2 = Bullet 24 pt. Level 3 = Bullet 20 pt. Level 4 = Bullet 18 pt. Level 5 = Bullet 16 pt.
again, use SHIFT + TAB
Alternatively,
Unite Amsterdam, August 2012
COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES
AND NOW UNITY TECHNOLOGIES HAS OVER 650 EMPLOYEES.
COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES
HUNDREDS OF DEVELOPERS IN OVER 15 LOCATIONS ACROSS 4 CONTINENTS ALL WORKING TOGETHER.
BUT HOW?
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
• Na’Tosha J. Bard • Engineering Tools Lead at Unity
Technologies (5+ years) • Copenhagen, Denmark • Open-Source & Linux Enthusiast • Married • 2 cats
ABOUT THE SPEAKER
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
PRINCIPLES OF DEVELOPMENT AT UNITY
COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES
EMPOWERMENT AUTONOMY RESPONSIBILITY
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
THE LIFECYCLE OF A CHANGE
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
Text Styles
between levels
Level 1 = Bullet 24 pt. Level 2 = Bullet 24 pt. Level 3 = Bullet 20 pt. Level 4 = Bullet 18 pt. Level 5 = Bullet 16 pt.
again, use SHIFT + TAB
Alternatively,
Developer Commits Change
Developer Pushes Change
Build Server Verifies Build
with a Subset of
Build & Test Targets
Domain Experts Peer
Review Code
Gatekeeper Confirms
Build Verification and Code Review
Gatekeeper Merges
Change to Mainline
Build Server Verifies Build with All Build
& Test Targets
Build Server Makes
Release Build
QA Performs
Acceptance Test
Change Goes to External Testers
Change is Released!
COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES
VERSION CONTROL LOW-LEVEL BUILD AUTOMATION HIGH-LEVEL BUILD AUTOMATION CODE REVIEW AUTOMATED TESTING
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
VERSION CONTROL
COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES
REVISION CONTROL COLLABORATION MULTIPLE LINES OF DEVELOPMENT
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
Text Styles
between levels
Level 1 = Bullet 24 pt. Level 2 = Bullet 24 pt. Level 3 = Bullet 20 pt. Level 4 = Bullet 18 pt. Level 5 = Bullet 16 pt.
again, use SHIFT + TAB
Alternatively,
MERCURIAL• Switched from Subversion to Mercurial in 2010 • Branch-based development (named branches) • Extensions: largefiles, eol • Lots of custom Mercurial-based infrastructure • Active member of open-source community
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
Text Styles
between levels
Level 1 = Bullet 24 pt. Level 2 = Bullet 24 pt. Level 3 = Bullet 20 pt. Level 4 = Bullet 18 pt. Level 5 = Bullet 16 pt.
again, use SHIFT + TAB
Alternatively,
“TRUNK” REPOSITORY METRICS
• 37,323 normal files, 378 largefiles • 13 GB of metadata • 14 GB working copy (populated) • 196,699 revisions (255,895 in development repo) • 3831 named branches (7151 in development repo)
COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES
BRANCH-BASED DEVELOPMENT
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
Text Styles
between levels
Level 1 = Bullet 24 pt. Level 2 = Bullet 24 pt. Level 3 = Bullet 20 pt. Level 4 = Bullet 18 pt. Level 5 = Bullet 16 pt.
again, use SHIFT + TAB
Alternatively,
“trunk” (mainline)
feature branches
bugfix branches
release branches
COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES
BUT REALLY, IT’S IMPOSSIBLE TO EXPRESS THE COMPLEXITY WITH A SIMPLE PICTURE.
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
LOW-LEVEL BUILD AUTOMATION
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
Text Styles
between levels
Level 1 = Bullet 24 pt. Level 2 = Bullet 24 pt. Level 3 = Bullet 20 pt. Level 4 = Bullet 18 pt. Level 5 = Bullet 16 pt.
again, use SHIFT + TAB
Alternatively,
PLATFORM SUPPORT
COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES
22 PLATFORMS MULTIPLE ARCHITECTURES MULTIPLE VARIANTS
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
Text Styles
between levels
Level 1 = Bullet 24 pt. Level 2 = Bullet 24 pt. Level 3 = Bullet 20 pt. Level 4 = Bullet 18 pt. Level 5 = Bullet 16 pt.
again, use SHIFT + TAB
Alternatively,
EVOLUTION OF LOW-LEVEL BUILD SYSTEM• Pre-2011: Static project files w/ Perl scaffolding • 2011-now: Jamplus w/ Perl scaffolding • Future: Gradle
• https://youtu.be/jmadc8xI_6I
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
Text Styles
between levels
Level 1 = Bullet 24 pt. Level 2 = Bullet 24 pt. Level 3 = Bullet 20 pt. Level 4 = Bullet 18 pt. Level 5 = Bullet 16 pt.
again, use SHIFT + TAB
Alternatively,
EDITOR BUILD TIMES• MacBook Pro (Retina, 15-inch, Mid 2015)
• 2,8 GHz Intel Core i7 • 16 GB 1600 MHz DDR3 • SSD
• Clean Build: 5m50.097s • No-Op:
• Perl: 0m28.320s • Jam: 0m2.476s
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
HIGH-LEVEL BUILD AUTOMATION
COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES
239 POSSIBLE BUILD & TEST TARGETS 39 HIGH-LEVEL TARGETS IN A BUILD VERIFICATION 97 NIGHTLY TEST RUNS BUILD CHAINS MANY LAYERS DEEP
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
Text Styles
between levels
Level 1 = Bullet 24 pt. Level 2 = Bullet 24 pt. Level 3 = Bullet 20 pt. Level 4 = Bullet 18 pt. Level 5 = Bullet 16 pt.
again, use SHIFT + TAB
Alternatively,
KATANA• Internally-developed custom CI solution • Fork of Buildbot • https://github.com/Unity-Technologies/katana • Active development
COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
Text Styles
between levels
Level 1 = Bullet 24 pt. Level 2 = Bullet 24 pt. Level 3 = Bullet 20 pt. Level 4 = Bullet 18 pt. Level 5 = Bullet 16 pt.
again, use SHIFT + TAB
Alternatively,
KATANA’S BUILD FARM• 236 (mostly virtual) machines
• Combination of local storage and NFS • Moving to CEPH
• Currently all hosted in Copenhagen • iOS farm with iOS team in Vilnius
• Configured with Salt
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
CODE REVIEW
COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES
IMPROVE CODE QUALITY APPLY EXPERT KNOWLEDGE HELP DOMAIN EXPERTS RETAIN OWNERSHIP KNOWLEDGE TRANSFER
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
Text Styles
between levels
Level 1 = Bullet 24 pt. Level 2 = Bullet 24 pt. Level 3 = Bullet 20 pt. Level 4 = Bullet 18 pt. Level 5 = Bullet 16 pt.
again, use SHIFT + TAB
Alternatively,
KALLITHEA• Open-Source source code management system • Supports Mercurial and Git • Web-based code review
• Preview of Merge • Pull Requests do not update automatically
• http://kallithea-scm.org
COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
AUTOMATED TESTING
COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES
NATIVE TESTS RUNTIME TESTS INTEGRATION TESTS GRAPHICS TESTS MANY OTHER TESTS
16,559,749TESTS RUN IN AUGUST 2015
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
GATEKEEPER WORKFLOW
COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES
WHY USE A GATEKEEPER WORKFLOW IN A COMPANY FULL OF SMART, CAPABLE ENGINEERS? BECAUSE HUMANS ARE HUMAN.
COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES
OBJECTIVITY CONSISTENCY CONTINUITY
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
STUFF I’VE LEARNED ALONG THE WAY
COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES
FEAT
URE
SET
TIME
QUALITY
COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES
CHANGE IS A CONSTANT. OPPOSING FORCES ARE A GOOD THING. SOFTWARE DEVELOPMENT IS ABOUT SO MUCH MORE THAN WRITING CODE.
COPYRIGHT 2015 @ UNITY TECHNOLOGIES
Text Styles
between levels
Level 1 = Bullet 24 pt. Level 2 = Bullet 24 pt. Level 3 = Bullet 20 pt. Level 4 = Bullet 18 pt. Level 5 = Bullet 16 pt.
again, use SHIFT + TAB
Alternatively,
Slides will be available at:
http://natoshabard.com/speaking
Find me at the Ask-the-Experts area, or on Twitter:
@natosha_bard