Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

BRANDON KEEPERS @bkeepers • [email protected]

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

" @bkeepers • #ATO2015 TRANSPARENCY "

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

" @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

Slide 8

Slide 8 text

" @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

Slide 9

Slide 9 text

" @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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

" @bkeepers • #ATO2015 THE MEDIUM IS ASYNCHRONOUS

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

" @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

Slide 17

Slide 17 text

" @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 :

Slide 18

Slide 18 text

" @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 :

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

" @bkeepers • #ATO2015 PARTICIPATION $

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

" @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

Slide 26

Slide 26 text

" @bkeepers • #ATO2015 AUTOMATE REVIEW

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

" @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

Slide 32

Slide 32 text

" @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

Slide 33

Slide 33 text

" @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

Slide 34

Slide 34 text

" @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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

" @bkeepers • #ATO2015 COLLABORATION #

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

" @bkeepers • #ATO2015 AVOID BLOCKING

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

" @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

Slide 47

Slide 47 text

" @bkeepers • #ATO2015 WORK EXPOSES PROCESS

Slide 48

Slide 48 text

" @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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

" @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

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

" @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

Slide 54

Slide 54 text

" @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

Slide 55

Slide 55 text

" @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

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

" @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

Slide 58

Slide 58 text

THANK YOU Brandon Keepers [email protected]