Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Open source behind the firewall

Ben Balter
July 07, 2015
330

Open source behind the firewall

What government can learn from startups and the open source community

Ben Balter

July 07, 2015
Tweet

Transcript

  1. !
    Open source behind the firewall
    What government can learn from startups and the open source community
    @benbalter
    government.github.com
    [email protected]

    View full-size slide

  2. !
    1. How government works
    2. How open source projects work
    3. How gov. can work like open source

    View full-size slide

  3. !
    How you work
    is as important as
    what you work on

    View full-size slide

  4. !
    But first, I’d like to talk about
    trash cans

    View full-size slide

  5. !
    But first, I’d like to talk about
    rubbish bins

    View full-size slide

  6. !
    For any given problem, 

    there are always two solutions

    View full-size slide

  7. !
    The easy way and 

    the government way

    View full-size slide

  8. !
    When outputs can’t be measured,
    government institutes process

    View full-size slide

  9. !
    A lot of process.

    View full-size slide

  10. !
    " on the DC Metro

    View full-size slide

  11. !
    " on the London Underground

    View full-size slide

  12. !
    Transparency solves for process

    View full-size slide

  13. !
    How government typically works

    View full-size slide

  14. !
    Few (if any) in-house developers

    View full-size slide

  15. !
    Same procurement process for 

    aircraft carriers and websites

    View full-size slide

  16. !
    Siloed IP, Siloed efforts

    View full-size slide

  17. !
    Closed source, but still somehow,
    too many cooks in the kitchen

    View full-size slide

  18. !
    Program managers as 

    human issue trackers

    View full-size slide

  19. !
    Non-purpose built tools
    (Excel + Outlook)

    View full-size slide

  20. Ye Olde workflow

    View full-size slide

  21. !
    Open Source ≠ Published Source

    View full-size slide

  22. !
    How Open Source projects work

    View full-size slide

  23. !
    If you remember one thing about
    open source’s secret sauce…

    View full-size slide

  24. !
    Prefer systems that naturally
    capture and expose process

    View full-size slide

  25. !
    Who made what change when
    (without the human blocker)

    View full-size slide

  26. !
    Open source is the story of 

    Wikipedia v. Encyclopedia Britannica

    View full-size slide

  27. !
    Rarely in the same place 

    at the same time

    View full-size slide

  28. !
    Rarely working on the same thing

    at the same time

    View full-size slide

  29. !
    Better results than 

    heavyweight alternatives

    View full-size slide

  30. !
    The constraints of open source

    View full-size slide

  31. !
    ! Electronic
    High fidelity mediums expose process

    View full-size slide

  32. !
    # Transparent
    Communicate decisions in realtime, and forever

    View full-size slide

  33. !
    $ Asynchronous
    Focus workflow on code, not meetings

    View full-size slide

  34. !
    % Informal
    Adopt cultures, not polices

    View full-size slide

  35. !
    What makes a healthy 

    open source project?

    View full-size slide

  36. ‣Code in the open
    ‣Shared, public issue tracker
    ‣Extensive test suite run on each proposed change
    & Code

    View full-size slide

  37. ‣Proposed improvements discussed in the open
    ‣Few synchronous meetings 

    (open and memorialized when necessary)
    ‣All stakeholders have opportunity to contribute
    ' Discussions

    View full-size slide

  38. !
    What government can 

    learn from open source
    (even if the code’s never public)

    View full-size slide

  39. !
    Friction (n)

    Time between “I want to contribute” and “I have”

    View full-size slide

  40. !
    1. Minimize friction

    View full-size slide

  41. !
    in Gov Speak

    View full-size slide

  42. !
    Maximize the substance-process ratio

    View full-size slide

  43. !
    ( 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

    View full-size slide

  44. !
    2. Prefer cultural constraints to
    administrative or technical constraints

    View full-size slide

  45. !
    Non-blocking is better than blocking

    View full-size slide

  46. !
    3. Optimize for 

    developer happiness

    View full-size slide

  47. !
    You can have open source without
    executive oversight

    View full-size slide

  48. !
    You can have open source without
    policy guidance

    View full-size slide

  49. !
    You can’t have open source
    without developers

    View full-size slide

  50. !
    You can’t have open source
    without code

    View full-size slide

  51. !
    What does that look like practically?

    View full-size slide

  52. !
    At GitHub we use GitHub to build GitHub

    View full-size slide

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

    View full-size slide

  54. zachholman.com/posts/github-communication

    View full-size slide

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

    View full-size slide

  56. ‣ 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.

    View full-size slide

  57. !
    Chat is inherently asynchronous

    View full-size slide

  58. !
    Tapping someone on the shoulder
    is inherently being a jerk

    View full-size slide

  59. !
    Scheduling a meeting is
    inherently evil

    View full-size slide

  60. !
    Chat has transcripts

    View full-size slide

  61. !
    Chat exposes process

    View full-size slide

  62. * Meet Hubot

    View full-size slide

  63. !
    + Continuous Integration (CI)

    View full-size slide

  64. + Continuous Integration (CI)

    View full-size slide

  65. , Build Status

    View full-size slide

  66. ‣ ~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…

    View full-size slide

  67. !
    Nothing gets deployed
    unless tests are green

    View full-size slide

  68. ⚡ Doing it live

    View full-size slide

  69. Meanwhile, back at the pull request…

    View full-size slide

  70. !
    githubengineering.com/deploying-branches-to-github-com

    View full-size slide

  71. " 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

    View full-size slide

  72. !
    Who’s doing this?

    View full-size slide

  73. !
    20,000+ government users

    View full-size slide

  74. !
    1,000+ government organizations

    View full-size slide

  75. !
    100+ UK government orgs

    View full-size slide

  76. !
    What about the private sector?

    View full-size slide

  77. Startups
    twitter.github.io
    yelp.github.io

    View full-size slide

  78. netflix.github.io
    adobe.github.io

    View full-size slide

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

    View full-size slide

  80. !
    To summarize…

    View full-size slide

  81. !
    1. Transparency can save you 

    from the tyranny of process

    View full-size slide

  82. !
    2. Prefer systems that inherently

    capture and expose process

    View full-size slide

  83. !
    3. Minimize friction

    View full-size slide

  84. !
    Open source behind the firewall
    What government can learn from startups and the open source community
    @benbalter
    government.github.com
    [email protected]

    View full-size slide

  85. A typical deployment flow
    Development Staging Production

    View full-size slide

  86. GitHub's 1 flow
    Development Staging Production
    Development
    Development Staging
    Staging

    View full-size slide

  87. 2 Branch Labs

    View full-size slide

  88. ‣ Trash can — https://www.flickr.com/photos/dcmetroblogger/
    191721958/
    ‣ Rubbish Bin - http://anonw.com/2013/02/08/more-bins-are-
    appearing-on-the-underground/

    View full-size slide