Upload
ned-gulley
View
3.611
Download
4
Embed Size (px)
Citation preview
Addictive Collaboration
Patterns of Participation in an Open Programming Contest
Ned GulleyThe MathWorks, Inc.
Competitive Wikipedia
MATLAB Programming Contest:
A week-long open collaborative competition for MATLAB programmers
• Entries are automatically scored, ranked, and displayed immediately
• Code, author, and score are visible at all times
• Anyone can modify anyone else's code and resubmit it as their own
Protein folding
leaders
leaders
1 karim2 carol3 eric karim.
fcn f(x)...
view entry
new entry
ned.fcn f(x)...
1 ned2 karim3 carol4 eric
Doug says:
“I do not understand why anyone would be interested in participating in a contest where a winning idea is immediately co-opted and tweaked by another player.”
Stijn says:
“I started Monday after work. I worked late, let's say 4 or 5 hours. I started to become ‘obsessed’. At home, although I am a father of three children, my full-time job was working on the contest. I didn't sleep much. I worked maybe 10 hours after work each day. On Thursday it was clear that I wasn't going to be able to work seriously (for my job), so I took a day off on Friday.”
“This is my first MATLAB contest and it is giving me far too much enjoyment. It's one of the most addictive things I have tried. The exercise is improving my programming skill, but in return I have backache, a terrible diet, no social life, and not much of a work life either. Also, I have experienced physical trembling while making the final preparations to send a code into the pit. Is that normal?”
Nathan says:
Patterns ofParticipation
Big changes (Leaps)
function f = fb(n)a = [0 1; 1 1]^n;f = a(2);
function f = fb(n)if n > 2 f = fb(n-1) + fb(n-2); else f = 1; end
Generating the nth Fibonacci number: 1, 1, 2, 3, 5, 8, 13, ...
Small changes (Tweaks)
...y = [1 2 3]...
...y = 1:3;...
Better
Time
Wednesday Monday
Score = k1 * (algorithmic result) + k2 * (CPU time)
Punctuatedequilibrium
(the zigzag of innovation)
CPU Time
CostFunction
CostFunction
CPUTime
CostFunction
CPUTime
Collaboration
Code Market Share by Line Count
Schools of thought(clans)
Innovation uptake
First use of
conv
First leader
with conv
Systematic variation(tweak bombs)
Social signaling
• Scrambled Eggs• Rotten Eggs• I didn't start the fire• don't get obfuscated ... follow the light• You Call This Collaboration? Give
Me A Break
• Tweak Tweak Tweak• tweakfest • tweak-o-rama• slippery ground (tweak me)• Seems like everyone's just tweaking• I said to myself not to do this kind of
thing...• Poopdeck Pappy gives in to peer
pressure
• I wish I knew how this works
Phase transitions
novel
conserved
deleted
Line-by-lineAnalysis
History Flow
Knapsack, all
Knapsack, leaders only
Knapsack leaders
Knapsack shortest path
The shortest path
Two views of history
Broad variations
Deep variations
Motivation
Personal gloryor
Collaboration ?
Behavior of a jealous coder
• Last-minute entry• Obfuscation• Spaghetti code• No comments• Sandbagging• Sock puppeting• Combinations
“Behavior” of successful code
• High rank• Time on top• High status
author• Clarity• Elegance• Comments• Novelty
The code wants to propagate!
The coder wants to block code propagation
The essential tension:
For the code • Encourage copying• Highlight changes• Punish complexity• Discourage
obfuscation• Easy tweaking
For the coder • Make participation
easy• Reward vanity• Many cheap prizes• Darkness period• Easy tweaking
Managing the tension:
A chicken is only an egg’s way of making another egg.
A hacker is only code’s way of
making more code.