Upload
all-things-open
View
320
Download
0
Embed Size (px)
Citation preview
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
BRANDON KEEPERS@bkeepers • [email protected]
" @bkeepers • #ATO2015
$
#
! TRANSPARENCY
PARTICIPATION
COLLABORATION
" @bkeepers • #ATO2015
TRANSPARENCY"
" @bkeepers • #ATO2015
OBVIOUSLY, THE SOURCE CODE IS
OPEN
" @bkeepers • #ATO2015
BUT, THE SOURCE CODE IS
AN ARTIFACTOF A PRODUCTION PROCESS
" @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
" @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
" @bkeepers • #ATO2015
THE MEDIUM IS
* LOCK-FREE) ASYNCHRONOUS' ELECTRONIC
( ARCHIVEDTHE MESSAGE IS
OP
EN
SO
UR
CE
CO
MM
UN
ICA
TIO
N
" @bkeepers • #ATO2015
THE MEDIUM IS
ELECTRONIC* + '
ISSUE TRACKER
VERSION CONTROL
MAILING LIST
)
CHAT
" @bkeepers • #ATO2015
THE MEDIUM IS
ASYNCHRONOUS
" @bkeepers • #ATO2015
THE MEDIUM IS
LOCK-FREE
" @bkeepers • #ATO2015
THE MESSAGE IS
ARCHIVED* + '
ISSUE HISTORY
VERSION HISTORY
LIST ARCHIVE
)
CHAT LOG
" @bkeepers • #ATO2015
S E A R C H : “ H A D O O P @ G I T H U B ”
" @bkeepers • #ATO2015
@ Y O U R C O M PA N Y / E M P L O Y E E S
" @bkeepers • #ATO2015
THE MEDIUM IS
* LOCK-FREE) ASYNCHRONOUS' ELECTRONIC
( ARCHIVEDTHE MESSAGE IS
OP
EN
SO
UR
CE
CO
MM
UN
ICA
TIO
N
" @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 :
" @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 :
" @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.
" @bkeepers • #ATO2015
PARTICIPATION$
" @bkeepers • #ATO2015
-
, MINIMIZE FRICTION
AUTOMATE REVIEW
" @bkeepers • #ATO2015
friction |ˈfrikSHən|
noun the amount of time that elapses between “I want to contribute”, and “I have contributed”.
" @bkeepers • #ATO2015
A massive stack of information does not magically enable people to participate.
" @bkeepers • #ATO2015
D I S T I L L K N O W L E D G E
. #
README.md CONTRIBUTING.md
" @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
" @bkeepers • #ATO2015
AUTOMATE
REVIEW
" @bkeepers • #ATO2015
C O N T I N U O U S I N T E G R AT I O N
" @bkeepers • #ATO2015
WHAT ELSE CAN YOU
AUTOMATE?
" @bkeepers • #ATO2015
E . G . G I T H U B . C O M / B L O G
" @bkeepers • #ATO2015
R E V I E W I N G B L O G P O S T S
" @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
" @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
" @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
" @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
" @bkeepers • #ATO2015
AUTOMATION ENABLES REVIEWERS TO
FOCUS ON SUBSTANCE
" @bkeepers • #ATO2015
COLLABORATION#
" @bkeepers • #ATO2015
/
0 AVOID BLOCKING
EXPOSE PROCESS
" @bkeepers • #ATO2015
AVOID BLOCKING
" @bkeepers • #ATO2015
B R A N C H E S
1 11
MASTER
MY FEATURE
" @bkeepers • #ATO2015
B R A N C H E S
1 11 MY FEATURE
YOUR FEATURE
MASTER
" @bkeepers • #ATO2015
P U L L R E Q U E S T S
2 31 2 31 31
REVIEW WORK REVIEW
" @bkeepers • #ATO2015
P U L L R E Q U E S T S
2 31 2 31 31
STABLESTABLE
" @bkeepers • #ATO2015
PUT UNSTABLE CHANGES BEHIND
FEATURE FLAGS
" @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
" @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 !
" @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
" @bkeepers • #ATO2015
WORK EXPOSES PROCESS
" @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
" @bkeepers • #ATO2015
/
0 LEARN BY LURKING
TEACH BY DOING
" @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
" @bkeepers • #ATO2015
$
#
! TRANSPARENCY
PARTICIPATION
COLLABORATION
enables
enables
" @bkeepers • #ATO2015
Prefer tools that inherently capture information and expose process.
Document knowledge in prose or, preferably, code.
" @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
" @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
" @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
" @bkeepers • #ATO2015
Ryan Tomaykobit.ly/oss-team
ADOPTING OPEN SOURCE PROCESS CONSTRAINTS
Ben Balter@benbalter ben.balter.com
" @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
THANK YOUBrandon Keepers [email protected]