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

Open Source Principles for Internal Engineering Teams

Open Source Principles for Internal Engineering Teams

"Transparency", "participation", and "collaboration" are considered the core principles of open source. When we talk about applying open source to other realms of society–like government and data–we’re talking bringing transparency to the processes that govern those realms, enabling people to participate in whatever way they can, and giving them the tools and space to collaborate.

This talk examines how our internal engineering teams can learn open source principles from the communication structure of open source communities.

Brandon Keepers

October 19, 2015
Tweet

More Decks by Brandon Keepers

Other Decks in Technology

Transcript

  1. OPEN SOURCE
    PRINCIPLES
    FOR INT E RNA L E NG IN EER IN G TEA MS

    View full-size slide

  2. BRANDON KEEPERS
    @bkeepers • [email protected]

    View full-size slide

  3. " @bkeepers • #ATO2015
    $
    #
    ! TRANSPARENCY
    PARTICIPATION
    COLLABORATION

    View full-size slide

  4. " @bkeepers • #ATO2015
    TRANSPARENCY
    "

    View full-size slide

  5. " @bkeepers • #ATO2015
    OBVIOUSLY, THE SOURCE CODE IS
    OPEN

    View full-size slide

  6. " @bkeepers • #ATO2015
    BUT, THE SOURCE CODE IS
    AN ARTIFACT
    OF A PRODUCTION PROCESS

    View full-size slide

  7. " @bkeepers • #ATO2015
    Any organization that designs a system
    will inevitably produce a design whose
    structure is a copy of the organization's
    communication structure.
    Melvin Conway
    melconway.com/research/committees.html
    CONWAY’S LAW

    View full-size slide

  8. " @bkeepers • #ATO2015
    COM M U NI T I E S A RE DI ST R I B U TE D AC R O SS:
    & % %
    GEOGRAPHY TIMEZONE CULTURE

    View full-size slide

  9. " @bkeepers • #ATO2015
    THE MEDIUM IS
    * LOCK-FREE
    ) ASYNCHRONOUS
    ' ELECTRONIC
    ( ARCHIVED
    THE MESSAGE IS
    O P EN S O URC E COM M U N I CATI O N

    View full-size slide

  10. " @bkeepers • #ATO2015
    THE MEDIUM IS
    ELECTRONIC
    * + '
    ISSUE
    TRACKER
    VERSION
    CONTROL
    MAILING
    LIST
    )
    CHAT

    View full-size slide

  11. " @bkeepers • #ATO2015
    THE MEDIUM IS
    ASYNCHRONOUS

    View full-size slide

  12. " @bkeepers • #ATO2015
    THE MEDIUM IS
    LOCK-FREE

    View full-size slide

  13. " @bkeepers • #ATO2015
    THE MESSAGE IS
    ARCHIVED
    * + '
    ISSUE
    HISTORY
    VERSION
    HISTORY
    LIST
    ARCHIVE
    )
    CHAT
    LOG

    View full-size slide

  14. " @bkeepers • #ATO2015
    S EA RC H: “ HA D O OP @ GI T HU B ”

    View full-size slide

  15. " @bkeepers • #ATO2015
    @YOU RC O M PA NY / EM P LOY E ES

    View full-size slide

  16. " @bkeepers • #ATO2015
    THE MEDIUM IS
    * LOCK-FREE
    ) ASYNCHRONOUS
    ' ELECTRONIC
    ( ARCHIVED
    THE MESSAGE IS
    O P EN S O URC E COM M U N I CATI O N

    View full-size slide

  17. " @bkeepers • #ATO2015
    Jesse: We should do X
    Sam: We tried that a long time ago, it didn’t work.
    Jesse: oh,ok
    [end of discussion]
    S CEN A RI O 1 :

    View full-size slide

  18. " @bkeepers • #ATO2015
    Jesse: We should do X
    Sam: We tried that a long time ago, see
    https://github.com/github/repo/pulls/28483
    […reading…]
    Jesse: interesting. It looks like…
    S CEN A RI O 2 :

    View full-size slide

  19. " @bkeepers • #ATO2015
    Information is exposed to others working
    toward shared goals.
    Work toward a goal is rarely blocked.
    Anyone can participate, regardless of
    geography, timezone, culture, or role.

    View full-size slide

  20. " @bkeepers • #ATO2015
    PARTICIPATION
    $

    View full-size slide

  21. " @bkeepers • #ATO2015
    -
    , MINIMIZE FRICTION
    AUTOMATE REVIEW

    View full-size slide

  22. " @bkeepers • #ATO2015
    friction |ˈfrikSHən|
    noun
    the amount of time that elapses
    between “I want to contribute”,
    and “I have contributed”.

    View full-size slide

  23. " @bkeepers • #ATO2015
    A massive stack of information does not
    magically enable people to participate.

    View full-size slide

  24. " @bkeepers • #ATO2015
    DI ST I LL K N O WL E D GE
    . #
    README.md CONTRIBUTING.md

    View full-size slide

  25. " @bkeepers • #ATO2015
    S CR IP T S TO R U L E T HE M A L L
    $ script/bootstrap
    $ script/server
    $ script/test
    BOOTSTR A P
    R UN
    TE ST

    View full-size slide

  26. " @bkeepers • #ATO2015
    AUTOMATE
    REVIEW

    View full-size slide

  27. " @bkeepers • #ATO2015
    CON TI NUO U S I N T EGRAT I O N

    View full-size slide

  28. " @bkeepers • #ATO2015
    WHAT ELSE CAN YOU
    AUTOMATE?

    View full-size slide

  29. " @bkeepers • #ATO2015
    E .G. GI THU B .CO M / BLO G

    View full-size slide

  30. " @bkeepers • #ATO2015
    RE VIE WI NG B LO G P O ST S

    View full-size slide

  31. " @bkeepers • #ATO2015
    Here are some suggestions on how to write good. Unlike CI in
    other repos, they're just suggestions. Feel free to ignore
    them as you wish. Humans generally know better than robots.
    ------------------------------------------------------------
    In posts/2015-09-00-post-name.md
    =============
    Seating is limited, so please be sure to register early.
    ^^^^^^^^^^
    "is limited" may be passive voice on line 7 at column 179
    RE VIE WI NG B LO G P O ST S

    View full-size slide

  32. " @bkeepers • #ATO2015
    The post should contain more "yous"s than "we"s. See
    https://bit.ly/you-vs-we.
    ------------------------------------------------------------
    All images should be hosted on GitHub. Drag these images
    into an issue comment and use that URL:
    http://i.imgur.com/xYzaBc123.png
    RE VIE WI NG B LO G P O ST S

    View full-size slide

  33. " @bkeepers • #ATO2015
    Huh. It looks like your post is scheduled to go out the
    same day as another post. If you haven't already, please
    check in with @github/blog to see if there isn't a better
    date to ship.
    RE VIE WI NG B LO G P O ST S

    View full-size slide

  34. " @bkeepers • #ATO2015
    PEDANTIC ROBOTS
    we are more receptive to feedback
    PEDANTIC PEOPLE
    from
    … an d rob ot s are mo re re li a ble…
    than

    View full-size slide

  35. " @bkeepers • #ATO2015
    AUTOMATION ENABLES REVIEWERS TO
    FOCUS ON
    SUBSTANCE

    View full-size slide

  36. " @bkeepers • #ATO2015
    COLLABORATION
    #

    View full-size slide

  37. " @bkeepers • #ATO2015
    /
    0 AVOID BLOCKING
    EXPOSE PROCESS

    View full-size slide

  38. " @bkeepers • #ATO2015
    AVOID BLOCKING

    View full-size slide

  39. " @bkeepers • #ATO2015
    BRANC HES
    1 1
    1
    MASTER
    MY FEATURE

    View full-size slide

  40. " @bkeepers • #ATO2015
    BRANC HES
    1 1
    1 MY FEATURE
    YOUR FEATURE
    MASTER

    View full-size slide

  41. " @bkeepers • #ATO2015
    P UL L REQ U E ST S
    2 3
    1 2 3
    1 3
    1
    REVIEW WORK REVIEW

    View full-size slide

  42. " @bkeepers • #ATO2015
    P UL L REQ U E ST S
    2 3
    1 2 3
    1 3
    1
    STABLE
    STABLE

    View full-size slide

  43. " @bkeepers • #ATO2015
    PUT UNSTABLE CHANGES BEHIND
    FEATURE FLAGS

    View full-size slide

  44. " @bkeepers • #ATO2015
    function isFeatureEnabled(user) {
    return user.isInGroup("early-access");
    }
    // ...
    if(isFeatureEnabled(user)) {
    // unstable code
    } else {
    // stable code
    }
    F EAT URE F LAG S

    View full-size slide

  45. " @bkeepers • #ATO2015
    function isFeatureEnabled(user) {
    — return user.isInGroup(“early-access");
    + return true;
    }
    // ...
    if(isFeatureEnabled(user)) {
    // unstable code
    } else {
    // stable code
    L AUN CH DAY!

    View full-size slide

  46. " @bkeepers • #ATO2015
    science "some-feature" do |e|
    e.use { old_code }
    e.try { new_code }
    end
    # returns the control value
    GITH UB / S CI EN CE

    View full-size slide

  47. " @bkeepers • #ATO2015
    WORK
    EXPOSES
    PROCESS

    View full-size slide

  48. " @bkeepers • #ATO2015
    E VE RY THI N G H AS A U R L
    2 3
    1 2 3
    1 3
    1 URL
    URL
    URL URL
    URL
    URL URL
    URL
    URL URL

    View full-size slide

  49. " @bkeepers • #ATO2015
    /
    0 LEARN BY LURKING
    TEACH BY DOING

    View full-size slide

  50. " @bkeepers • #ATO2015
    “By placing tools directly in the
    middle of the conversation,
    everyone is pairing, all of the time.”
    Jesse Newland
    speakerdeck.com/jnewland/chatops-at-github

    View full-size slide

  51. " @bkeepers • #ATO2015
    $
    #
    ! TRANSPARENCY
    PARTICIPATION
    COLLABORATION
    enables
    enables

    View full-size slide

  52. " @bkeepers • #ATO2015
    Prefer tools that inherently capture
    information and expose process.
    Document knowledge in prose
    or, preferably, code.

    View full-size slide

  53. " @bkeepers • #ATO2015
    “We should model our teams and
    our communication structures
    after the architecture we want.”
    Jesse Toth
    Service Oriented Harmony
    https://speakerdeck.com/jesseplusplus/service-oriented-harmony
    JESSE’S LAW

    View full-size slide

  54. " @bkeepers • #ATO2015
    4
    5
    1
    OTHE R LE S S O N S O F O P EN S O U R C E
    TECHNICAL
    SOCIAL
    ECONOMIC
    6 POLITICAL

    View full-size slide

  55. " @bkeepers • #ATO2015
    RE COM ME N DE D REA DI N G
    The Success of Open Source
    by Steven Weber
    Producing Open Source Software
    by Karl Fogel – producingoss.com

    View full-size slide

  56. " @bkeepers • #ATO2015
    Ryan Tomayko
    bit.ly/oss-team
    ADOPTING OPEN SOURCE
    PROCESS CONSTRAINTS
    Ben Balter
    @benbalter
    ben.balter.com

    View full-size slide

  57. " @bkeepers • #ATO2015
    “The steam engine was the metal behind the first
    industrial revolution; but the revolution was a set of
    ideas about organizing factories, limited liability
    corporations, trade unions, and daily newspapers.”
    Steven Weber
    The Success of Open Source

    View full-size slide

  58. THANK YOU
    Brandon Keepers
    [email protected]

    View full-size slide