Pro Yearly is on sale from $80 to $50! »

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.

20bfe76b3d6105641f879fe45cfc9272?s=128

Brandon Keepers

October 19, 2015
Tweet

Transcript

  1. OPEN SOURCE PRINCIPLES FOR INT E RNA L E NG

    IN EER IN G TEA MS
  2. BRANDON KEEPERS @bkeepers • bkeepers@github.com

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

  4. " @bkeepers • #ATO2015 TRANSPARENCY "

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

  6. " @bkeepers • #ATO2015 BUT, THE SOURCE CODE IS AN

    ARTIFACT OF A PRODUCTION PROCESS
  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
  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
  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
  10. " @bkeepers • #ATO2015 THE MEDIUM IS ELECTRONIC * +

    ' ISSUE TRACKER VERSION CONTROL MAILING LIST ) CHAT
  11. " @bkeepers • #ATO2015 THE MEDIUM IS ASYNCHRONOUS

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

  13. " @bkeepers • #ATO2015 THE MESSAGE IS ARCHIVED * +

    ' ISSUE HISTORY VERSION HISTORY LIST ARCHIVE ) CHAT LOG
  14. " @bkeepers • #ATO2015 S EA RC H: “ HA

    D O OP @ GI T HU B ”
  15. " @bkeepers • #ATO2015 @YOU RC O M PA NY

    / EM P LOY E ES
  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
  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 :
  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 :
  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.
  20. " @bkeepers • #ATO2015 PARTICIPATION $

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

  22. " @bkeepers • #ATO2015 friction |ˈfrikSHən| noun the amount of

    time that elapses between “I want to contribute”, and “I have contributed”.
  23. " @bkeepers • #ATO2015 A massive stack of information does

    not magically enable people to participate.
  24. " @bkeepers • #ATO2015 DI ST I LL K N

    O WL E D GE . # README.md CONTRIBUTING.md
  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
  26. " @bkeepers • #ATO2015 AUTOMATE REVIEW

  27. " @bkeepers • #ATO2015 CON TI NUO U S I

    N T EGRAT I O N
  28. " @bkeepers • #ATO2015 WHAT ELSE CAN YOU AUTOMATE?

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

    M / BLO G
  30. " @bkeepers • #ATO2015 RE VIE WI NG B LO

    G P O ST S
  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
  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
  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
  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
  35. " @bkeepers • #ATO2015 AUTOMATION ENABLES REVIEWERS TO FOCUS ON

    SUBSTANCE
  36. " @bkeepers • #ATO2015 COLLABORATION #

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

  38. " @bkeepers • #ATO2015 AVOID BLOCKING

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

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

    FEATURE YOUR FEATURE MASTER
  41. " @bkeepers • #ATO2015 P UL L REQ U E

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

    ST S 2 3 1 2 3 1 3 1 STABLE STABLE
  43. " @bkeepers • #ATO2015 PUT UNSTABLE CHANGES BEHIND FEATURE FLAGS

  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
  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!
  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
  47. " @bkeepers • #ATO2015 WORK EXPOSES PROCESS

  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
  49. " @bkeepers • #ATO2015 / 0 LEARN BY LURKING TEACH

    BY DOING
  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
  51. " @bkeepers • #ATO2015 $ # ! TRANSPARENCY PARTICIPATION COLLABORATION

    enables enables
  52. " @bkeepers • #ATO2015 Prefer tools that inherently capture information

    and expose process. Document knowledge in prose or, preferably, code.
  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
  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
  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
  56. " @bkeepers • #ATO2015 Ryan Tomayko bit.ly/oss-team ADOPTING OPEN SOURCE

    PROCESS CONSTRAINTS Ben Balter @benbalter ben.balter.com
  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
  58. THANK YOU Brandon Keepers bkeepers@github.com