how we make unity

46
COPYRIGHT 2015 @ UNITY TECHNOLOGIES HOW WE MAKE UNITY A Look into How Development in Unity’s R&D Organization Works

Upload: natosha-bard

Post on 16-Apr-2017

2.859 views

Category:

Engineering


1 download

TRANSCRIPT

Page 1: How We Make Unity

COPYRIGHT 2015 @ UNITY TECHNOLOGIES

HOW WE MAKE UNITY

A Look into How Development in Unity’s R&D Organization Works

Page 2: How We Make Unity

COPYRIGHT 2015 @ UNITY TECHNOLOGIES

A LOOK BACK

Page 3: How We Make Unity

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)

Page 4: How We Make Unity

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

Page 5: How We Make Unity

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

Page 6: How We Make Unity

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

Page 7: How We Make Unity

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

Page 8: How We Make Unity

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

Page 9: How We Make Unity

COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES

AND NOW UNITY TECHNOLOGIES HAS OVER 650 EMPLOYEES.

Page 10: How We Make Unity

COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES

HUNDREDS OF DEVELOPERS IN OVER 15 LOCATIONS ACROSS 4 CONTINENTS ALL WORKING TOGETHER.

BUT HOW?

Page 11: How We Make Unity

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

Page 12: How We Make Unity

COPYRIGHT 2015 @ UNITY TECHNOLOGIES

PRINCIPLES OF DEVELOPMENT AT UNITY

Page 13: How We Make Unity

COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES

EMPOWERMENT AUTONOMY RESPONSIBILITY

Page 14: How We Make Unity

COPYRIGHT 2015 @ UNITY TECHNOLOGIES

THE LIFECYCLE OF A CHANGE

Page 15: How We Make Unity

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!

Page 16: How We Make Unity

COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES

VERSION CONTROL LOW-LEVEL BUILD AUTOMATION HIGH-LEVEL BUILD AUTOMATION CODE REVIEW AUTOMATED TESTING

Page 17: How We Make Unity

COPYRIGHT 2015 @ UNITY TECHNOLOGIES

VERSION CONTROL

Page 18: How We Make Unity

COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES

REVISION CONTROL COLLABORATION MULTIPLE LINES OF DEVELOPMENT

Page 19: How We Make Unity

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

Page 20: How We Make Unity

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)

Page 21: How We Make Unity

COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES

BRANCH-BASED DEVELOPMENT

Page 22: How We Make Unity

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

Page 23: How We Make Unity

COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES

BUT REALLY, IT’S IMPOSSIBLE TO EXPRESS THE COMPLEXITY WITH A SIMPLE PICTURE.

Page 24: How We Make Unity

COPYRIGHT 2015 @ UNITY TECHNOLOGIES

LOW-LEVEL BUILD AUTOMATION

Page 25: How We Make Unity

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

Page 26: How We Make Unity

COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES

22 PLATFORMS MULTIPLE ARCHITECTURES MULTIPLE VARIANTS

Page 27: How We Make Unity

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

Page 28: How We Make Unity

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

Page 29: How We Make Unity

COPYRIGHT 2015 @ UNITY TECHNOLOGIES

HIGH-LEVEL BUILD AUTOMATION

Page 30: How We Make Unity

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

Page 31: How We Make Unity

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

Page 32: How We Make Unity

COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES

Page 33: How We Make Unity

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

Page 34: How We Make Unity

COPYRIGHT 2015 @ UNITY TECHNOLOGIES

CODE REVIEW

Page 35: How We Make Unity

COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES

IMPROVE CODE QUALITY APPLY EXPERT KNOWLEDGE HELP DOMAIN EXPERTS RETAIN OWNERSHIP KNOWLEDGE TRANSFER

Page 36: How We Make Unity

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

Page 37: How We Make Unity

COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES

Page 38: How We Make Unity

COPYRIGHT 2015 @ UNITY TECHNOLOGIES

AUTOMATED TESTING

Page 39: How We Make Unity

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

Page 40: How We Make Unity

COPYRIGHT 2015 @ UNITY TECHNOLOGIES

GATEKEEPER WORKFLOW

Page 41: How We Make Unity

COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES

WHY USE A GATEKEEPER WORKFLOW IN A COMPANY FULL OF SMART, CAPABLE ENGINEERS? BECAUSE HUMANS ARE HUMAN.

Page 42: How We Make Unity

COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES

OBJECTIVITY CONSISTENCY CONTINUITY

Page 43: How We Make Unity

COPYRIGHT 2015 @ UNITY TECHNOLOGIES

STUFF I’VE LEARNED ALONG THE WAY

Page 44: How We Make Unity

COPYRIGHT 2014 @ UNITY TECHNOLOGIESCOPYRIGHT 2015 @ UNITY TECHNOLOGIES

FEAT

URE

SET

TIME

QUALITY

Page 45: How We Make Unity

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.

Page 46: How We Make Unity

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