58
OPEN SOURCE PRINCIPLES FOR INTERNAL ENGINEERING TEAMS

Open Source Principles for Internal Engineering Teams

Embed Size (px)

Citation preview

Page 1: Open Source Principles for Internal Engineering Teams

OPEN SOURCE PRINCIPLESF O R I N T E R N A L E N G I N E E R I N G T E A M S

Page 2: Open Source Principles for Internal Engineering Teams

BRANDON KEEPERS@bkeepers • [email protected]

Page 3: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

$

#

! TRANSPARENCY

PARTICIPATION

COLLABORATION

Page 4: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

TRANSPARENCY"

Page 5: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

OBVIOUSLY, THE SOURCE CODE IS

OPEN

Page 6: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

BUT, THE SOURCE CODE IS

AN ARTIFACTOF A PRODUCTION PROCESS

Page 7: Open Source Principles for Internal Engineering Teams

" @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 Conwaymelconway.com/research/committees.html

CONWAY’S LAW

Page 8: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

C O M M U N I T I E S A R E D I S T R I B U T E D A C R O S S :

& % %

GEOGRAPHY TIMEZONE CULTURE

Page 9: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

THE MEDIUM IS

* LOCK-FREE) ASYNCHRONOUS' ELECTRONIC

( ARCHIVEDTHE MESSAGE IS

OP

EN

SO

UR

CE

CO

MM

UN

ICA

TIO

N

Page 10: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

THE MEDIUM IS

ELECTRONIC* + '

ISSUE TRACKER

VERSION CONTROL

MAILING LIST

)

CHAT

Page 11: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

THE MEDIUM IS

ASYNCHRONOUS

Page 12: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

THE MEDIUM IS

LOCK-FREE

Page 13: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

THE MESSAGE IS

ARCHIVED* + '

ISSUE HISTORY

VERSION HISTORY

LIST ARCHIVE

)

CHAT LOG

Page 14: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

S E A R C H : “ H A D O O P @ G I T H U B ”

Page 15: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

@ Y O U R C O M PA N Y / E M P L O Y E E S

Page 16: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

THE MEDIUM IS

* LOCK-FREE) ASYNCHRONOUS' ELECTRONIC

( ARCHIVEDTHE MESSAGE IS

OP

EN

SO

UR

CE

CO

MM

UN

ICA

TIO

N

Page 17: Open Source Principles for Internal Engineering Teams

" @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 C E N A R I O 1 :

Page 18: Open Source Principles for Internal Engineering Teams

" @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 C E N A R I O 2 :

Page 19: Open Source Principles for Internal Engineering Teams

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

Page 20: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

PARTICIPATION$

Page 21: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

-

, MINIMIZE FRICTION

AUTOMATE REVIEW

Page 22: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

friction |ˈfrikSHən|

noun the amount of time that elapses between “I want to contribute”, and “I have contributed”.

Page 23: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

A massive stack of information does not magically enable people to participate.

Page 24: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

D I S T I L L K N O W L E D G E

. #

README.md CONTRIBUTING.md

Page 25: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

S C R I P T S T O R U L E T H E M A L L

$ script/bootstrap

$ script/server

$ script/test

B O O T S T R A P

R U N

T E S T

Page 26: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

AUTOMATE

REVIEW

Page 27: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

C O N T I N U O U S I N T E G R AT I O N

Page 28: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

WHAT ELSE CAN YOU

AUTOMATE?

Page 29: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

E . G . G I T H U B . C O M / B L O G

Page 30: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

R E V I E W I N G B L O G P O S T S

Page 31: Open Source Principles for Internal Engineering Teams

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

R E V I E W I N G B L O G P O S T S

Page 32: Open Source Principles for Internal Engineering Teams

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

R E V I E W I N G B L O G P O S T S

Page 33: Open Source Principles for Internal Engineering Teams

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

R E V I E W I N G B L O G P O S T S

Page 34: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

PEDANTIC ROBOTSw e a re m o re re ce p t i v e to fe e d ba c k

PEDANTIC PEOPLE

from

… a n d r o b o t s a r e m o r e r e l i a b l e …

than

Page 35: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

AUTOMATION ENABLES REVIEWERS TO

FOCUS ON SUBSTANCE

Page 36: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

COLLABORATION#

Page 37: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

/

0 AVOID BLOCKING

EXPOSE PROCESS

Page 38: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

AVOID BLOCKING

Page 39: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

B R A N C H E S

1 11

MASTER

MY FEATURE

Page 40: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

B R A N C H E S

1 11 MY FEATURE

YOUR FEATURE

MASTER

Page 41: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

P U L L R E Q U E S T S

2 31 2 31 31

REVIEW WORK REVIEW

Page 42: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

P U L L R E Q U E S T S

2 31 2 31 31

STABLESTABLE

Page 43: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

PUT UNSTABLE CHANGES BEHIND

FEATURE FLAGS

Page 44: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

function isFeatureEnabled(user) { return user.isInGroup("early-access");}

// ...

if(isFeatureEnabled(user)) { // unstable code} else { // stable code}

F E AT U R E F L A G S

Page 45: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

function isFeatureEnabled(user) {— return user.isInGroup(“early-access");+ return true;}

// ...

if(isFeatureEnabled(user)) { // unstable code} else { // stable code

L A U N C H D AY !

Page 46: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

science "some-feature" do |e| e.use { old_code } e.try { new_code } end# returns the control value

G I T H U B / S C I E N C E

Page 47: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

WORK EXPOSES PROCESS

Page 48: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

E V E R Y T H I N G H A S A U R L

2 31 2 31 31 URL

URL

URL URLURLURL URLURLURL URL

Page 49: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

/

0 LEARN BY LURKING

TEACH BY DOING

Page 50: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

“By placing tools directly in the middle of the conversation,

everyone is pairing, all of the time.”

Jesse Newlandspeakerdeck.com/jnewland/chatops-at-github

Page 51: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

$

#

! TRANSPARENCY

PARTICIPATION

COLLABORATION

enables

enables

Page 52: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

Prefer tools that inherently capture information and expose process.

Document knowledge in prose or, preferably, code.

Page 53: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

“We should model our teams and our communication structures

after the architecture we want.”

Jesse TothService Oriented Harmony https://speakerdeck.com/jesseplusplus/service-oriented-harmony

JESSE’S LAW

Page 54: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

4

5

1

O T H E R L E S S O N S O F O P E N S O U R C E

TECHNICALSOCIALECONOMIC

6 POLITICAL

Page 55: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

R E C O M M E N D E D R E A D I N G

The Success of Open Source by Steven Weber

Producing Open Source Software by Karl Fogel – producingoss.com

Page 56: Open Source Principles for Internal Engineering Teams

" @bkeepers • #ATO2015

Ryan Tomaykobit.ly/oss-team

ADOPTING OPEN SOURCE PROCESS CONSTRAINTS

Ben Balter@benbalter ben.balter.com

Page 57: Open Source Principles for Internal Engineering Teams

" @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 WeberThe Success of Open Source

Page 58: Open Source Principles for Internal Engineering Teams

THANK YOUBrandon Keepers [email protected]