Slide 1

Slide 1 text

Rebooting Open Source
 at Facebook JAMES PEARCE
 @jamespearce

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

USE SCALE IMPROVE REPLACE RELEASE

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

#0
 Articulate the value that
 open source brings your company

Slide 8

Slide 8 text

Open source is like 
 the breeze from 
 an open window

Slide 9

Slide 9 text

But…

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

USE SCALE IMPROVE RELEASE REPLACE

Slide 16

Slide 16 text

#1
 Use your own open source

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

#2
 Decentralize project ownership

Slide 19

Slide 19 text

What projects did we own? Who was contributing to them? How healthy were they?

Slide 20

Slide 20 text

https://api.github.com/orgs/facebook/

Slide 21

Slide 21 text

Every repo Every commit Every pull request Every issue

Slide 22

Slide 22 text

[opensource]>  select  
                            name,  followers,  forks,  commits,  issues,  pull_requests  
                            from  github_repos  order  by  created_at  limit  10;
 +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |  name                        |  followers  |  forks  |  commits  |  issues  |  pull_requests  |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+   |  memcached              |              323  |        53  |          209  |            1  |                          0  |   |  three20                  |            7429  |    1521  |        1680  |        200  |                          0  |   |  platform                |              146  |        31  |          310  |            2  |                          0  |   |  bunny1                    |                43  |        15  |            10  |            0  |                          0  |   |  phpembed                |              132  |        26  |            31  |            1  |                          0  |   |  codemod                  |              309  |        49  |            13  |            9  |                          3  |   |  animation              |                  0  |          0  |              0  |            1  |                          0  |   |  scribe                    |            2572  |      469  |          117  |          59  |                        11  |   |  firefox-­‐toolbar  |                93  |        50  |          532  |          10  |                          0  |   |  cassandra              |              205  |        27  |          189  |            0  |                          0  |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+

Slide 23

Slide 23 text

Every repo Every commit Every pull request Every issue Every minute

Slide 24

Slide 24 text

#3
 Invest in instrumentation

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

• commits made per day • commits made per day by repo • issue average age • issue average age by repo • issue total age • issue total age by repo • issues closed per day • issues closed per day by repo • issues open • issues open by repo • issues opened per day • issues opened per day by repo • pull request average age • pull request average age by repo • pull request total age • pull request total age by repo • pull requests closed per day • pull requests closed per day by repo • pull requests open • pull requests open by repo • pull requests opened per day • pull requests opened per day by repo • total commits • total commits by owner • total commits by repo • total forks • total forks by owner • total forks by repo • total repos • total repos by owner • total repos by tag • total watchers • total watchers by owner • total watchers by repo

Slide 27

Slide 27 text

Average followers per repo
 Average forks per repo Average pull-request age
 Average issue age External commits

Slide 28

Slide 28 text

#4
 Invest in tools

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

#5
 Establish ownership

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

#6
 Gamification of good behavior

Slide 37

Slide 37 text

No content

Slide 38

Slide 38 text

1. How core to Facebook's business is this technology? 2. Who will use it? Who is this technology useful to? How valuable is it? 3. What else already exists that is similar to this technology? 4. Is there anything novel in this project? 5. Does it include any third-party code, including any third-party open source? 6. Who will maintain the project, accept contributions, and liaise with the community? 7. Where & how should this project be distributed? 8. What is your expected public release date?

Slide 39

Slide 39 text

1. How core to Facebook's business is this technology? 2. Who will use it? Who is this technology useful to? How valuable is it? 3. What else already exists that is similar to this technology? 4. Is there anything novel in this project? 5. Does it include any third-party code, including any third-party open source? 6. Who will maintain the project, accept contributions, and liaise with the community? 7. Where & how should this project be distributed? 8. What is your expected public release date?

Slide 40

Slide 40 text

No content

Slide 41

Slide 41 text

No content

Slide 42

Slide 42 text

No content

Slide 43

Slide 43 text

#7
 Launch is step zero

Slide 44

Slide 44 text

kvocontroller 0" 1000" 2000" 3000" 4000" 5000" 6000" 7000" 8000" 0" 10" 20" 30" 40" 50" 60"

Slide 45

Slide 45 text

0" 1000" 2000" 3000" 4000" 5000" 6000" 7000" 8000" 0" 10" 20" 30" 40" 50" 60" fb-flo origami

Slide 46

Slide 46 text

0" 1000" 2000" 3000" 4000" 5000" 6000" 7000" 8000" 0" 10" 20" 30" 40" 50" 60" chisel tweaks shimmer kvocontroller

Slide 47

Slide 47 text

0" 1000" 2000" 3000" 4000" 5000" 6000" 7000" 8000" 0" 10" 20" 30" 40" 50" 60" pop

Slide 48

Slide 48 text

“ If Facebook keep this level of quality open source release up much longer then soon I'll need to forgive them for Three20 ” - iOS Dev Weekly

Slide 49

Slide 49 text

No content

Slide 50

Slide 50 text

• IRC channel • Facebook Page/Group • Mailing lists • Regular blog posts • Meetups • Hackathons

Slide 51

Slide 51 text

No content

Slide 52

Slide 52 text

#8
 Leave breadcrumbs

Slide 53

Slide 53 text

Snapshot Upstream Fly the nest Deprecate Reboot OPEN SOURCE PROJECTS

Slide 54

Slide 54 text

#9
 Understand projects’ lifecycles

Slide 55

Slide 55 text

No content

Slide 56

Slide 56 text

Metrics • Total repos • Followers • Forks • Pull-requests • Issues • Commits June 2013 129 50.1k 11.8k 1,400 (502 days) 404 (323 days) 30.7k July 2014 202 97.6k 20.7k 1,973 (208 days) 427 (186 days) 42.4k

Slide 57

Slide 57 text

No content

Slide 58

Slide 58 text

#10
 Be open and connected

Slide 59

Slide 59 text

JAMES PEARCE
 @jamespearce