How people build software ! " OPEN’16 Lutger Kunst @lukeart
How people build software
!
"
OPEN’16Lutger Kunst @lukeart
How people build software
Inner Sourceadopting open source principlesto ship better code earlier & more often
2
♥
Lutger Kunst
Solutions Engineer
GitHub
How people build software
!About us
3
FOUNDED
2008
GLOBAL RANK
#55
OFFICES
San Francisco Tokyo, Amsterdam, Boulder
USERS
15M
DAILY VISITORS
3M
REPOSITORIES
38M
How people build software
gA brief history of GitHub
4
g
2 0 1 0 . C O R P O R A T E T E A M S
Usage expands to include
working groups and project
teams within corporations
2 0 1 2 . E N T E R P R I S E
Major enterprises begin to
leverage the GitHub approach
to software development
2 0 0 8 . S O C I A L C O D I N G
GitHub launches a social
software platform that makes it
easy for anyone to share code.
How people build software
HappinessNo mockery in this world ever sounds to me so hollow as that of being told to cultivate happiness. What does such advice mean? Happiness is not a potato, to be planted in mould, and tilled with manure.
― Charlotte Brontë, Villette
5
$
How people build software
Open Source DevelopmentThe development of open source software involves bringing a widely distributed group of people together to work on complex problems while primarily communicating online.
6
%
How people build software
!2300% more requests served per second
7
!
How people build software
Open source projects have constraints
8
&
GEOGRAPHY TIMEZONE CULTURE
'%
!
How people build software
Open source principles
9
TRANSPARENCY PARTICIPATION COLLABORATION
( ) *
!
How people build software
The medium and the message are transparent
10
+ ' )
ELECTRONIC ASYNCHRONOUS LOCK-FREE
!
How people build software
The medium and the message are transparent
11
+ ' )
ELECTRONIC ASYNCHRONOUS LOCK-FREE
ARCHIVED,
!
How people build software
Minimizing friction enables participation
12
- ) &
DOCUMENTATIONREADME.md
CONTRIBUTING.md
GITHUB FLOWMake it easy to
propose changes
AUTOMATIONAllows reviewers tofocus on substance
How people build software
!Minimizing friction - Documentation
13
How people build software
!Minimizing friction - GitHub Flow
14
How people build software
!Minimizing friction - GitHub Flow
15
Experimentation Without Risk
Branch — Question, Hypothesis, Experiment, Analyze,
Conclude
Pull Request — Gather feedback from peers and
integrate with 3rd party products to perform
automation for quality of code, build status, and
deployment
How people build software
!Minimizing friction - GitHub Flow
16
Pull Request feedback loop
Writing a Pull Request — Include the purposes and why
the work is taking place. Include any references. Be
explicit about when and what kind of feedback you want.
Use @mentions to bring people into the conversation.
Providing feedback — Make sure you understand the
context of the pull request and explain any code changes
you propose. Use positive language.
Responding to feedback — Express that you appreciate
their feedback. Ask for clarification if needed or clarify
why you made certain decisions. Try to respond to any
comment.
How people build software
!Minimizing friction - Automation
17
How people build software
!Minimizing friction - Automation
18
How people build software
!Apple Swift - Expanding Commit Access
19
How people build software
!Minimizing friction - Automation
20
How people build software
!Code deploys - bring operations to the developer
21
+--------------------+ +--------+ +-----------------+ | GitHub Auto-Deploy | | GitHub | | Your Server | | Service | +--------+ +-----------------+ +--------------------+ | | | | | | Create Deployment | | |------------------------>| | | | | | | | | | Deployment Event | | |--------------------------------->| | | | | | Deployment Status (pending) | | |<---------------------------------| | | | | | | | | Deployment Status (success) | | |<---------------------------------| | | |
How people build software
!Deploy on every push commit
22
How people build software
!Deploy master on merge
23
How people build software
!Use branch based deployments
24
How people build software
!Deployment status
25
How people build software
!Haystack exception tracking
26
How people build software
!Code refactoring with Scientist
27
!
How people build software
Put everyone in one spot with chat…
28
• Team rooms• Region based rooms• Social rooms• Private chat• Ops rooms
How people build software
!… and bring your tools into your conversations
29
How people build software
!Meet Hubot
30
How people build software
!Hubot deploy example
31
!
How people build software
Steps to create happy developers
32
• Ensure quality• Implement rigorous testing and build• Short-lived branches for small features• Make deploys boring and predictable• Require documentation in the
repositories• Require mature and respectful
behavior
• Improve collaboration • Let developers share their work• Require public and focused code
reviews• Give employees the confidence to
contribute code• Put everyone in one spot with chat• Share your experiences
How people build software
!
"
Thank you!