KEMBAR78
5/ GitHub Inner Source @ OPEN'16 | PDF
How people build software
!
"
OPEN’16
Lutger Kunst @lukeart
How people build software
Inner Source
adopting open source principles
to 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
DAILYVISITORS
3M
REPOSITORIES
38M
How people build software
gA brief history of GitHub
4
g
2010. COR PORATE TEAMS
Usage expands to include
working groups and project
teams within corporations
2012. EN TERPR IS E
Major enterprises begin to
leverage the GitHub approach
to software development
2008. SO C IA L C ODING
GitHub launches a social
software platform that makes it
easy for anyone to share code.
How people build software
Happiness
No 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 Development
The 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
- ) &
DOCUMENTATION
README.md
CONTRIBUTING.md
GITHUB FLOW
Make it easy to
propose changes
AUTOMATION
Allows reviewers to
focus 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!

5/ GitHub Inner Source @ OPEN'16

  • 1.
    How people buildsoftware ! " OPEN’16 Lutger Kunst @lukeart
  • 2.
    How people buildsoftware Inner Source adopting open source principles to ship better code earlier & more often 2 ♥ Lutger Kunst Solutions Engineer GitHub
  • 3.
    How people buildsoftware ! About us 3 FOUNDED 2008 GLOBAL RANK #55 OFFICES San Francisco Tokyo, Amsterdam, Boulder USERS 15M DAILYVISITORS 3M REPOSITORIES 38M
  • 4.
    How people buildsoftware gA brief history of GitHub 4 g 2010. COR PORATE TEAMS Usage expands to include working groups and project teams within corporations 2012. EN TERPR IS E Major enterprises begin to leverage the GitHub approach to software development 2008. SO C IA L C ODING GitHub launches a social software platform that makes it easy for anyone to share code.
  • 5.
    How people buildsoftware Happiness No 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 $
  • 6.
    How people buildsoftware Open Source Development The development of open source software involves bringing a widely distributed group of people together to work on complex problems while primarily communicating online. 6 %
  • 7.
    How people buildsoftware !2300% more requests served per second 7
  • 8.
    ! How people buildsoftware Open source projects have constraints 8 & GEOGRAPHY TIMEZONE CULTURE '%
  • 9.
    ! How people buildsoftware Open source principles 9 TRANSPARENCY PARTICIPATION COLLABORATION ( ) *
  • 10.
    ! How people buildsoftware The medium and the message are transparent 10 + ' ) ELECTRONIC ASYNCHRONOUS LOCK-FREE
  • 11.
    ! How people buildsoftware The medium and the message are transparent 11 + ' ) ELECTRONIC ASYNCHRONOUS LOCK-FREE ARCHIVED,
  • 12.
    ! How people buildsoftware Minimizing friction enables participation 12 - ) & DOCUMENTATION README.md CONTRIBUTING.md GITHUB FLOW Make it easy to propose changes AUTOMATION Allows reviewers to focus on substance
  • 13.
    How people buildsoftware !Minimizing friction - Documentation 13
  • 14.
    How people buildsoftware !Minimizing friction - GitHub Flow 14
  • 15.
    How people buildsoftware !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
  • 16.
    How people buildsoftware !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.
  • 17.
    How people buildsoftware !Minimizing friction - Automation 17
  • 18.
    How people buildsoftware !Minimizing friction - Automation 18
  • 19.
    How people buildsoftware !Apple Swift - Expanding Commit Access 19
  • 20.
    How people buildsoftware !Minimizing friction - Automation 20
  • 21.
    How people buildsoftware !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) | | |<---------------------------------| | | |
  • 22.
    How people buildsoftware !Deploy on every push commit 22
  • 23.
    How people buildsoftware !Deploy master on merge 23
  • 24.
    How people buildsoftware !Use branch based deployments 24
  • 25.
    How people buildsoftware !Deployment status 25
  • 26.
    How people buildsoftware !Haystack exception tracking 26
  • 27.
    How people buildsoftware !Code refactoring with Scientist 27
  • 28.
    ! How people buildsoftware Put everyone in one spot with chat… 28 • Team rooms • Region based rooms • Social rooms • Private chat • Ops rooms
  • 29.
    How people buildsoftware !… and bring your tools into your conversations 29
  • 30.
    How people buildsoftware !Meet Hubot 30
  • 31.
    How people buildsoftware !Hubot deploy example 31
  • 32.
    ! How people buildsoftware 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
  • 33.
    How people buildsoftware ! " Thank you!