!
“Meetings pull you from actual work
in order to talk about doing work”
Slide 41
Slide 41 text
!
email? lolwat
Slide 42
Slide 42 text
!
GitHub | Chat | Team | Halp
Slide 43
Slide 43 text
!
How GitHub uses GitHub
to build GitHub (TM)
Slide 44
Slide 44 text
GitHub uses GitHub for
Code
Legal
HR
Blog posts
Documentation
Policies
Sales
Ops
Slide 45
Slide 45 text
Create a descriptively named
feature branch
Slide 46
Slide 46 text
Add commits
Slide 47
Slide 47 text
Open a pull request
Slide 48
Slide 48 text
Discuss and Review
Slide 49
Slide 49 text
Merge and Deploy
Slide 50
Slide 50 text
!
) Friction
Delay between “I want to contribute” and “I have contributed”
Slide 51
Slide 51 text
No content
Slide 52
Slide 52 text
!
* Scripts to rule them all
$ script/test
Bootstrapping
$ boxen giants
$ cd ~/github/giants
$ script/bootstrap
Running
$ script/server
Testing
Slide 53
Slide 53 text
!
Chat
Slide 54
Slide 54 text
No content
Slide 55
Slide 55 text
!
Why chat?
Slide 56
Slide 56 text
!
Chat is inherently asynchronous
Slide 57
Slide 57 text
!
Tapping someone on the shoulder
is inherently being a jerk
Slide 58
Slide 58 text
!
Scheduling a meeting is
inherently a violation of the
Geneva convention
Slide 59
Slide 59 text
!
Chat has transcripts
Slide 60
Slide 60 text
!
Chat exposes process
Slide 61
Slide 61 text
+ Meet Hubot
Slide 62
Slide 62 text
, ChatOps
Slide 63
Slide 63 text
# Shared Command Line
•View cameras in our datacenter
• Search error logs
• Manage and trigger alerts
• Perform server maintenance
• View load balancer status
• Spin up cloud instances
• Provision servers
• Adjust firewall ports
• Activate DDoS Mitigation
• Restart processes
• Configure DNS
• Deploy to production
Slide 64
Slide 64 text
Some other ways Hubot helps
Push
Notifications
Situational
Awareness
Slide 65
Slide 65 text
Twitter Subscriptions
Ops
“github down”
The Government Room
“open source government”
The Danger Room
“animal hijinks gif”
Slide 66
Slide 66 text
!
- Continuous Integration (CI)
Slide 67
Slide 67 text
- Continuous Integration (CI)
Slide 68
Slide 68 text
. Build Status
Slide 69
Slide 69 text
/ On each push…
•~1,500 test suits
•~19,00 tests
•~80,000 assertions
• x 2 environments (.com, Enterprise)
•Tests > 20 seconds are considered a failure
•~ 90 seconds to complete
Slide 70
Slide 70 text
!
/Deploy
Slide 71
Slide 71 text
!
Nothing gets deployed
unless tests are green
Slide 72
Slide 72 text
A typical deployment flow
Development Staging Production
Slide 73
Slide 73 text
GitHub's 0 flow
Development Staging Production
Development
Development Staging
Staging
Slide 74
Slide 74 text
1 Branch Labs
Slide 75
Slide 75 text
2 Queuing
Slide 76
Slide 76 text
⚡ Doing it live
Slide 77
Slide 77 text
Meanwhile, back at the pull request…
Slide 78
Slide 78 text
!
Team
Slide 79
Slide 79 text
Team
Web | Android | iOS
Slide 80
Slide 80 text
!
Team communicates…
What’s up
Ships
Ideas
Hubbers
Notifications
Slide 81
Slide 81 text
A communications culture
Slide 82
Slide 82 text
A distributed company
Slide 83
Slide 83 text
Profiles
Slide 84
Slide 84 text
Automated AFK
Tripit API
Slide 85
Slide 85 text
!
Halp
Slide 86
Slide 86 text
What goes through halp?
support@
government@
sales@
press@
security@
Slide 87
Slide 87 text
Halp works just like GitHub
@mentions
Teams
Markdown
Emoji
Opt in/out
Everything at GitHub
Slide 88
Slide 88 text
No content
Slide 89
Slide 89 text
Halp works just like Gmail
labels
search
filters
Slide 90
Slide 90 text
Eliminate work
github.com/benbalter/gman
Slide 91
Slide 91 text
!
Tier-1 support
Collaborative support
Slide 92
Slide 92 text
!
Speak like a human
Slide 93
Slide 93 text
!
Tools make the difference
Slide 94
Slide 94 text
4 A typical day at GitHub
• 230 employees
(2/3rd remote)
• 185 chatrooms
• ~30,000 lines of text
(13,000 from Hubot)
• ~500 images
• 500+ deploys
• 1000+ pushes
• 320 issues opened
•185 pull requests opened
(of which 145 merged that day)
Slide 95
Slide 95 text
4 A typical week at GitHub/GitHub
Authors 78
Commits 1.1k
Files changed 900
Additions 23k
Deletions 7k
Issues opened 50
Pull requests opened 50
Pull requests merged 200
People merging 60
Issues closed 70
Slide 96
Slide 96 text
~130 production deploys per day
Slide 97
Slide 97 text
~41 deploys to GitHub.com per day
Slide 98
Slide 98 text
!
To summarize…
Slide 99
Slide 99 text
!
GitHub Zen
api.github.com/zen
Responsive is better than fast.
It’s not fully shipped until it’s fast.
Anything added dilutes everything else.
Practicality beats purity.
Approachable is better than simple.
Mind your words, they are important.
Speak like a human.
Half measures are as bad as nothing at all.
Encourage flow.
Non-blocking is better than blocking.
Favor focus over features.
Avoid administrative distraction.
Design for failure.
Keep it logically awesome.
Slide 100
Slide 100 text
!
How GitHub works
like an open source project
(and you can too!)
Ben Balter
government.github.com
[email protected]