Forking Encouraged Folk Programming, Open Source, and Social - - PowerPoint PPT Presentation

forking encouraged
SMART_READER_LITE
LIVE PREVIEW

Forking Encouraged Folk Programming, Open Source, and Social - - PowerPoint PPT Presentation

Forking Encouraged Folk Programming, Open Source, and Social Software Development Kirrily Robert Yoz Grahame Linden Lab Jason Douglas Metaweb (creators of Second Life) (creators of Freebase) How to contribute code to an open source


slide-1
SLIDE 1

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)

slide-2
SLIDE 2

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
slide-3
SLIDE 3

REDUCE FRICTION

Please, for the sake of your project:

slide-4
SLIDE 4

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
slide-5
SLIDE 5

Folk Programming is...

  • The social life of code
  • How it breeds, travels and evolves
  • ... especially amongst non-programmers

beginning

slide-6
SLIDE 6

Less like this...

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

slide-7
SLIDE 7

... more like this

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

slide-8
SLIDE 8

(it’s not a new analogy)

slide-9
SLIDE 9
slide-10
SLIDE 10

Consumption

slide-11
SLIDE 11

Consumption

slide-12
SLIDE 12

Minor Alteration

slide-13
SLIDE 13

Confirmation

slide-14
SLIDE 14

Experimentation (pt 1)

slide-15
SLIDE 15

Safe Failure

slide-16
SLIDE 16

Investigation (pt 2)

slide-17
SLIDE 17

Innovation

slide-18
SLIDE 18

Cargo cult programming is not a problem

(yet)

slide-19
SLIDE 19
slide-20
SLIDE 20

WAR ON DAUNT

slide-21
SLIDE 21
slide-22
SLIDE 22

Folk Computing: Revisiting Oral Tradition as a Scaffold for Co-Present Communities

Rick 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)

slide-23
SLIDE 23

3.15 inches

  • 128KB Flash
  • 48x32 pixels
  • 1-channel

sound

  • Replaceable

batteries

  • 45 grams
slide-24
SLIDE 24

The i-ball editor

slide-25
SLIDE 25
slide-26
SLIDE 26

'

Sjors ’ s squest Eli ’s them Sangjun ’ s hquest Sangjun ’s hquest Sjors ’s squest Jason ’s Ultraq#4 Eli ’s lukas Bryce ’ s UltraQs t Sjors ’ s squest Eli ’ s hquest Jason ’ s squest T i m ’s m & m s T i m ’ s m & m s Eli ’ s hquest Ziwei ’s freed Sangjun ’ s hquest Sjors ’ s squest Jhuana ’s hquest Reva ’ s hquest Sacia ’ s squest Caleb ’ s hquest T i m ’ s m & m s John ’s A Quest Kush ’s Kquest Julian ’ s hquest broken-VMU ’ s hquest Z i w e i ’s hquest Natercia ’ s Jutin Bryce ’ s UltraQst Akiana ’s hquest Helen ’s hquest Najma ’s hquest Kush ’s hquest Jhuana ’ s hquest Eli ’ s hquest Reva ’ s hquest Yuxin ’s hquest A m y ’s brain q. broken-VMU ’ s hquest Philippa ’s hquest Kush ’ s Kquest broken-VMU ’ s hquest Helen ’ s hquest broken-VMU ’s hquest Philippa ’s hquest T i m ’ s m & m s Joel ’ s hquest Najma ’ s hquest Sacia ’ s squest Kush ’ s Kquest Alex ’ s hquest Helen ’ s hquest C a m a r a ’ s hquest Natercia ’ s Jutin Leia ’ s hquest broken-VMU ’ s hquest Natasha ’s hquest Natalie ’s hquest Susanna ’ s hquest Z i w e i ’ s hquest Alejandra ’ s Super Q Kush ’ s hquest Eric ’s hquest Helen ’ s hquest Z i w e i ’s fre e T i m ’ s 1470 Philippa ’s so fin e Phakamile ’ s hquest broken-VMU ’ s hquest Lukas ’ s my qest Eli ’s hquest Sjors ’s hquest Fekadu ’ s Sports Yuxin ’ s hquest Caleb ’s hquest Reva ’s hquest broken-VMU ’s hquest Joel ’ s hquest Fekadu ’s Sports Helen ’ s hquest Natercia ’ s Jutin broken-VMU ’ s hquest Yuxin ’ s hquest Alex ’ s hquest Sjors ’ s hquest Reva ’ s hquest Natercia ’s Jutin broken-VMU ’s hquest Reva ’ s hquest Sacia ’s squest Sacia ’ s squest Reva ’ s hquest Fekadu ’ s Sports Helen ’ s hquest Najma ’s hquest Julian ’ s hquest broken-VMU ’s hquest Gilberto ’ s hquest C a m a r a ’s hquest Z i w e i ’ s hquest Natasha ’s hquest Jason ’ s alex Q Reva ’ s hquest Natasha ’s hquest Sacia ’ s squest Billy ’ s hquest Yuxin ’ s hquest broken-VMU ’ s hquest Fekadu ’ s Sports Akiana ’ s adventur A m y ’s brain q. Akiana ’ s female s Philippa ’s hquest Reva ’s hquest Alex ’ s hquest Helen ’s hquest John ’s hquest Matt ’ s hquest Adelina ’s hquest Fekadu ’ s Sports Reva ’ s hquest Amanda ’ s hquest Jhuana ’ s hquest Najma ’ s hquest Jhuana ’s hquest Helen ’ s hquest Leandra ’ s hquest Alex ’ s alex Q Najma ’ s hquest Philippa ’s hquest Julian ’ s build Sjors ’ s hquest Philippa ’ s so fin e Fekadu ’ s hquest Ziwei ’ s hquest broken-VMU ’ s hquest Jhuana ’ s hquest Jhuana ’ s hquest John ’ s hquest Lillian ’s hquest Natasha ’s hquest Helen ’ s hquest Leia ’ s kewlques Kush ’s Kquest Jason ’ s alex Q Helen ’ s hquest Reva ’ s hquest Sacia ’ s squest Philippa ’s hquest Eli ’ s hquest Fekadu ’ s hquest Helen ’ s hquest Natasha ’ s hquest Joel ’ s hquest Fekadu ’ s hquest Dara ’s D a r a J Helen ’ s hquest broken-VMU ’ s hquest Philippa ’s hquest Fekadu ’s Sports Kush ’ s Kquest broken-VMU ’ s hquest Eric ’ s hquest Philippa ’s hquest John ’ s Aquest Kush ’s Kquest Kush ’ s Kquest Sjors ’s hquest Z i w e i ’s hquest Alex ’ s hquest broken-VMU ’ s hquest broken-VMU ’ s hquest Lukas ’ s hquest Yuxin ’ s hquest Helen ’s hquest Sjors ’ s hquest Jarvis ’ s hquest Fekadu ’s Sports Reva ’ s hquest Helen ’s hquest Graham ’s 9 Eric ’ s hquest Noah ’ s hquest Jhuana ’ s hquest Kush ’ s kquest Najma ’s hquest Joel ’ s hquest broken-VMU ’ s hquest A m y ’s ghost q. Lia ’s Lia Q Fekadu ’s hquest Mackendy ’ s hquest Yuxin ’ s hquest Kush ’s hquest Leia ’ s hquest Ziwei ’s hquest Jarvis ’s J Q U E S T Dara ’ s D a r a Q Jhuana ’s hquest Kush ’ s Kquest A m y ’s brain q. Natercia ’s Jutin Lukas ’ s my qest Fekadu ’s hquest Sacia ’s hquest Natasha ’ s hquest A m y ’ s brain q. Halima ’s hquest Leia ’s hquest broken-VMU ’ s hquest Noah ’ s hquest Natercia ’ s Jutin Lia ’ s Lia Q Jhuana ’s hquest Fekadu ’s Sports Dara ’ s D a r a t Fekadu ’s Sports Eric ’s hquest Fekadu ’s Sports Fekadu ’ s Sports Fekadu ’ s Sports Eric ’ s hquest Fekadu ’ s Sports Blake ’ s D a r a t Jarvis ’s J Q U E S T Noah ’ s sexy Jesse ’ s J E S S E Q Jesse ’ s J E S S E Q Jesse ’ s J E S S E Q Jesse ’ s J E S S E Q Jesse ’s J E S S E Q Jesse ’s J E S S E Q

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

slide-27
SLIDE 27

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

slide-28
SLIDE 28

LambdaMOO

> exam rube Rube 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

  • n 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 contraption Rosy_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 screen A 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.

slide-29
SLIDE 29
slide-30
SLIDE 30
slide-31
SLIDE 31
slide-32
SLIDE 32
slide-33
SLIDE 33

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
slide-34
SLIDE 34

The Server’d Gentry

slide-35
SLIDE 35

… begat…

slide-36
SLIDE 36

We like: Easy! Social! ... but we want: Features! Ownership! Control!

slide-37
SLIDE 37
slide-38
SLIDE 38
slide-39
SLIDE 39

Cloning on Ning

slide-40
SLIDE 40

P a c k a g i n g Distribution Installation

Cloning

Developer User

slide-41
SLIDE 41

The Child App

slide-42
SLIDE 42

Timeliner

slide-43
SLIDE 43

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
slide-44
SLIDE 44
slide-45
SLIDE 45

Folk programming = more people in your project

slide-46
SLIDE 46

Cloning.

slide-47
SLIDE 47

Forking.

slide-48
SLIDE 48

FLOSS licenses

  • View the code
  • Modify the code
  • Redistribute the

code

slide-49
SLIDE 49

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

slide-50
SLIDE 50
slide-51
SLIDE 51
slide-52
SLIDE 52

Hosted?

slide-53
SLIDE 53

Hosted?

Source code Dev platform

Distribution

slide-54
SLIDE 54

Hosted?

Source code Dev platform

Distribution

mailing lists bug tracker wiki website

slide-55
SLIDE 55

Hosted?

Source code Dev platform

Distribution

mailing lists bug tracker wiki website

slide-56
SLIDE 56
slide-57
SLIDE 57

Hosted dev environments?

  • Google App Engine
  • EC2
  • Dreamwidth Dreamhack
  • Heroku, Kodingen, Reasonably

Smart...

slide-58
SLIDE 58

Google App Engine

slide-59
SLIDE 59

Google App Engine

  • Free (no cost)
  • Python or Java
  • Run your apps on Google’s

infrastructure

slide-60
SLIDE 60

Google App Engine

  • Free (no cost)
  • Python or Java
  • Run your apps on Google’s

infrastructure

  • BUT... code them on your own
slide-61
SLIDE 61

Amazon EC2

  • Servers on demand
  • Pre-configured
  • Low cost (not quite free)
  • Any language
slide-62
SLIDE 62

Dreamhack

  • Single project (Dreamwidth)
  • Shared server
  • Pre-configured
  • Free
slide-63
SLIDE 63

But can you clone it?

slide-64
SLIDE 64

But can you clone it?

slide-65
SLIDE 65

But can you clone it?

slide-66
SLIDE 66

Huge array of diverse data sources

Proximity Queryability Openness

slide-67
SLIDE 67

Proximity

Low High

slide-68
SLIDE 68

Proximity

  • in memory

Low High

slide-69
SLIDE 69

Proximity

  • in memory
  • local key/value store

Low High

slide-70
SLIDE 70

Proximity

  • in memory
  • local key/value store
  • nearby database server

Low High

slide-71
SLIDE 71

Proximity

  • in memory
  • local key/value store
  • nearby database server
  • web API

Low High

slide-72
SLIDE 72

Openness

Low High

slide-73
SLIDE 73

Openness

  • US Govt public domain data

Low High

slide-74
SLIDE 74

Openness

  • US Govt public domain data
  • Creative Commons

Low High

slide-75
SLIDE 75

Openness

  • US Govt public domain data
  • Creative Commons
  • Friendly TOS

Low High

slide-76
SLIDE 76

Openness

  • US Govt public domain data
  • Creative Commons
  • Friendly TOS
  • Unfriendly TOS

Low High

slide-77
SLIDE 77

Queryability

Low High

slide-78
SLIDE 78

Queryability

  • scanned, non-OCR documents

Low High

slide-79
SLIDE 79

Queryability

  • scanned, non-OCR documents
  • text documents

Low High

slide-80
SLIDE 80

Queryability

  • scanned, non-OCR documents
  • text documents
  • structured data

Low High

slide-81
SLIDE 81

Queryability

  • scanned, non-OCR documents
  • text documents
  • structured data
  • well-structured data

Low High

slide-82
SLIDE 82

Key points

  • FLOSS license
  • Easy cloning
  • Free, hosted development platform
  • Huge array of readily-accessed data
slide-83
SLIDE 83

FLOSS Cloning Hosted Data Github Y Y N N App Engine ? N Y Y Amazon EC2 ? N Y Y Dreamwidth Y N Y N

slide-84
SLIDE 84
slide-85
SLIDE 85
  • Openly licensed database
  • ~120M facts about 6.2M topics
  • Anyone can edit... including schema
  • Open API
slide-86
SLIDE 86

Open Code for Open Data

http://freebaseapps.com

slide-87
SLIDE 87

*.freebaseapps.com

slide-88
SLIDE 88
slide-89
SLIDE 89

Open Code

slide-90
SLIDE 90

Sharing Code

slide-91
SLIDE 91

Sharing Code

slide-92
SLIDE 92

Sharing Code

slide-93
SLIDE 93

Sharing Code

slide-94
SLIDE 94

Sharing Code

slide-95
SLIDE 95

Sharing Code

slide-96
SLIDE 96

Examples

slide-97
SLIDE 97

Data Games

slide-98
SLIDE 98

Data Games

slide-99
SLIDE 99

Data Games

slide-100
SLIDE 100

Data Games

slide-101
SLIDE 101

Data Games

slide-102
SLIDE 102

Data Games

slide-103
SLIDE 103

Data Games

slide-104
SLIDE 104

Social Apps

slide-105
SLIDE 105

Social Apps

slide-106
SLIDE 106

Social Apps

slide-107
SLIDE 107

Social Apps

slide-108
SLIDE 108

Social Apps

slide-109
SLIDE 109

Lessons Learned

slide-110
SLIDE 110

Reduced Friction = Increased Collaboration

slide-111
SLIDE 111

Collaboration → Dependencies

  • What happened? (diff, audit trail)
  • Undo the damage (revert)
slide-112
SLIDE 112

Collaboration → Dependencies

  • What happened? (diff, audit trail)
  • Undo the damage (revert)
slide-113
SLIDE 113

Collaboration → Dependencies

  • What happened? (diff, audit trail)
  • Undo the damage (revert)
  • Don’t break me! (versioning)
slide-114
SLIDE 114

is this the future?

slide-115
SLIDE 115

we need better Web-based tools

slide-116
SLIDE 116

CodeMirror

http://marijn.haverbeke.nl/codemirror/

jsdifflib

slide-117
SLIDE 117

Editors

slide-118
SLIDE 118

Debugging

slide-119
SLIDE 119

Collaboration

slide-120
SLIDE 120
  • Source Control

Collaboration

slide-121
SLIDE 121
  • Source Control
  • Diff/Merge

Collaboration

slide-122
SLIDE 122
  • Source Control
  • Diff/Merge
  • Collaborative Editing

Collaboration

slide-123
SLIDE 123
slide-124
SLIDE 124

let’s make it happen

slide-125
SLIDE 125

Thanks very much!

  • Find our slides on the OSCON site (later)
  • Kirrily Robert: kirrily@metaweb.com
  • Yoz Grahame: yoz@lindenlab.com
  • Jason Douglas: jason@metaweb.com