Rebooting Open Source at Facebook

Rebooting Open Source at Facebook

Open source has always been a huge part of Facebook's culture. But in 2013, we rebooted our portfolio and launched a unique suite of internal tools & instrumentation to support hundreds of repos, thousands of engineers, and tens of thousands of contributors. The result? Better-than-ever community adoption - and an open & responsible stewardship, attuned to our ethos of hacking & moving fast.

Video now available; https://www.youtube.com/watch?v=fzL6Zoy_ndk&list=PLb0IAmt7-GS1hdDcokpVp1MBk-IaeaSgP

D7826ab49f74589fcada00cb92e5ede7?s=128

James Pearce

July 23, 2014
Tweet

Transcript

  1. Rebooting Open Source
 at Facebook JAMES PEARCE
 @jamespearce

  2. None
  3. None
  4. None
  5. USE SCALE IMPROVE REPLACE RELEASE

  6. None
  7. #0
 Articulate the value that
 open source brings your company

  8. Open source is like 
 the breeze from 
 an

    open window
  9. But…

  10. None
  11. None
  12. None
  13. None
  14. None
  15. USE SCALE IMPROVE RELEASE REPLACE

  16. #1
 Use your own open source

  17. None
  18. #2
 Decentralize project ownership

  19. What projects did we own? Who was contributing to them?

    How healthy were they?
  20. https://api.github.com/orgs/facebook/

  21. Every repo Every commit Every pull request Every issue

  22. [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  |   +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+
  23. Every repo Every commit Every pull request Every issue Every

    minute
  24. #3
 Invest in instrumentation

  25. None
  26. • 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
  27. Average followers per repo
 Average forks per repo Average pull-request

    age
 Average issue age External commits
  28. #4
 Invest in tools

  29. None
  30. None
  31. None
  32. None
  33. #5
 Establish ownership

  34. None
  35. None
  36. #6
 Gamification of good behavior

  37. None
  38. 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?
  39. 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?
  40. None
  41. None
  42. None
  43. #7
 Launch is step zero

  44. kvocontroller 0" 1000" 2000" 3000" 4000" 5000" 6000" 7000" 8000"

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

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

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

    10" 20" 30" 40" 50" 60" pop
  48. “ 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
  49. None
  50. • IRC channel • Facebook Page/Group • Mailing lists •

    Regular blog posts • Meetups • Hackathons
  51. None
  52. #8
 Leave breadcrumbs

  53. Snapshot Upstream Fly the nest Deprecate Reboot OPEN SOURCE PROJECTS

  54. #9
 Understand projects’ lifecycles

  55. None
  56. 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
  57. None
  58. #10
 Be open and connected

  59. JAMES PEARCE
 @jamespearce