+ All Categories
Home > Technology > Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Date post: 12-Nov-2014
Category:
Upload: alex-bayley
View: 4,584 times
Download: 5 times
Share this document with a friend
Description:
The term "Folk Computing" was coined 20+ years ago to describe how people learn to program by copying and experimentation. Learn how open source licenses, hosted development environments, and other folk programming concepts lower barriers to entry and help people get up to speed as coders. We'll also be showing off some modern folk programming platforms, from Yahoo Pipes to the OLPC and beyond.
125
Forking Encouraged Folk Programming, Open Source, and Social Software Development Kirrily Robert Jason Douglas Metaweb (creators of Freebase) Yoz Grahame Linden Lab (creators of Second Life)
Transcript
Page 1: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Forking EncouragedFolk Programming, Open Source, and Social Software Development

Kirrily RobertJason Douglas

Metaweb(creators of Freebase)

Yoz GrahameLinden Lab

(creators of Second Life)

Page 2: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

How to contribute code to an open source project• Identify something

to fix• Find the repository• Install new trendy

source control tool• Check out

repository• Find build

instructions• Install the right

build tools• Build attempt #1• Install missing

dependencies• Build attempt #2• Install more missing

dependencies

• Build attempt #3• Something’s wrong

with the makefile• Who the hell

understands make anyway?

• Google• Find and apply

makefile fix• Build attempt #9• WORKING APP!• Search source for

bug• Read API docs• Fathom API docs• Create fix• Test fix

• Enjoy fix• Create patch• Submit patch• Wait for patch

merge to trunk• Wait some more• Snark about

maintainer• Start nagging• Meanwhile, build on

fix, make more patches

• Provide own tarballs

• Multiple anguished flamewars

• Fork

Page 3: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

REDUCE FRICTION

Please, for the sake of your project:

Page 4: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

How to contribute code to an open source project• Identify something

to fix• Find the repository• Install new trendy

source control tool• Check out

repository• Find build

instructions• Install the right

build tools• Build attempt #1• Install missing

dependencies• Build attempt #2• Install more missing

dependencies

• Build attempt #3• Something’s wrong

with the makefile• Who the hell

understands make anyway?

• Google• Find and apply

makefile fix• Build attempt #9• WORKING APP!• Search source for

bug• Read API docs• Fathom API docs• Create fix• Test fix

• Enjoy fix• Create patch• Submit patch• Wait for patch

merge to trunk• Wait some more• Snark about

maintainer• Start nagging• Meanwhile, build on

fix, make more patches

• Provide own tarballs

• Multiple anguished flamewars

• Fork

Page 5: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Folk Programming is...

• The social life of code

• How it breeds, travels and evolves

• ... especially amongst non-programmersbeginning

Page 6: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Less like this...

http://flickr.com/photos/timsamoff/316400866/

Page 7: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

... more like this

http://flickr.com/photos/brighterworlds/301705464/

Page 8: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

(it’s not a new analogy)

Page 9: Forking Encouraged: Folk Programming, Open Source, and Social Software Development
Page 10: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Consumption

Page 11: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Consumption

Page 12: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Minor Alteration

Page 13: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Confirmation

Page 14: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Experimentation (pt 1)

Page 15: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Safe Failure

Page 16: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Investigation (pt 2)

Page 17: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Innovation

Page 18: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Cargo cult programming is not a problem

(yet)

Page 19: Forking Encouraged: Folk Programming, Open Source, and Social Software Development
Page 20: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

WARON

DAUNT

Page 21: Forking Encouraged: Folk Programming, Open Source, and Social Software Development
Page 22: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Folk Computing: Revisiting Oral Tradition as

a Scaffold for Co-Present CommunitiesRick Borovoy, Brian Silverman, Tim Gorton, Jeff Klann, Matt Notowidigdo, Brian Knep and Mitchel Resnick

MIT Media Lab, 2000

SIGCHI’01, March 31-April 4, 2001

http://llk.media.mit.edu/papers/folk-computing.pdf(or just type “folk computing” into your favourite

search engine)

Page 23: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

3.15 inches

• 128KB Flash

• 48x32 pixels

• 1-channel sound

• Replaceable batteries

• 45 grams

Page 24: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

The i-ball editor

Page 25: Forking Encouraged: Folk Programming, Open Source, and Social Software Development
Page 26: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

!"#$#!%&$' ()#$*+,-' #' ./#,&0' #,*' %"&,' 1#+%' 2)$' %"&' 34&$' %)'

!),,&!%' 1+%"' #,)%"&$' +54)!6&%7' 8%' %"#%' .)+,%0' %"&' .$)-$#9'

:39.4');&$'%)'%"&',&1'+54)!6&%0'*&/&%&4'+%4&/2'2$)9'%"&')/*'+5

4)!6&%0' #,*' !),%+,3&4' &<&!3%+,-' #2%&$' %"&' :39.' (/)!67' ' =%'

+99&*+#%&/>' "+%4' #' ?$&4%#$%@' (/)!60' !#34+,-' %"&' 1")/&'

.$)-$#9'%)'$&.&#%'),'%"&',&1'+54)!6&%7''

A)9.3%#%+),#//>0' ?:39.@' +4' #' ;&$>' !)9./&<' ).&$#%+),7'

B&4+-,+,-' +%' #4' #' .$+9+%+;&' /&%' !"+/*$&,' !),4%$3!%' 9#,>'

6+,*4')2'+5(#//'.#44+,-'-#9&4'1+%"'$&/#%+;&'&#4&7''

Designing for Conservatism and Dynamism C)&/6&,'!#//4'!),4&$;#%+49'#,*'*>,#9+49'?%"&'%1+,'/#14')2'

2)/6/)$&'.$)!&44@'#,*'4#>4' %"#%'?!),4%#,%'!"#,-&0';#$+#%+),'

1+%"+,' #' %$#*+%+),' D+4E' #' !&,%$#/' 2#!%' )2' /+2&' 2)$' 2)/6/)$&@'

FGHIHJ7''

K&' 1#,%&*' %)' 43..)$%' %"&' 6+,*' )2' ?;#$+#%+),' 1+%"+,' #'

%$#*+%+),@'%"#%'),&'1+%,&44&4'+,'43!"'2)/6'-#9&4'#4'L#$(/&4'

)$'C#-7'C"+4'9&#,%'%"#%'.&)./&'4")3/*'(&'#(/&'%)'*)!6'%"&+$'

+54)!6&%'%)'#'MA0').&,'3.'#,'+5(#//'%"&>'1&$&'.#44&*'1")4&'

23,!%+),#/+%>'%"&>'#*9+$&*0' %+,6&$'#$)3,*'1+%"'%"&'.$)-$#9'

+,'%"&'+5(#//'&*+%)$0'#,*'%"&,'4#;&'%"+4'9)*+2+&*';&$4+),'(#!6'

%)'%"&+$' +54)!6&%7'K&'+9#-+,&*'%"+4'1)3/*'&,#(/&'.&)./&'%)'

&#4+/>'9#6&';#$+#%+),4')2'.).3/#$' +5(#//4'1+%")3%'"#;+,-' %)'

3,*&$4%#,*' %"&+$' 1)$6+,-4' &,)3-"' %)' $&(3+/*' %"&9' 2$)9'

4!$#%!"7'

B3&' %)' #' *&4+-,' %$#*&5)220' 1&' 1&$&' ,)%' #(/&' %)' -&%' %"+4'

?93%#%+),@' 43..)$%' +9./&9&,%&*' 2)$' %"&' 2+$4%' +5(#//'

!),2&$&,!&'%$+#/7'A)993,+!#%+),'(&%1&&,'%1)'!),,&!%&*'+5

4)!6&%4' %3$,&*')3%' %)'(&'2#+$/>'4/)17'K&'/+9+%&*'+5(#//'4+N&'

%)' OGP' (>%&4' %)' &,43$&' +5(#//4' !)3/*' (&' .#44&*' Q3+!6/>'

&,)3-"' %)' 6&&.' .#44+,-' -#9&4' /+;&/>' #,*' %)' 6&&.' +5(#//'

&<!"#,-&4' 4.),%#,&)347' C"&' OGP5(>%&' /+9+%#%+),' #/$&#*>'

!),4%$#+,&*' %"&' #9)3,%' )2' #,+9#%+),' #,*' (&"#;+)$#/'

!)9./&<+%>'&#!"'+5(#//'!)3/*'&<"+(+%7'L#6+,-'#,'+5(#//'?*&5

!)9.+/#(/&@' R' #(/&' %)' (&' 3./)#*&*' 2$)9' #,' +54)!6&%' #,*'

$&4%)$&*' %)' 34&$5&*+%#(/&' 2)$9' R' 1)3/*' "#;&' $&Q3+$&*'

4#!$+2+!+,-' 9)$&' +5(#//' &<.$&44+;&,&44' +,' %"&' 4&$;+!&' )2'

(#!6-$)3,*'./39(+,-7''

S+,!&'1&'!)3/*',)%'43..)$%'93%#%+),0'1&')22&$&*' +,4%&#*'#'

4&%')2'&*+%#(/&'4#9./&'+5(#//4'2)$'.&)./&'%)'34&'%)'-&%'4%#$%&*7''

T)1&;&$0' 3.),' $&;+&1' )2' #//' %"&' +5(#//4' #3%")$&*' #%' %"&'

!),2&$&,!&0'1&'1&$&'3,"#..>'1+%"'%"&'#9)3,%')2'+,2/3&,!&'

%"&4&' 4)9&1"#%' #$(+%$#$+/>' !")4&,' +5(#//4' "#*7' C"+4' $+46&*'

.3%%+,-'34'+,';+)/#%+),')2'#,)%"&$'6&>'2)/6/)$&'$&Q3+$&9&,%U'

1"#%'!),4%+%3%&4'/&-+%+9#%&'2)/6/)$&'*)&4',)%'-&%'*&%&$9+,&*'

(>'4)9&'!&,%$#/'#3%")$+%>'FV$+,-0'GHWXJ7''

82%&$'+9./&9&,%+,-'1")/&',&1'!/+&,%54&$;&$'#$!"+%&!%3$&'2)$'

%"&'+5(#//'&*+%)$40'1&'43!!&4423//>'#**&*'93%#%+),'!#.#(+/+%>'

2)$' %"&' 4&!),*' +5(#//' %$+#/' #%' %"&'Y5W' 4!"))/7'Z)10'1"&,'#'

4%3*&,%'#%'#'MA'4&/&!%&*'#,'+5(#//'),'%"&+$'+54)!6&%'%)'&*+%0'#'

!).>' )2' %"&' 3,!)9.+/&*' 4)3$!&' !)*&' 1#4' %$#,4.#$&,%/>'

3./)#*&*'2$)9'#'!&,%$#/'4&$;&$7'C"+4'9&#,%' %"#%'&*+%#(/&' +5

(#//' 4)3$!&' !)*&' *+*' ,)%' !),439&' #,>' )2' %"&' .$&!+)34' +5

4)!6&%'%)'+54)!6&%'!)993,+!#%+),'(#,*1+*%"7''

8%'%"&'4!"))/0'9)$&'%"#,'),&'%"+$*')2'#//'+5(#//4'!$&#%&*'1&$&'

93%#%+),4' )2' )%"&$' #/$&#*>5&<+4%+,-' +5(#//40' 43--&4%+,-' %"#%'

%"+4' !#.#(+/+%>' 1#4' 34&23/7' S)9&' +5(#//4' +,4.+$&*' 93/%+./&'

-&,&$#%+),4')2'93%#%+),47'[+-3$&'X'4")14'#';+43#/+N#%+),')2'

")1'),&'+5(#//'93%#%&*0'1"&$&'%"&')$+-+,#/'+4'+,'%"&'!&,%&$0'

%"&'93%#%+),4'),'+%'#$&'+,'%"&'43$$)3,*+,-'$+,-0'93%#%+),4'),'

93%#%+),4'#$&'+,'%"&',&<%'$+,-0'#,*'4)'),7''

\/%+9#%&/>0' %"&$&'1&$&'HW'*+22&$&,%' +5(#//4' %"#%'"#*'#%' /&#4%'

),&'93%#%+),'),'%"&9'1"&$&'4)9&),&')%"&$'%"#,'%"&'+5(#//]4'

)$+-+,#/'#3%")$'34&*'%"#%'+5(#//'#4'%"&'(#4+4'2)$'#',&1'),&')2'

"+4' )$' "&$' )1,7' C"&4&' +5(#//4' 1&$&' 93!"' 9)$&' ,39&$)34'

%"#,'%"&'"#/25*)N&,'4#9./&'+5(#//4'.&)./&'34&*'+,'%"&'+,+%+#/'

%$+#/0' %"&>'$&.$&4&,%&*'#'($)#*&$'$#,-&')2'#3%")$40'#,*'%"&>'

1&$&' .#$%' )2' #,' ).&,' 4>4%&9' 1"&$&' #,>),&' #%' #,>' %+9&'

*3$+,-' %"&' %$+#/' !)3/*' !$&#%&' #,' +,2/3&,%+#/' +5(#//' ),'1"+!"'

9#,>'.&)./&'9#*&';#$+#,%47'C"+4'1#4'9)$&'+,'6&&.+,-'1+%"'

%"&'*&!&,%$#/+N&*',#%3$&')2'2)/6/)$&7''

'

Sjors ’ ssquest

Eli ’sthem

Sangjun ’ shquest

Sangjun ’s

hquest Sjors ’ssquestJason ’s

Ultraq#4

Eli ’slukas

Bryce ’ sUltraQs t

Sjors ’ ssquest Eli ’ s

hquestJason ’ s

squest

T i m ’s

m & m s

T i m ’ sm & m s

Eli ’ shquest

Ziwei ’sfreed

Sangjun ’ shquest Sjors ’ s

squestJhuana ’s

hquestReva ’ shquest

Sacia ’ s

squestCaleb ’ shquestT i m ’ s

m & m s

John ’s

A QuestKush ’s

KquestJulian ’ shquest broken-VMU ’ s

hquestZ i w e i ’shquest Natercia ’ s

JutinBryce ’ s

UltraQstAkiana ’s

hquestHelen ’shquest

Najma ’s

hquestKush ’shquest

Jhuana ’ shquest Eli ’ s

hquestReva ’ shquest Yuxin ’s

hquestA m y ’sbrain q.

broken-VMU ’ shquest Philippa ’s

hquestKush ’ sKquest

broken-VMU ’ shquest

Helen ’ s

hquestbroken-VMU ’s

hquestPhilippa ’s

hquestT i m ’ s

m & m sJoel ’ shquestNajma ’ s

hquestSacia ’ ssquest

Kush ’ sKquest

Alex ’ shquest

Helen ’ shquest

C a m a r a ’ s

hquestNatercia ’ s

JutinLeia ’ shquest

broken-VMU ’ shquest

Natasha ’s

hquestNatalie ’shquest

Susanna ’ shquest

Z i w e i ’ shquest

Alejandra ’ sSuper QKush ’ s

hquest Eric ’shquestHelen ’ s

hquestZ i w e i ’s

fre eT i m ’ s

1470Philippa ’s

so fin e Phakamile ’ s

hquestbroken-VMU ’ s

hquestLukas ’ smy qest

Eli ’shquest

Sjors ’shquest Fekadu ’ s

SportsYuxin ’ s

hquestCaleb ’shquest

Reva ’shquest

broken-VMU ’shquest

Joel ’ shquest

Fekadu ’sSports

Helen ’ shquest

Natercia ’ sJutin

broken-VMU ’ shquest

Yuxin ’ shquest

Alex ’ shquest

Sjors ’ shquest

Reva ’ s

hquestNatercia ’sJutin

broken-VMU ’shquest

Reva ’ shquestSacia ’s

squestSacia ’ ssquestReva ’ s

hquestFekadu ’ s

SportsHelen ’ shquest

Najma ’shquest

Julian ’ s

hquestbroken-VMU ’s

hquestGilberto ’ s

hquestC a m a r a ’shquest

Z i w e i ’ shquest

Natasha ’shquest

Jason ’ salex Q

Reva ’ shquest

Natasha ’shquest

Sacia ’ ssquest Billy ’ s

hquestYuxin ’ s

hquestbroken-VMU ’ s

hquestFekadu ’ sSports

Akiana ’ sadventurA m y ’s

brain q.Akiana ’ sfemale s

Philippa ’shquest

Reva ’shquest

Alex ’ shquest

Helen ’shquest

John ’shquest

Matt ’ shquest

Adelina ’s

hquestFekadu ’ s

SportsReva ’ shquest

Amanda ’ shquest

Jhuana ’ shquest

Najma ’ shquest

Jhuana ’shquestHelen ’ s

hquestLeandra ’ s

hquestAlex ’ salex Q

Najma ’ shquest

Philippa ’s

hquestJulian ’ s

buildSjors ’ shquest

Philippa ’ sso fin eFekadu ’ s

hquestZiwei ’ s

hquest

broken-VMU ’ s

hquestJhuana ’ s

hquestJhuana ’ s

hquestJohn ’ shquest

Lillian ’shquest Natasha ’s

hquestHelen ’ shquest

Leia ’ skewlques

Kush ’s

KquestJason ’ salex Q

Helen ’ s

hquestReva ’ s

hquestSacia ’ ssquest

Philippa ’shquest

Eli ’ s

hquestFekadu ’ s

hquest Helen ’ shquest Natasha ’ s

hquest

Joel ’ s

hquestFekadu ’ s

hquest Dara ’sD a r a J

Helen ’ shquest broken-VMU ’ s

hquestPhilippa ’s

hquestFekadu ’s

SportsKush ’ sKquest

broken-VMU ’ s

hquestEric ’ s

hquestPhilippa ’s

hquestJohn ’ sAquest

Kush ’sKquest

Kush ’ sKquest

Sjors ’shquest

Z i w e i ’s

hquestAlex ’ s

hquestbroken-VMU ’ shquest

broken-VMU ’ shquest Lukas ’ s

hquestYuxin ’ s

hquestHelen ’shquest

Sjors ’ s

hquestJarvis ’ shquest

Fekadu ’sSports

Reva ’ shquest

Helen ’shquest Graham ’s

9Eric ’ s

hquestNoah ’ shquestJhuana ’ s

hquestKush ’ s

kquestNajma ’shquest

Joel ’ shquest

broken-VMU ’ shquest

A m y ’sghost q.

Lia ’sLia QFekadu ’s

hquestMackendy ’ s

hquest Yuxin ’ shquest

Kush ’shquest

Leia ’ shquest

Ziwei ’shquest Jarvis ’s

J Q U E S TDara ’ sD a r a QJhuana ’s

hquestKush ’ sKquest

A m y ’s

brain q.Natercia ’s

JutinLukas ’ smy qest

Fekadu ’shquest

Sacia ’s

hquestNatasha ’ s

hquestA m y ’ s

brain q.Halima ’s

hquestLeia ’s

hquest broken-VMU ’ shquest

Noah ’ shquest

Natercia ’ sJutin

Lia ’ sLia Q

Jhuana ’s

hquestFekadu ’s

SportsDara ’ sD a r a t

Fekadu ’sSports

Eric ’s

hquest

Fekadu ’sSports

Fekadu ’ sSports

Fekadu ’ s

Sports

Eric ’ shquest

Fekadu ’ sSports

Blake ’ s

D a r a t

Jarvis ’sJ Q U E S T

Noah ’ ssexy

Jesse ’ sJ E S S E Q

Jesse ’ s

J E S S E Q

Jesse ’ sJ E S S E Q

Jesse ’ sJ E S S E Q Jesse ’s

J E S S E QJesse ’s

J E S S E Q '

'

!"#$%&'()'*$+,+"-.'/"0$,1"2,+"-.'-3',.'4.31$&.+",1'456,11'

78&&'9-1-%':1,+&'-.':,#&';;;<'

Adding New Dimensions to Folklore C"&' .$&;+)34' 4&!%+),' 2)!34&*' ),' )3$' &22)$%4' %)' .$&4&$;&' %"&'

4#/+&,%' 2&#%3$&4')2' 2)/6/)$&' +,')3$' +5(#//'*&4+-,7'C"+4' 4&!%+),'

2)!34&4'),' %1)',&1'!#.#(+/+%+&40' %$#!6+,-'#,*'!)9.3%#%+),#/'

#-&,!>0' 1"+!"' 1&' *&4+-,&*' +,%)' %"&' +5(#//4' +,' #,' &22)$%' %)'

&,"#,!&' %"&+$' &22&!%+;&,&44' #4' #' 9&*+39' 2)$' !)993,+%>'

(3+/*+,-7''

Tracking and Social X-Rays L#,>' 2)/6/)$&' 4!")/#$4' #$&' +,%&$&4%&*' +,' %"&' $)/&' 2)/6/)$&'

./#>4' +,' &*3!#%+,-' 9&9(&$4' )2' +%4' !)993,+%>0' )$' ?2)/6'

-$)3.7@'K&'#$&'.#$%+!3/#$/>'+,%&$&4%&*'+,'%"&'$)/&'2)/6/)$&'!#,'

./#>' +,' &*3!#%+,-' #' !)993,+%>' #()3%' %"&' !)993,+%>7' 84'

C)&/6&,' 4#>4' ?),&' )2' %"&' 6&>' 2&#%3$&4' )2' #' 2)/6' -$)3.'1+//'

#/1#>4'(&' %"&'&<%&,%' %)'1"+!"' +%4')1,'*>,#9+!4'!),%+,3&' %)'

+,2)$9' #,*' &*3!#%&' +%4' 9&9(&$4' #,*' 4%#(+/+N&' %"&' -$)3.@'

FGHIHJ7' K&' (&/+&;&' %"#%0' 34+,-' %&!",)/)->0' 1&' !#,'

4+-,+2+!#,%/>' +9.$);&' %"&' &<%&,%' %)' 1"+!"' #' 2)/6' -$)3.]4'

*>,#9+!4'!#,'+,2)$9'#,*'&*3!#%&'+%4'9&9(&$47''

^+6&' *>&' %"#%' +4' +,:&!%&*' +,%)' #' ;&+,' +,' )$*&$' %)' $&;&#/' %"&'

+,%&$,#/'4%$3!%3$&4')2'),&]4'()*>'),'#,'<5$#>0'%"&'+5(#//4'1&$&'

*&4+-,&*' #4' 6+,*' )2' *>&' %"#%' 2/)14' %"$)3-"' #' -$)3.' #,*'

Page 27: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

What are the easy waysto create, run and share code today?

Page 28: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

LambdaMOO> exam rubeRube Goldberg contraption (aka #6498, Rube Goldberg contraption, Rube Goldberg, and contraption)Owned by Aladdin.An incredibly complicated contraption. There is a lever on one side. A sign on the other side says "To run contraption, 'pull lever on contraption'; to add parts to contraption, first 'enter contraption'"Obvious verbs: en*ter rube g*et/t*ake rube d*rop/th*row rube pull <anything> on rube> pull lever on contraptionRosy_Guest pulls down the handle on Rube Goldberg contraption.The lever pulls on a string, releasing a steel ball high up.The ball enters a maze of passages.Somewhere deep inside, the ball hits a switch with an audible click.A large television comes to life, showing re-runs of "Gunsmoke."The sheriff's bullets fly out of the screenA Kung Fu master catches them in his teeeth.The subtitles read "I should've ordered glutinous rice chicken!"He spits out the bullets, which fly toward poor Mel Torme.Sorrow drifts over the land for the death of Mel Torme....and now for something completely different...A gigantic puffball bursts, filling the air with spores.A hush falls over the contraption; everything has stopped.A horde of monkeys runs all over the contraption, setting everything back sort of the way it was.

Page 29: Forking Encouraged: Folk Programming, Open Source, and Social Software Development
Page 30: Forking Encouraged: Folk Programming, Open Source, and Social Software Development
Page 31: Forking Encouraged: Folk Programming, Open Source, and Social Software Development
Page 32: Forking Encouraged: Folk Programming, Open Source, and Social Software Development
Page 33: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

What’s the power here?

1. Create your own code

2. View, clone and modify someone else’s code

3. Free, always-on, ubiquitous hosting

4. Huge array of diverse data sources/objects

5. Code creates new data for use by others

Page 34: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

The Server’d Gentry

Page 36: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

We like:

Easy!

Social!

... but we want:

Features!

Ownership!

Control!

Page 37: Forking Encouraged: Folk Programming, Open Source, and Social Software Development
Page 38: Forking Encouraged: Folk Programming, Open Source, and Social Software Development
Page 39: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Cloning on Ning

Page 40: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Packaging

Distribution

Insta

llatio

n

CloningDeveloper User

Page 41: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

The Child App

Page 42: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Timeliner

Page 43: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

What makes this possible?

• Create your own code

• View, clone and modify someone else’s code

• Free, always-on, ubiquitous hosting

• Huge array of diverse data sources/objects

• Code creates new data for use by others

Page 44: Forking Encouraged: Folk Programming, Open Source, and Social Software Development
Page 45: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Folk programming =

more people in your project

Page 46: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Cloning.

Page 47: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Forking.

Page 48: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

FLOSS licenses

• View the code

• Modify the code

• Redistribute the code

Page 49: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

There is strong social pressure against forking projects. It does

not happen except under plea of dire necessity, with much public self-justification, and requires a

renaming.Eric S. Raymond, Homesteading the Noosphere

Page 50: Forking Encouraged: Folk Programming, Open Source, and Social Software Development
Page 51: Forking Encouraged: Folk Programming, Open Source, and Social Software Development
Page 52: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Hosted?

Page 53: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Hosted?Source code

Devplatform

Distribution

Page 54: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Hosted?Source code

Devplatform

Distribution

mailinglists

bug tracker

wiki

website

Page 55: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Hosted?Source code

Devplatform

Distribution

mailinglists

bug tracker

wiki

website

Page 56: Forking Encouraged: Folk Programming, Open Source, and Social Software Development
Page 57: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Hosted dev environments?

• Google App Engine

• EC2

• Dreamwidth Dreamhack

• Heroku, Kodingen, Reasonably Smart...

Page 58: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Google App Engine

Page 59: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Google App Engine

• Free (no cost)

• Python or Java

• Run your apps on Google’s infrastructure

Page 60: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Google App Engine

• Free (no cost)

• Python or Java

• Run your apps on Google’s infrastructure

• BUT... code them on your own

Page 61: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Amazon EC2

• Servers on demand

• Pre-configured

• Low cost (not quite free)

• Any language

Page 62: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Dreamhack

• Single project (Dreamwidth)

• Shared server

• Pre-configured

• Free

Page 63: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

But can you clone it?

Page 64: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

But can you clone it?

Page 65: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

But can you clone it?

Page 66: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Huge array of diverse data sources

Proximity

Queryability

Openness

Page 67: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Proximity

Low

High

Page 68: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Proximity

• in memory

Low

High

Page 69: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Proximity

• in memory

• local key/value store

Low

High

Page 70: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Proximity

• in memory

• local key/value store

• nearby database server

Low

High

Page 71: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Proximity

• in memory

• local key/value store

• nearby database server

• web API

Low

High

Page 72: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Openness

Low

High

Page 73: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Openness

• US Govt public domain data

Low

High

Page 74: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Openness

• US Govt public domain data

• Creative Commons

Low

High

Page 75: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Openness

• US Govt public domain data

• Creative Commons

• Friendly TOS

Low

High

Page 76: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Openness

• US Govt public domain data

• Creative Commons

• Friendly TOS

• Unfriendly TOS

Low

High

Page 77: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

QueryabilityLow

High

Page 78: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Queryability

• scanned, non-OCR documents

Low

High

Page 79: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Queryability

• scanned, non-OCR documents

• text documents

Low

High

Page 80: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Queryability

• scanned, non-OCR documents

• text documents

• structured data

Low

High

Page 81: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Queryability

• scanned, non-OCR documents

• text documents

• structured data

• well-structured data

Low

High

Page 82: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Key points

• FLOSS license

• Easy cloning

• Free, hosted development platform

• Huge array of readily-accessed data

Page 83: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

FLOSS Cloning Hosted Data

Github Y Y N N

App Engine ? N Y Y

Amazon EC2 ? N Y Y

Dreamwidth Y N Y N

Page 84: Forking Encouraged: Folk Programming, Open Source, and Social Software Development
Page 85: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

• Openly licensed database

• ~120M facts about 6.2M topics

• Anyone can edit... including schema

• Open API

Page 86: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Open Code for Open Data

http://freebaseapps.com

Page 87: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

*.freebaseapps.com

Page 88: Forking Encouraged: Folk Programming, Open Source, and Social Software Development
Page 89: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Open Code

Page 90: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Sharing Code

Page 91: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Sharing Code

Page 92: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Sharing Code

Page 93: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Sharing Code

Page 94: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Sharing Code

Page 95: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Sharing Code

Page 96: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Examples

Page 97: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Data Games

Page 98: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Data Games

Page 99: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Data Games

Page 100: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Data Games

Page 101: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Data Games

Page 102: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Data Games

Page 103: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Data Games

Page 104: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Social Apps

Page 105: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Social Apps

Page 106: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Social Apps

Page 107: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Social Apps

Page 108: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Social Apps

Page 109: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Lessons Learned

Page 110: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Reduced Friction =Increased Collaboration

Page 111: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Collaboration → Dependencies

• What happened? (diff, audit trail)

• Undo the damage (revert)

Page 112: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Collaboration → Dependencies

• What happened? (diff, audit trail)

• Undo the damage (revert)

Page 113: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Collaboration → Dependencies

• What happened? (diff, audit trail)

• Undo the damage (revert)

• Don’t break me! (versioning)

Page 114: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

is this the future?

Page 115: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

we need betterWeb-based tools

Page 117: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Editors

Page 118: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Debugging

Page 119: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Collaboration

Page 120: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

• Source Control

Collaboration

Page 121: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

• Source Control

• Diff/Merge

Collaboration

Page 122: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

• Source Control

• Diff/Merge

• Collaborative Editing

Collaboration

Page 123: Forking Encouraged: Folk Programming, Open Source, and Social Software Development
Page 124: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

let’s make it happen

Page 125: Forking Encouraged: Folk Programming, Open Source, and Social Software Development

Thanks very much!

• Find our slides on the OSCON site (later)

• Kirrily Robert: [email protected]

• Yoz Grahame: [email protected]

• Jason Douglas: [email protected]


Recommended