Slide 1

Slide 1 text

! How to work like an Open Source Project (regardless of what you do) Ben Balter @benbalter [email protected] government.github.com

Slide 2

Slide 2 text

! What’s Open Source?

Slide 3

Slide 3 text

Ye Olde workflow

Slide 4

Slide 4 text

The olden days

Slide 5

Slide 5 text

Bespoke collaboration

Slide 6

Slide 6 text

! A brief history of open source

Slide 7

Slide 7 text

! Let’s say you’re a lawyer…

Slide 8

Slide 8 text

Impotent Legal Document Whereas the parties agree to as follows: 1. Heretofor this agreement is made and entered into as 09 May 2014 (“Effective Date”), by and between Disclosing Party Name, (“the Disclosing Party”) and Recipient Name, (“the Recipient”) (collectively, “the Parties”). 2. Notwithstanding, for purposes of this Agreement, “Confidential Information” shall mean any and all non-public information, including, without limitation, technical, developmental, marketing, sales, operating, performance, cost, know-how, business plans, business methods, and process information, disclosed to the Recipient… Important

Slide 9

Slide 9 text

! Then what?

Slide 10

Slide 10 text

" Version Control * 2d96cfe - (HEAD, tag: v3.1.1, origin/master, origin/HEAD, master) :gem: bump (43 minutes ago) * f4b446b - remove stray backtick (44 minutes ago) * 83599e3 - Merge branch 'master' of https://github.com/benbalter/g-man (46 minutes ago) |\ | * 42514ea - Merge pull request #61 from devscott/laxco (50 minutes ago) | |\ | | * 072d9b5 - Adding in additional entry for La Crosse County, WI (54 minutes ago) | |/ * | 1e95d95 - remove unresolvable domains (46 minutes ago) * | 1a8645a - remove uwyo.edu/CES (86 minutes ago) |/ * 70410ba - Merge pull request #60 from jpmckinney/canada (2 hours ago) |\ | * a77ad43 - Use consistent comments for Canada hosts (2 hours ago) | * 1776e45 - Add more Canadian hosts (2 hours ago) * | 05211a0 - Merge pull request #58 from mitio/bulgarian-government-domains (3 hours ago) |\ \ | * | fe8f862 - Add Bulgaria's government main domain (3 hours ago) | |/ * | 85d0c7b - Merge pull request #59 from mitio/fix-readme-typos (3 hours ago) |\ \ | |/ |/| | * f558a90 - Add missing word in the readme (3 hours ago)

Slide 11

Slide 11 text

! What’s GitHub?

Slide 12

Slide 12 text

! The world’s largest code-sharing platform # Founded 2008 ! VC Funded $100M $ Hubbers 232 % Users 7M & Projects 15M

Slide 13

Slide 13 text

! In your datacenter, or in the cloud ' GitHub.com (SaaS) Public engagement
 github.com/ngageoint (
 GitHub Enterprise (VM) Internal collaboration
 enterprise.github.com

Slide 14

Slide 14 text

Version control today

Slide 15

Slide 15 text

) Propose the change

Slide 16

Slide 16 text

* Review

Slide 17

Slide 17 text

+ Discuss

Slide 18

Slide 18 text

, Merge

Slide 19

Slide 19 text

- Mentions

Slide 20

Slide 20 text

! GitHub doesn’t think about knowledge management

Slide 21

Slide 21 text

! GitHub optimizes for knowledge workers

Slide 22

Slide 22 text

! The constraints of open source

Slide 23

Slide 23 text

! " Electronic High fidelity mediums expose process

Slide 24

Slide 24 text

! . Transparent Communicate decisions in realtime, and forever

Slide 25

Slide 25 text

! / Asynchronous Focus workflow on code, not meetings

Slide 26

Slide 26 text

! 0 Informal Adopt cultures, not polices

Slide 27

Slide 27 text

! What does your organization optimize for?

Slide 28

Slide 28 text

! First principles

Slide 29

Slide 29 text

! Friction
 lag between “I want to” and “I have”

Slide 30

Slide 30 text

! Metawork is a great waste of time

Slide 31

Slide 31 text

! A culture allergic to administrative distraction

Slide 32

Slide 32 text

! Prefer social constraints over technical constraints

Slide 33

Slide 33 text

! Prefer social constraints over administrative constraints

Slide 34

Slide 34 text

! Non-blocking is better than blocking

Slide 35

Slide 35 text

! Eliminate work

Slide 36

Slide 36 text

! Eliminate all humans

Slide 37

Slide 37 text

! How GitHub communicates

Slide 38

Slide 38 text

Required reading zachholman.com/posts/github-communication

Slide 39

Slide 39 text

! “Meetings pull you from actual work in order to talk about doing work”

Slide 40

Slide 40 text

! email? lolwat

Slide 41

Slide 41 text

! GitHub | Chat | Team | Halp

Slide 42

Slide 42 text

GitHub uses GitHub for Code Legal HR Blog posts Documentation Policies Sales Ops

Slide 43

Slide 43 text

! Chat

Slide 44

Slide 44 text

No content

Slide 45

Slide 45 text

! Why chat?

Slide 46

Slide 46 text

! Chat is inherently asynchronous

Slide 47

Slide 47 text

! Tapping someone on the shoulder is inherently being a jerk

Slide 48

Slide 48 text

! Scheduling a meeting is inherently a violation of the Geneva convention

Slide 49

Slide 49 text

! Chat has transcripts

Slide 50

Slide 50 text

! Chat exposes process

Slide 51

Slide 51 text

1 Meet Hubot

Slide 52

Slide 52 text

2 ChatOps

Slide 53

Slide 53 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 54

Slide 54 text

Some other ways Hubot helps Push Notifications Situational Awareness

Slide 55

Slide 55 text

Twitter Subscriptions Ops “github down” The Government Room “open source government” The Danger Room “animal hijinks gif”

Slide 56

Slide 56 text

! Team

Slide 57

Slide 57 text

Team Web | Android | iOS

Slide 58

Slide 58 text

! Team communicates… What’s up Ships Ideas Hubbers Notifications

Slide 59

Slide 59 text

A communications culture

Slide 60

Slide 60 text

A distributed company

Slide 61

Slide 61 text

! Halp

Slide 62

Slide 62 text

What goes through halp? support@ government@ sales@ press@ security@

Slide 63

Slide 63 text

Halp works just like GitHub @mentions Teams Markdown Emoji Opt in/out Everything at GitHub

Slide 64

Slide 64 text

Halp works just like Gmail labels search filters

Slide 65

Slide 65 text

Eliminate work github.com/benbalter/gman

Slide 66

Slide 66 text

! Tier-1 support Collaborative support

Slide 67

Slide 67 text

! Who in government is doing this?

Slide 68

Slide 68 text

White House Open Data Policy

Slide 69

Slide 69 text

USDS Playbook

Slide 70

Slide 70 text

18F open source policy

Slide 71

Slide 71 text

CFPB developer portal

Slide 72

Slide 72 text

Local government

Slide 73

Slide 73 text

! What about the private sector?

Slide 74

Slide 74 text

Startups twitter.github.io yelp.github.io

Slide 75

Slide 75 text

netflix.github.io adobe.github.io

Slide 76

Slide 76 text

Tech Giants sap.github.io ibm.github.io microsoft.github.io

Slide 77

Slide 77 text

Fenwick & West Term Sheets

Slide 78

Slide 78 text

Twitter Patent Agreement

Slide 79

Slide 79 text

Even textbooks

Slide 80

Slide 80 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 81

Slide 81 text

! How to work like an Open Source Project (regardless of what you do) Ben Balter @benbalter [email protected] government.github.com