!
Open source behind the firewall
What government can learn from startups and the open source community
@benbalter
government.github.com
[email protected]
Slide 2
Slide 2 text
!
1. How government works
2. How open source projects work
3. How gov. can work like open source
Slide 3
Slide 3 text
!
How you work
is as important as
what you work on
Slide 4
Slide 4 text
!
But first, I’d like to talk about
trash cans
Slide 5
Slide 5 text
!
But first, I’d like to talk about
rubbish bins
Slide 6
Slide 6 text
!
For any given problem,
there are always two solutions
Slide 7
Slide 7 text
!
The easy way and
the government way
Slide 8
Slide 8 text
!
When outputs can’t be measured,
government institutes process
Slide 9
Slide 9 text
!
A lot of process.
Slide 10
Slide 10 text
!
" on the DC Metro
Slide 11
Slide 11 text
No content
Slide 12
Slide 12 text
No content
Slide 13
Slide 13 text
No content
Slide 14
Slide 14 text
!
" on the London Underground
Slide 15
Slide 15 text
No content
Slide 16
Slide 16 text
No content
Slide 17
Slide 17 text
!
Transparency solves for process
Slide 18
Slide 18 text
!
How government typically works
Slide 19
Slide 19 text
!
Few (if any) in-house developers
Slide 20
Slide 20 text
!
Same procurement process for
aircraft carriers and websites
Slide 21
Slide 21 text
!
Siloed IP, Siloed efforts
Slide 22
Slide 22 text
!
Closed source, but still somehow,
too many cooks in the kitchen
Slide 23
Slide 23 text
!
Program managers as
human issue trackers
Slide 24
Slide 24 text
!
Non-purpose built tools
(Excel + Outlook)
Slide 25
Slide 25 text
Ye Olde workflow
Slide 26
Slide 26 text
!
Open Source ≠ Published Source
Slide 27
Slide 27 text
!
How Open Source projects work
Slide 28
Slide 28 text
!
If you remember one thing about
open source’s secret sauce…
Slide 29
Slide 29 text
!
Prefer systems that naturally
capture and expose process
Slide 30
Slide 30 text
!
Who made what change when
(without the human blocker)
Slide 31
Slide 31 text
!
Open source is the story of
Wikipedia v. Encyclopedia Britannica
Slide 32
Slide 32 text
!
Rarely in the same place
at the same time
Slide 33
Slide 33 text
!
Rarely working on the same thing
at the same time
Slide 34
Slide 34 text
!
Better results than
heavyweight alternatives
Slide 35
Slide 35 text
!
The constraints of open source
Slide 36
Slide 36 text
!
! Electronic
High fidelity mediums expose process
Slide 37
Slide 37 text
!
# Transparent
Communicate decisions in realtime, and forever
Slide 38
Slide 38 text
!
$ Asynchronous
Focus workflow on code, not meetings
Slide 39
Slide 39 text
!
% Informal
Adopt cultures, not polices
Slide 40
Slide 40 text
!
What makes a healthy
open source project?
Slide 41
Slide 41 text
‣Code in the open
‣Shared, public issue tracker
‣Extensive test suite run on each proposed change
& Code
Slide 42
Slide 42 text
‣Proposed improvements discussed in the open
‣Few synchronous meetings
(open and memorialized when necessary)
‣All stakeholders have opportunity to contribute
' Discussions
Slide 43
Slide 43 text
!
What government can
learn from open source
(even if the code’s never public)
Slide 44
Slide 44 text
!
Friction (n)
Time between “I want to contribute” and “I have”
Slide 45
Slide 45 text
!
1. Minimize friction
Slide 46
Slide 46 text
!
in Gov Speak
Slide 47
Slide 47 text
!
Maximize the substance-process ratio
Slide 48
Slide 48 text
!
( Scripts to rule them all
$ script/test
Bootstrapping
$ boxen giants
$ cd ~/github/giants
$ script/bootstrap
Running
$ script/server
Testing
githubengineering.com/scripts-to-rule-them-all
Slide 49
Slide 49 text
!
2. Prefer cultural constraints to
administrative or technical constraints
Slide 50
Slide 50 text
!
Non-blocking is better than blocking
Slide 51
Slide 51 text
!
3. Optimize for
developer happiness
Slide 52
Slide 52 text
!
You can have open source without
executive oversight
Slide 53
Slide 53 text
!
You can have open source without
policy guidance
Slide 54
Slide 54 text
!
You can’t have open source
without developers
Slide 55
Slide 55 text
!
You can’t have open source
without code
Slide 56
Slide 56 text
!
What does that look like practically?
Slide 57
Slide 57 text
!
) Email
Slide 58
Slide 58 text
!
At GitHub we use GitHub to build GitHub
Slide 59
Slide 59 text
GitHub uses GitHub for
Code
Legal
HR
Blog posts
Documentation
Policies
Sales
Ops
Slide 60
Slide 60 text
zachholman.com/posts/github-communication
Slide 61
Slide 61 text
!
“Meetings pull you from actual work
in order to talk about doing work”
Slide 62
Slide 62 text
No content
Slide 63
Slide 63 text
‣ We use 185 rooms at the moment.
‣ We generated 29,168 lines of text on February 4.
‣ Of that, Hubot accounted for 13,462 lines.
‣ 468 images were pasted in.
‣ We deployed various apps and services 544 times.
Slide 64
Slide 64 text
!
Why chat?
Slide 65
Slide 65 text
!
Chat is inherently asynchronous
Slide 66
Slide 66 text
!
Tapping someone on the shoulder
is inherently being a jerk
Slide 67
Slide 67 text
!
Scheduling a meeting is
inherently evil
Slide 68
Slide 68 text
!
Chat has transcripts
Slide 69
Slide 69 text
!
Chat exposes process
Slide 70
Slide 70 text
* Meet Hubot
Slide 71
Slide 71 text
!
+ Continuous Integration (CI)
Slide 72
Slide 72 text
+ Continuous Integration (CI)
Slide 73
Slide 73 text
, Build Status
Slide 74
Slide 74 text
‣ ~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
- On each push…
!
1. Transparency can save you
from the tyranny of process
Slide 92
Slide 92 text
!
2. Prefer systems that inherently
capture and expose process
Slide 93
Slide 93 text
!
3. Minimize friction
Slide 94
Slide 94 text
!
Open source behind the firewall
What government can learn from startups and the open source community
@benbalter
government.github.com
[email protected]
Slide 95
Slide 95 text
!
Appendix
Slide 96
Slide 96 text
A typical deployment flow
Development Staging Production
Slide 97
Slide 97 text
GitHub's 1 flow
Development Staging Production
Development
Development Staging
Staging
Slide 98
Slide 98 text
2 Branch Labs
Slide 99
Slide 99 text
3 Queuing
Slide 100
Slide 100 text
‣ Trash can — https://www.flickr.com/photos/dcmetroblogger/
191721958/
‣ Rubbish Bin - http://anonw.com/2013/02/08/more-bins-are-
appearing-on-the-underground/