SlideShare a Scribd company logo
Building Better FLOSS
Community Relationships @ FB
DevConf.cz 2017
Phil Dibowitz & Davide Cavalca
Production Engineering: Operating Systems
Facebook
Disclaimer:
Lots of teams at Facebook work with
opensource and are awesome at it!
Who are you two and why do we care?
Agenda
● Open Source at Facebook
● Why do this?
● How do you do this?
● Our journey, via examples!
● Lessons Learned
Open Source @ Facebook
Open Source Team...
● Shepherds projects
● Builds tooling
● Provides guidance/input
Open Source @ Facebook
● Facebook started as a LAMP stack!
● HHVM
● MySQL
● Kernel
Open Source @ Facebook
● Hbase
– Forked early…
– Years later, opensource version:
● halved avg latency
● long tail latency reduced by > 90%
● single server failover times cut dramatically
●
Reduction in long GC pauses
– Now back to upstream – much work later
● Zookeeper
– Similar situation in progress
● Chef
– Have kept up with development and deployment
– Stayed entirely on open source release
– Great results for 4 years...
Open Source @ Facebook
We also develop our own open-source software in the
community...
● Presto
● OSQuery
● React
● RocksDB
● McRouter
● Buck
● Surround360 Processor
Why Build Relationships?
Why? It’s efficient!
● Maintain less internal code
– Less man-hours!
● Be able to contribute code
– Help community
– Share ownership
– Feel good
● More eyeballs (better code)
– More reviews
– More testing
Why? Less waste!
Keeping up with the community means…
● Less time wasted…
– Debugging solved problems
– Filing useless bugs
– Porting fixes around
● Less animosity
Why? Direction!
● Know what’s coming soon (... to a theater near
you)
– Be prepared
– Be part of that discussion
● Influence community direction (eventually)
– Start those discussions!
Why? People!
● Happier internal engineers
● More engaged community
● Better recruiting
● … good relationships are contagious!
How?
Build Social Capital
How? In Person (where possible)
● Conferences
● Meet-ups
● Their office
● Your office
● Wherever!
How? Participation
● Be on mailing lists / in SLACK / on IRC
… and join in the conversation!
● (again) Go to relevant conferences/meetups
● Understand high level project goals
● Understand work flows
How? All the context!
● Listen first to get their context
● Provide your context before large PRs
● Remember: find appropriate medium for the
length and type of conversation
How? Determine speed
● Following “latest”
● What’s right for project?
– Consider their release cadence, dependencies,
development velocity, etc?
● What’s right for the time?
– Consider your resources, deployment cadence, and
rate of contribution you expect to make
How? Finally
Be Honest
Our journey, by example
Common Considerations
● Goal
● Speed
● Size of change
● Previous engagements with the community
A good example: Chef
● We’d already built a relationship with Chef
● … but we had a business relationship too.
● Goal: (initially) scaling, (later) various features
● Speed: custom bleeding edge builds early on… now
quarterly
● Got involved in community events and discussion
● Benefits: IPv6, multipackage, scaling, systemd support
● Also: released various tooling and cookbooks
A place to start: Anaconda
● Goal: Single installer across versions, use newer code
● Flew out to meet
– Started with: how to be good community members
– Ended in hackathon
● Kept in touch in IRC
● Speed: built from master ~monthly
● Benefits: single installer, vastly newer hardware support,
solid IPv6 support, not working in abandoned codebase
Continuing the Journey: systemd
● CentOS 7
● Goal: newer features/code, cgroup2
● Speed: latest release
● Backported (rawhide to CentOS 7) – shared
● Conferences
● Benefits: cgroup2, mkosi, etc.
Other Examples
● initscripts/network-scripts
– IPv6 fixes & features
– Per-device routes
– Re-whitespace
● rpm/yum/dnf
– rpmdb scaling issues
– want to help test at scale
Lessons Learned
● Listen first & understand their context
● Provide your context
● Non-code contributions
Resources
●
Rawhide → CentOS 7 backports
– Github: https://github.com/facebookincubator/rpm-backports
– (RH) Copr: https://copr.fedorainfracloud.org/coprs/jsynacek/systemd-backports-for-centos-7/
●
Kernel blog post
– https://code.facebook.com/posts/938078729581886/improving-the-linux-kernel-with-upstream-contributions/
●
Systemd talk
– https://www.youtube.com/watch?v=LhYd0S3qiMY
● Chef Tooling:
– https://github.com/facebook/taste-tester
– https://github.com/facebook/grocery-delivery
– https://github.com/facebook/chef-cookbooks
●
MySQL: https://github.com/facebook/mysql-5.6/
● HHVM: http://hhvm.com/
●
Presto: https://prestodb.io/
●
RocksDB: http://rocksdb.org/
You’ve got questions?
We’ve got answers!
(maybe)

More Related Content

What's hot

ATO 2014 - So You Think You Know 'Go'? The Go Programming Language
ATO 2014 - So You Think You Know 'Go'? The Go Programming LanguageATO 2014 - So You Think You Know 'Go'? The Go Programming Language
ATO 2014 - So You Think You Know 'Go'? The Go Programming Language
John Potocny
 
Teach yourself Ruby on Rails
Teach yourself Ruby on RailsTeach yourself Ruby on Rails
Teach yourself Ruby on Rails
patrikbona
 
Developing better PHP projects
Developing better PHP projectsDeveloping better PHP projects
Developing better PHP projects
Mohammad Emran Hasan
 
Hacktoberfest - An Open Source Story
Hacktoberfest - An Open Source StoryHacktoberfest - An Open Source Story
Hacktoberfest - An Open Source Story
Johan Thelin
 
Don't Suck at Building Stuff - Mykel Alvis at Puppet Camp Altanta
Don't Suck at Building Stuff  - Mykel Alvis at Puppet Camp AltantaDon't Suck at Building Stuff  - Mykel Alvis at Puppet Camp Altanta
Don't Suck at Building Stuff - Mykel Alvis at Puppet Camp Altanta
Puppet
 
Untangling - fall2017 - week 7
Untangling - fall2017 - week 7Untangling - fall2017 - week 7
Untangling - fall2017 - week 7
Derek Jacoby
 
LibreTime: a web-based automation system for radio - presentation at Ohio Li...
LibreTime:  a web-based automation system for radio - presentation at Ohio Li...LibreTime:  a web-based automation system for radio - presentation at Ohio Li...
LibreTime: a web-based automation system for radio - presentation at Ohio Li...
Robb Ebright
 
5 loaded guns Go hapily aims at your feet
5 loaded guns Go hapily aims at your feet5 loaded guns Go hapily aims at your feet
5 loaded guns Go hapily aims at your feet
Márk Sági-Kazár
 
Enterprise PHP
Enterprise PHPEnterprise PHP
Enterprise PHP
Mohammad Emran Hasan
 
Introduction to GoLang
Introduction to GoLangIntroduction to GoLang
Introduction to GoLang
NVISIA
 
Successful Joomla migrations that don't hurt Search Engine Rankings
Successful Joomla migrations that don't hurt Search Engine RankingsSuccessful Joomla migrations that don't hurt Search Engine Rankings
Successful Joomla migrations that don't hurt Search Engine Rankings
Joomla Day South Africa
 
Intro to web
Intro to webIntro to web
Intro to webzgohr
 
Organizing Your PHP Projects (2010 ConFoo)
Organizing Your PHP Projects (2010 ConFoo)Organizing Your PHP Projects (2010 ConFoo)
Organizing Your PHP Projects (2010 ConFoo)
Paul Jones
 
GoLang Introduction
GoLang IntroductionGoLang Introduction
GoLang Introduction
Spandana Govindgari
 
It is easy contributing to Open Source - ECLIPSE CON 2020
It is easy contributing to Open Source - ECLIPSE CON 2020It is easy contributing to Open Source - ECLIPSE CON 2020
It is easy contributing to Open Source - ECLIPSE CON 2020
César Hernández
 
How to master a programming language: a Golang example"
How to master a programming language: a Golang example"How to master a programming language: a Golang example"
How to master a programming language: a Golang example"
Evan Lin
 
Microservices, the lean way
Microservices, the lean wayMicroservices, the lean way
Microservices, the lean way
Bruno Bossola
 
OSDC 2015: Kris Buytaert | From ConfigManagementSucks to ConfigManagementLove
OSDC 2015: Kris Buytaert | From ConfigManagementSucks to ConfigManagementLoveOSDC 2015: Kris Buytaert | From ConfigManagementSucks to ConfigManagementLove
OSDC 2015: Kris Buytaert | From ConfigManagementSucks to ConfigManagementLove
NETWAYS
 
How I become Go GDE
How I become Go GDEHow I become Go GDE
How I become Go GDE
Evan Lin
 

What's hot (20)

ATO 2014 - So You Think You Know 'Go'? The Go Programming Language
ATO 2014 - So You Think You Know 'Go'? The Go Programming LanguageATO 2014 - So You Think You Know 'Go'? The Go Programming Language
ATO 2014 - So You Think You Know 'Go'? The Go Programming Language
 
Teach yourself Ruby on Rails
Teach yourself Ruby on RailsTeach yourself Ruby on Rails
Teach yourself Ruby on Rails
 
Developing better PHP projects
Developing better PHP projectsDeveloping better PHP projects
Developing better PHP projects
 
Hacktoberfest - An Open Source Story
Hacktoberfest - An Open Source StoryHacktoberfest - An Open Source Story
Hacktoberfest - An Open Source Story
 
Don't Suck at Building Stuff - Mykel Alvis at Puppet Camp Altanta
Don't Suck at Building Stuff  - Mykel Alvis at Puppet Camp AltantaDon't Suck at Building Stuff  - Mykel Alvis at Puppet Camp Altanta
Don't Suck at Building Stuff - Mykel Alvis at Puppet Camp Altanta
 
Perl wants you
Perl wants youPerl wants you
Perl wants you
 
Untangling - fall2017 - week 7
Untangling - fall2017 - week 7Untangling - fall2017 - week 7
Untangling - fall2017 - week 7
 
LibreTime: a web-based automation system for radio - presentation at Ohio Li...
LibreTime:  a web-based automation system for radio - presentation at Ohio Li...LibreTime:  a web-based automation system for radio - presentation at Ohio Li...
LibreTime: a web-based automation system for radio - presentation at Ohio Li...
 
5 loaded guns Go hapily aims at your feet
5 loaded guns Go hapily aims at your feet5 loaded guns Go hapily aims at your feet
5 loaded guns Go hapily aims at your feet
 
Enterprise PHP
Enterprise PHPEnterprise PHP
Enterprise PHP
 
Introduction to GoLang
Introduction to GoLangIntroduction to GoLang
Introduction to GoLang
 
Successful Joomla migrations that don't hurt Search Engine Rankings
Successful Joomla migrations that don't hurt Search Engine RankingsSuccessful Joomla migrations that don't hurt Search Engine Rankings
Successful Joomla migrations that don't hurt Search Engine Rankings
 
Intro to web
Intro to webIntro to web
Intro to web
 
Organizing Your PHP Projects (2010 ConFoo)
Organizing Your PHP Projects (2010 ConFoo)Organizing Your PHP Projects (2010 ConFoo)
Organizing Your PHP Projects (2010 ConFoo)
 
GoLang Introduction
GoLang IntroductionGoLang Introduction
GoLang Introduction
 
It is easy contributing to Open Source - ECLIPSE CON 2020
It is easy contributing to Open Source - ECLIPSE CON 2020It is easy contributing to Open Source - ECLIPSE CON 2020
It is easy contributing to Open Source - ECLIPSE CON 2020
 
How to master a programming language: a Golang example"
How to master a programming language: a Golang example"How to master a programming language: a Golang example"
How to master a programming language: a Golang example"
 
Microservices, the lean way
Microservices, the lean wayMicroservices, the lean way
Microservices, the lean way
 
OSDC 2015: Kris Buytaert | From ConfigManagementSucks to ConfigManagementLove
OSDC 2015: Kris Buytaert | From ConfigManagementSucks to ConfigManagementLoveOSDC 2015: Kris Buytaert | From ConfigManagementSucks to ConfigManagementLove
OSDC 2015: Kris Buytaert | From ConfigManagementSucks to ConfigManagementLove
 
How I become Go GDE
How I become Go GDEHow I become Go GDE
How I become Go GDE
 

Viewers also liked

Open source tools for Incident Response bogota 2016
Open source tools for Incident Response  bogota 2016Open source tools for Incident Response  bogota 2016
Open source tools for Incident Response bogota 2016
Mateo Martinez
 
Zentral macaduk conf 2016
Zentral macaduk conf 2016Zentral macaduk conf 2016
Zentral macaduk conf 2016
Henry Stamerjohann
 
Ruby3x3: How are we going to measure 3x
Ruby3x3: How are we going to measure 3xRuby3x3: How are we going to measure 3x
Ruby3x3: How are we going to measure 3x
Matthew Gaudet
 
AppSensor Near Real-Time Event Detection and Response - DevNexus 2016
AppSensor Near Real-Time Event Detection and Response - DevNexus 2016AppSensor Near Real-Time Event Detection and Response - DevNexus 2016
AppSensor Near Real-Time Event Detection and Response - DevNexus 2016
jtmelton
 
Experiments in Sharing Java VM Technology with CRuby
Experiments in Sharing Java VM Technology with CRubyExperiments in Sharing Java VM Technology with CRuby
Experiments in Sharing Java VM Technology with CRuby
Matthew Gaudet
 
DevOops Redux Ken Johnson Chris Gates - AppSec USA 2016
DevOops Redux Ken Johnson Chris Gates  - AppSec USA 2016DevOops Redux Ken Johnson Chris Gates  - AppSec USA 2016
DevOops Redux Ken Johnson Chris Gates - AppSec USA 2016
Chris Gates
 
Null Bachaav - May 07 Attack Monitoring workshop.
Null Bachaav - May 07 Attack Monitoring workshop.Null Bachaav - May 07 Attack Monitoring workshop.
Null Bachaav - May 07 Attack Monitoring workshop.
Prajal Kulkarni
 
Automating Analysis and Exploitation of Embedded Device Firmware
Automating Analysis and Exploitation of Embedded Device FirmwareAutomating Analysis and Exploitation of Embedded Device Firmware
Automating Analysis and Exploitation of Embedded Device Firmware
Malachi Jones
 
Time to say goodbye to your Nagios based setup
Time to say goodbye to your Nagios based setupTime to say goodbye to your Nagios based setup
Time to say goodbye to your Nagios based setup
Check my Website
 
Simd programming introduction
Simd programming introductionSimd programming introduction
Simd programming introduction
Champ Yen
 
Solid state physics lec 1
Solid state physics lec 1Solid state physics lec 1
Solid state physics lec 1
Dr. Abeer Kamal
 
Highly Surmountable Challenges in Ruby+OMR JIT Compilation
Highly Surmountable Challenges in Ruby+OMR JIT CompilationHighly Surmountable Challenges in Ruby+OMR JIT Compilation
Highly Surmountable Challenges in Ruby+OMR JIT Compilation
Matthew Gaudet
 
Video Analysis with Recurrent Neural Networks (Master Computer Vision Barcelo...
Video Analysis with Recurrent Neural Networks (Master Computer Vision Barcelo...Video Analysis with Recurrent Neural Networks (Master Computer Vision Barcelo...
Video Analysis with Recurrent Neural Networks (Master Computer Vision Barcelo...
Universitat Politècnica de Catalunya
 
Python + Raspberry Pi GPIO
Python + Raspberry Pi GPIOPython + Raspberry Pi GPIO
Python + Raspberry Pi GPIO
Кирилл Борисов
 
Gentlest Introduction to Tensorflow - Part 3
Gentlest Introduction to Tensorflow - Part 3Gentlest Introduction to Tensorflow - Part 3
Gentlest Introduction to Tensorflow - Part 3
Khor SoonHin
 
Parallel processing
Parallel processingParallel processing
Parallel processing
Syed Zaid Irshad
 
Introduction To Programming IP5
Introduction To Programming IP5Introduction To Programming IP5
Introduction To Programming IP5
Mark Simon
 
Processor, Compiler and Python Programming Language
Processor, Compiler and Python Programming LanguageProcessor, Compiler and Python Programming Language
Processor, Compiler and Python Programming Language
arumdapta98
 
TENSORFLOW: ARCHITECTURE AND USE CASE - NASA SPACE APPS CHALLENGE by Gema Par...
TENSORFLOW: ARCHITECTURE AND USE CASE - NASA SPACE APPS CHALLENGE by Gema Par...TENSORFLOW: ARCHITECTURE AND USE CASE - NASA SPACE APPS CHALLENGE by Gema Par...
TENSORFLOW: ARCHITECTURE AND USE CASE - NASA SPACE APPS CHALLENGE by Gema Par...
Big Data Spain
 
Solid State Drives (SSDs) -What it Takes to Make Data Go Away
Solid State Drives (SSDs) -What it Takes to Make Data Go AwaySolid State Drives (SSDs) -What it Takes to Make Data Go Away
Solid State Drives (SSDs) -What it Takes to Make Data Go Away
Blancco
 

Viewers also liked (20)

Open source tools for Incident Response bogota 2016
Open source tools for Incident Response  bogota 2016Open source tools for Incident Response  bogota 2016
Open source tools for Incident Response bogota 2016
 
Zentral macaduk conf 2016
Zentral macaduk conf 2016Zentral macaduk conf 2016
Zentral macaduk conf 2016
 
Ruby3x3: How are we going to measure 3x
Ruby3x3: How are we going to measure 3xRuby3x3: How are we going to measure 3x
Ruby3x3: How are we going to measure 3x
 
AppSensor Near Real-Time Event Detection and Response - DevNexus 2016
AppSensor Near Real-Time Event Detection and Response - DevNexus 2016AppSensor Near Real-Time Event Detection and Response - DevNexus 2016
AppSensor Near Real-Time Event Detection and Response - DevNexus 2016
 
Experiments in Sharing Java VM Technology with CRuby
Experiments in Sharing Java VM Technology with CRubyExperiments in Sharing Java VM Technology with CRuby
Experiments in Sharing Java VM Technology with CRuby
 
DevOops Redux Ken Johnson Chris Gates - AppSec USA 2016
DevOops Redux Ken Johnson Chris Gates  - AppSec USA 2016DevOops Redux Ken Johnson Chris Gates  - AppSec USA 2016
DevOops Redux Ken Johnson Chris Gates - AppSec USA 2016
 
Null Bachaav - May 07 Attack Monitoring workshop.
Null Bachaav - May 07 Attack Monitoring workshop.Null Bachaav - May 07 Attack Monitoring workshop.
Null Bachaav - May 07 Attack Monitoring workshop.
 
Automating Analysis and Exploitation of Embedded Device Firmware
Automating Analysis and Exploitation of Embedded Device FirmwareAutomating Analysis and Exploitation of Embedded Device Firmware
Automating Analysis and Exploitation of Embedded Device Firmware
 
Time to say goodbye to your Nagios based setup
Time to say goodbye to your Nagios based setupTime to say goodbye to your Nagios based setup
Time to say goodbye to your Nagios based setup
 
Simd programming introduction
Simd programming introductionSimd programming introduction
Simd programming introduction
 
Solid state physics lec 1
Solid state physics lec 1Solid state physics lec 1
Solid state physics lec 1
 
Highly Surmountable Challenges in Ruby+OMR JIT Compilation
Highly Surmountable Challenges in Ruby+OMR JIT CompilationHighly Surmountable Challenges in Ruby+OMR JIT Compilation
Highly Surmountable Challenges in Ruby+OMR JIT Compilation
 
Video Analysis with Recurrent Neural Networks (Master Computer Vision Barcelo...
Video Analysis with Recurrent Neural Networks (Master Computer Vision Barcelo...Video Analysis with Recurrent Neural Networks (Master Computer Vision Barcelo...
Video Analysis with Recurrent Neural Networks (Master Computer Vision Barcelo...
 
Python + Raspberry Pi GPIO
Python + Raspberry Pi GPIOPython + Raspberry Pi GPIO
Python + Raspberry Pi GPIO
 
Gentlest Introduction to Tensorflow - Part 3
Gentlest Introduction to Tensorflow - Part 3Gentlest Introduction to Tensorflow - Part 3
Gentlest Introduction to Tensorflow - Part 3
 
Parallel processing
Parallel processingParallel processing
Parallel processing
 
Introduction To Programming IP5
Introduction To Programming IP5Introduction To Programming IP5
Introduction To Programming IP5
 
Processor, Compiler and Python Programming Language
Processor, Compiler and Python Programming LanguageProcessor, Compiler and Python Programming Language
Processor, Compiler and Python Programming Language
 
TENSORFLOW: ARCHITECTURE AND USE CASE - NASA SPACE APPS CHALLENGE by Gema Par...
TENSORFLOW: ARCHITECTURE AND USE CASE - NASA SPACE APPS CHALLENGE by Gema Par...TENSORFLOW: ARCHITECTURE AND USE CASE - NASA SPACE APPS CHALLENGE by Gema Par...
TENSORFLOW: ARCHITECTURE AND USE CASE - NASA SPACE APPS CHALLENGE by Gema Par...
 
Solid State Drives (SSDs) -What it Takes to Make Data Go Away
Solid State Drives (SSDs) -What it Takes to Make Data Go AwaySolid State Drives (SSDs) -What it Takes to Make Data Go Away
Solid State Drives (SSDs) -What it Takes to Make Data Go Away
 

Similar to Building Better FLOSS Community Relationships @ FB

2015 03 nllgg-event Organizing Duoconferences.
2015 03 nllgg-event Organizing Duoconferences.2015 03 nllgg-event Organizing Duoconferences.
2015 03 nllgg-event Organizing Duoconferences.
hcderaad
 
Michael Widenius
Michael WideniusMichael Widenius
Michael Widenius
CodeFest
 
Overcoming the Fear of Contributing to Open Source
Overcoming the Fear of Contributing to Open SourceOvercoming the Fear of Contributing to Open Source
Overcoming the Fear of Contributing to Open Source
All Things Open
 
We Need to Talk: How Communication Helps Code
We Need to Talk: How Communication Helps CodeWe Need to Talk: How Communication Helps Code
We Need to Talk: How Communication Helps Code
Docker, Inc.
 
OLITA Digital Odyssey Presentation on Open Source (with Randy Metcalfe)
OLITA Digital Odyssey Presentation on Open Source (with Randy Metcalfe)OLITA Digital Odyssey Presentation on Open Source (with Randy Metcalfe)
OLITA Digital Odyssey Presentation on Open Source (with Randy Metcalfe)
Digital Scholarship Unit at the UTSC Library
 
How to Write a Winning Session Submission
How to Write a Winning Session SubmissionHow to Write a Winning Session Submission
How to Write a Winning Session Submission
Docker, Inc
 
LCA13: Upstreaming 101
LCA13: Upstreaming 101LCA13: Upstreaming 101
LCA13: Upstreaming 101
Linaro
 
Upstreaming 1013
Upstreaming 1013Upstreaming 1013
Upstreaming 1013
Linaro
 
Netflix OSS Meetup Season 4 Episode 4
Netflix OSS Meetup Season 4 Episode 4Netflix OSS Meetup Season 4 Episode 4
Netflix OSS Meetup Season 4 Episode 4
aspyker
 
Open Source in Real Life
Open Source in Real LifeOpen Source in Real Life
Open Source in Real Life
Kenneth Geisshirt
 
CPSeis & GeoCraft
CPSeis & GeoCraftCPSeis & GeoCraft
CPSeis & GeoCraft
billmenger
 
Gsoc2012 checklist
Gsoc2012 checklistGsoc2012 checklist
Gsoc2012 checklist
David Bain
 
Large drupal site builds a workshop for sxsw interactive - march 17, 2015
Large drupal site builds   a workshop for sxsw interactive - march 17, 2015Large drupal site builds   a workshop for sxsw interactive - march 17, 2015
Large drupal site builds a workshop for sxsw interactive - march 17, 2015
rgristroph
 
Freifunk Munich - How to scale Jitsi
Freifunk Munich - How to scale JitsiFreifunk Munich - How to scale Jitsi
Freifunk Munich - How to scale Jitsi
Annika Wickert
 
meetup version of Paving the road to production
  meetup version of Paving the road to production    meetup version of Paving the road to production
meetup version of Paving the road to production
Matthew Reynolds
 
Linux Kernel Introduction
Linux Kernel IntroductionLinux Kernel Introduction
Linux Kernel Introduction
Sage Sharp
 
NDC London 2020 - Challenges of Managing CoreFx Repo -- Karel Zikmund
NDC London 2020 - Challenges of Managing CoreFx Repo -- Karel ZikmundNDC London 2020 - Challenges of Managing CoreFx Repo -- Karel Zikmund
NDC London 2020 - Challenges of Managing CoreFx Repo -- Karel Zikmund
Karel Zikmund
 
Agile_SDLC_Node.js@Paypal_ppt
Agile_SDLC_Node.js@Paypal_pptAgile_SDLC_Node.js@Paypal_ppt
Agile_SDLC_Node.js@Paypal_pptHitesh Kumar
 
Tauranga DNUG 2010-11-11
Tauranga DNUG 2010-11-11 Tauranga DNUG 2010-11-11
Tauranga DNUG 2010-11-11
dbruning
 

Similar to Building Better FLOSS Community Relationships @ FB (20)

2015 03 nllgg-event Organizing Duoconferences.
2015 03 nllgg-event Organizing Duoconferences.2015 03 nllgg-event Organizing Duoconferences.
2015 03 nllgg-event Organizing Duoconferences.
 
Michael Widenius
Michael WideniusMichael Widenius
Michael Widenius
 
Overcoming the Fear of Contributing to Open Source
Overcoming the Fear of Contributing to Open SourceOvercoming the Fear of Contributing to Open Source
Overcoming the Fear of Contributing to Open Source
 
We Need to Talk: How Communication Helps Code
We Need to Talk: How Communication Helps CodeWe Need to Talk: How Communication Helps Code
We Need to Talk: How Communication Helps Code
 
OLITA Digital Odyssey Presentation on Open Source (with Randy Metcalfe)
OLITA Digital Odyssey Presentation on Open Source (with Randy Metcalfe)OLITA Digital Odyssey Presentation on Open Source (with Randy Metcalfe)
OLITA Digital Odyssey Presentation on Open Source (with Randy Metcalfe)
 
How to Write a Winning Session Submission
How to Write a Winning Session SubmissionHow to Write a Winning Session Submission
How to Write a Winning Session Submission
 
LCA13: Upstreaming 101
LCA13: Upstreaming 101LCA13: Upstreaming 101
LCA13: Upstreaming 101
 
Upstreaming 1013
Upstreaming 1013Upstreaming 1013
Upstreaming 1013
 
Netflix OSS Meetup Season 4 Episode 4
Netflix OSS Meetup Season 4 Episode 4Netflix OSS Meetup Season 4 Episode 4
Netflix OSS Meetup Season 4 Episode 4
 
Open Source in Real Life
Open Source in Real LifeOpen Source in Real Life
Open Source in Real Life
 
CPSeis & GeoCraft
CPSeis & GeoCraftCPSeis & GeoCraft
CPSeis & GeoCraft
 
306 belmont ssp08agileit
306 belmont ssp08agileit306 belmont ssp08agileit
306 belmont ssp08agileit
 
Gsoc2012 checklist
Gsoc2012 checklistGsoc2012 checklist
Gsoc2012 checklist
 
Large drupal site builds a workshop for sxsw interactive - march 17, 2015
Large drupal site builds   a workshop for sxsw interactive - march 17, 2015Large drupal site builds   a workshop for sxsw interactive - march 17, 2015
Large drupal site builds a workshop for sxsw interactive - march 17, 2015
 
Freifunk Munich - How to scale Jitsi
Freifunk Munich - How to scale JitsiFreifunk Munich - How to scale Jitsi
Freifunk Munich - How to scale Jitsi
 
meetup version of Paving the road to production
  meetup version of Paving the road to production    meetup version of Paving the road to production
meetup version of Paving the road to production
 
Linux Kernel Introduction
Linux Kernel IntroductionLinux Kernel Introduction
Linux Kernel Introduction
 
NDC London 2020 - Challenges of Managing CoreFx Repo -- Karel Zikmund
NDC London 2020 - Challenges of Managing CoreFx Repo -- Karel ZikmundNDC London 2020 - Challenges of Managing CoreFx Repo -- Karel Zikmund
NDC London 2020 - Challenges of Managing CoreFx Repo -- Karel Zikmund
 
Agile_SDLC_Node.js@Paypal_ppt
Agile_SDLC_Node.js@Paypal_pptAgile_SDLC_Node.js@Paypal_ppt
Agile_SDLC_Node.js@Paypal_ppt
 
Tauranga DNUG 2010-11-11
Tauranga DNUG 2010-11-11 Tauranga DNUG 2010-11-11
Tauranga DNUG 2010-11-11
 

More from Davide Cavalca

Hyperscale SIG update
Hyperscale SIG updateHyperscale SIG update
Hyperscale SIG update
Davide Cavalca
 
Hyperscale SIG update
Hyperscale SIG updateHyperscale SIG update
Hyperscale SIG update
Davide Cavalca
 
Building community with CentOS Stream
Building community with CentOS StreamBuilding community with CentOS Stream
Building community with CentOS Stream
Davide Cavalca
 
CentOS Stream at Facebook
CentOS Stream at FacebookCentOS Stream at Facebook
CentOS Stream at Facebook
Davide Cavalca
 
Hyperscale SIG Introduction
Hyperscale SIG IntroductionHyperscale SIG Introduction
Hyperscale SIG Introduction
Davide Cavalca
 
What's new with CentOS at Facebook
What's new with CentOS at FacebookWhat's new with CentOS at Facebook
What's new with CentOS at Facebook
Davide Cavalca
 
Upgrading CentOS on the Facebook fleet
Upgrading CentOS on the Facebook fleetUpgrading CentOS on the Facebook fleet
Upgrading CentOS on the Facebook fleet
Davide Cavalca
 
systemd @ Facebook in 2019
systemd @ Facebook in 2019systemd @ Facebook in 2019
systemd @ Facebook in 2019
Davide Cavalca
 
State of systemd @ Facebook
State of systemd @ FacebookState of systemd @ Facebook
State of systemd @ Facebook
Davide Cavalca
 
Running CentOS on the Facebook fleet
Running CentOS on the Facebook fleetRunning CentOS on the Facebook fleet
Running CentOS on the Facebook fleet
Davide Cavalca
 
systemd @ Facebook -- a year later
systemd @ Facebook -- a year latersystemd @ Facebook -- a year later
systemd @ Facebook -- a year later
Davide Cavalca
 
Deploying systemd at scale
Deploying systemd at scaleDeploying systemd at scale
Deploying systemd at scale
Davide Cavalca
 

More from Davide Cavalca (12)

Hyperscale SIG update
Hyperscale SIG updateHyperscale SIG update
Hyperscale SIG update
 
Hyperscale SIG update
Hyperscale SIG updateHyperscale SIG update
Hyperscale SIG update
 
Building community with CentOS Stream
Building community with CentOS StreamBuilding community with CentOS Stream
Building community with CentOS Stream
 
CentOS Stream at Facebook
CentOS Stream at FacebookCentOS Stream at Facebook
CentOS Stream at Facebook
 
Hyperscale SIG Introduction
Hyperscale SIG IntroductionHyperscale SIG Introduction
Hyperscale SIG Introduction
 
What's new with CentOS at Facebook
What's new with CentOS at FacebookWhat's new with CentOS at Facebook
What's new with CentOS at Facebook
 
Upgrading CentOS on the Facebook fleet
Upgrading CentOS on the Facebook fleetUpgrading CentOS on the Facebook fleet
Upgrading CentOS on the Facebook fleet
 
systemd @ Facebook in 2019
systemd @ Facebook in 2019systemd @ Facebook in 2019
systemd @ Facebook in 2019
 
State of systemd @ Facebook
State of systemd @ FacebookState of systemd @ Facebook
State of systemd @ Facebook
 
Running CentOS on the Facebook fleet
Running CentOS on the Facebook fleetRunning CentOS on the Facebook fleet
Running CentOS on the Facebook fleet
 
systemd @ Facebook -- a year later
systemd @ Facebook -- a year latersystemd @ Facebook -- a year later
systemd @ Facebook -- a year later
 
Deploying systemd at scale
Deploying systemd at scaleDeploying systemd at scale
Deploying systemd at scale
 

Recently uploaded

Gen AI Study Jams _ For the GDSC Leads in India.pdf
Gen AI Study Jams _ For the GDSC Leads in India.pdfGen AI Study Jams _ For the GDSC Leads in India.pdf
Gen AI Study Jams _ For the GDSC Leads in India.pdf
gdsczhcet
 
Automobile Management System Project Report.pdf
Automobile Management System Project Report.pdfAutomobile Management System Project Report.pdf
Automobile Management System Project Report.pdf
Kamal Acharya
 
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
obonagu
 
Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024
Massimo Talia
 
Planning Of Procurement o different goods and services
Planning Of Procurement o different goods and servicesPlanning Of Procurement o different goods and services
Planning Of Procurement o different goods and services
JoytuBarua2
 
MCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdfMCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdf
Osamah Alsalih
 
Halogenation process of chemical process industries
Halogenation process of chemical process industriesHalogenation process of chemical process industries
Halogenation process of chemical process industries
MuhammadTufail242431
 
WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234
AafreenAbuthahir2
 
block diagram and signal flow graph representation
block diagram and signal flow graph representationblock diagram and signal flow graph representation
block diagram and signal flow graph representation
Divya Somashekar
 
Final project report on grocery store management system..pdf
Final project report on grocery store management system..pdfFinal project report on grocery store management system..pdf
Final project report on grocery store management system..pdf
Kamal Acharya
 
Democratizing Fuzzing at Scale by Abhishek Arya
Democratizing Fuzzing at Scale by Abhishek AryaDemocratizing Fuzzing at Scale by Abhishek Arya
Democratizing Fuzzing at Scale by Abhishek Arya
abh.arya
 
LIGA(E)11111111111111111111111111111111111111111.ppt
LIGA(E)11111111111111111111111111111111111111111.pptLIGA(E)11111111111111111111111111111111111111111.ppt
LIGA(E)11111111111111111111111111111111111111111.ppt
ssuser9bd3ba
 
Student information management system project report ii.pdf
Student information management system project report ii.pdfStudent information management system project report ii.pdf
Student information management system project report ii.pdf
Kamal Acharya
 
J.Yang, ICLR 2024, MLILAB, KAIST AI.pdf
J.Yang,  ICLR 2024, MLILAB, KAIST AI.pdfJ.Yang,  ICLR 2024, MLILAB, KAIST AI.pdf
J.Yang, ICLR 2024, MLILAB, KAIST AI.pdf
MLILAB
 
Quality defects in TMT Bars, Possible causes and Potential Solutions.
Quality defects in TMT Bars, Possible causes and Potential Solutions.Quality defects in TMT Bars, Possible causes and Potential Solutions.
Quality defects in TMT Bars, Possible causes and Potential Solutions.
PrashantGoswami42
 
Railway Signalling Principles Edition 3.pdf
Railway Signalling Principles Edition 3.pdfRailway Signalling Principles Edition 3.pdf
Railway Signalling Principles Edition 3.pdf
TeeVichai
 
Forklift Classes Overview by Intella Parts
Forklift Classes Overview by Intella PartsForklift Classes Overview by Intella Parts
Forklift Classes Overview by Intella Parts
Intella Parts
 
Architectural Portfolio Sean Lockwood
Architectural Portfolio Sean LockwoodArchitectural Portfolio Sean Lockwood
Architectural Portfolio Sean Lockwood
seandesed
 
The role of big data in decision making.
The role of big data in decision making.The role of big data in decision making.
The role of big data in decision making.
ankuprajapati0525
 
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdfAKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
SamSarthak3
 

Recently uploaded (20)

Gen AI Study Jams _ For the GDSC Leads in India.pdf
Gen AI Study Jams _ For the GDSC Leads in India.pdfGen AI Study Jams _ For the GDSC Leads in India.pdf
Gen AI Study Jams _ For the GDSC Leads in India.pdf
 
Automobile Management System Project Report.pdf
Automobile Management System Project Report.pdfAutomobile Management System Project Report.pdf
Automobile Management System Project Report.pdf
 
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
 
Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024
 
Planning Of Procurement o different goods and services
Planning Of Procurement o different goods and servicesPlanning Of Procurement o different goods and services
Planning Of Procurement o different goods and services
 
MCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdfMCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdf
 
Halogenation process of chemical process industries
Halogenation process of chemical process industriesHalogenation process of chemical process industries
Halogenation process of chemical process industries
 
WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234
 
block diagram and signal flow graph representation
block diagram and signal flow graph representationblock diagram and signal flow graph representation
block diagram and signal flow graph representation
 
Final project report on grocery store management system..pdf
Final project report on grocery store management system..pdfFinal project report on grocery store management system..pdf
Final project report on grocery store management system..pdf
 
Democratizing Fuzzing at Scale by Abhishek Arya
Democratizing Fuzzing at Scale by Abhishek AryaDemocratizing Fuzzing at Scale by Abhishek Arya
Democratizing Fuzzing at Scale by Abhishek Arya
 
LIGA(E)11111111111111111111111111111111111111111.ppt
LIGA(E)11111111111111111111111111111111111111111.pptLIGA(E)11111111111111111111111111111111111111111.ppt
LIGA(E)11111111111111111111111111111111111111111.ppt
 
Student information management system project report ii.pdf
Student information management system project report ii.pdfStudent information management system project report ii.pdf
Student information management system project report ii.pdf
 
J.Yang, ICLR 2024, MLILAB, KAIST AI.pdf
J.Yang,  ICLR 2024, MLILAB, KAIST AI.pdfJ.Yang,  ICLR 2024, MLILAB, KAIST AI.pdf
J.Yang, ICLR 2024, MLILAB, KAIST AI.pdf
 
Quality defects in TMT Bars, Possible causes and Potential Solutions.
Quality defects in TMT Bars, Possible causes and Potential Solutions.Quality defects in TMT Bars, Possible causes and Potential Solutions.
Quality defects in TMT Bars, Possible causes and Potential Solutions.
 
Railway Signalling Principles Edition 3.pdf
Railway Signalling Principles Edition 3.pdfRailway Signalling Principles Edition 3.pdf
Railway Signalling Principles Edition 3.pdf
 
Forklift Classes Overview by Intella Parts
Forklift Classes Overview by Intella PartsForklift Classes Overview by Intella Parts
Forklift Classes Overview by Intella Parts
 
Architectural Portfolio Sean Lockwood
Architectural Portfolio Sean LockwoodArchitectural Portfolio Sean Lockwood
Architectural Portfolio Sean Lockwood
 
The role of big data in decision making.
The role of big data in decision making.The role of big data in decision making.
The role of big data in decision making.
 
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdfAKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
 

Building Better FLOSS Community Relationships @ FB

  • 1. Building Better FLOSS Community Relationships @ FB DevConf.cz 2017 Phil Dibowitz & Davide Cavalca Production Engineering: Operating Systems Facebook
  • 2. Disclaimer: Lots of teams at Facebook work with opensource and are awesome at it!
  • 3. Who are you two and why do we care?
  • 4. Agenda ● Open Source at Facebook ● Why do this? ● How do you do this? ● Our journey, via examples! ● Lessons Learned
  • 5. Open Source @ Facebook Open Source Team... ● Shepherds projects ● Builds tooling ● Provides guidance/input
  • 6. Open Source @ Facebook ● Facebook started as a LAMP stack! ● HHVM ● MySQL ● Kernel
  • 7. Open Source @ Facebook ● Hbase – Forked early… – Years later, opensource version: ● halved avg latency ● long tail latency reduced by > 90% ● single server failover times cut dramatically ● Reduction in long GC pauses – Now back to upstream – much work later ● Zookeeper – Similar situation in progress ● Chef – Have kept up with development and deployment – Stayed entirely on open source release – Great results for 4 years...
  • 8. Open Source @ Facebook We also develop our own open-source software in the community... ● Presto ● OSQuery ● React ● RocksDB ● McRouter ● Buck ● Surround360 Processor
  • 10. Why? It’s efficient! ● Maintain less internal code – Less man-hours! ● Be able to contribute code – Help community – Share ownership – Feel good ● More eyeballs (better code) – More reviews – More testing
  • 11. Why? Less waste! Keeping up with the community means… ● Less time wasted… – Debugging solved problems – Filing useless bugs – Porting fixes around ● Less animosity
  • 12. Why? Direction! ● Know what’s coming soon (... to a theater near you) – Be prepared – Be part of that discussion ● Influence community direction (eventually) – Start those discussions!
  • 13. Why? People! ● Happier internal engineers ● More engaged community ● Better recruiting ● … good relationships are contagious!
  • 15. How? In Person (where possible) ● Conferences ● Meet-ups ● Their office ● Your office ● Wherever!
  • 16. How? Participation ● Be on mailing lists / in SLACK / on IRC … and join in the conversation! ● (again) Go to relevant conferences/meetups ● Understand high level project goals ● Understand work flows
  • 17. How? All the context! ● Listen first to get their context ● Provide your context before large PRs ● Remember: find appropriate medium for the length and type of conversation
  • 18. How? Determine speed ● Following “latest” ● What’s right for project? – Consider their release cadence, dependencies, development velocity, etc? ● What’s right for the time? – Consider your resources, deployment cadence, and rate of contribution you expect to make
  • 20. Our journey, by example
  • 21. Common Considerations ● Goal ● Speed ● Size of change ● Previous engagements with the community
  • 22. A good example: Chef ● We’d already built a relationship with Chef ● … but we had a business relationship too. ● Goal: (initially) scaling, (later) various features ● Speed: custom bleeding edge builds early on… now quarterly ● Got involved in community events and discussion ● Benefits: IPv6, multipackage, scaling, systemd support ● Also: released various tooling and cookbooks
  • 23. A place to start: Anaconda ● Goal: Single installer across versions, use newer code ● Flew out to meet – Started with: how to be good community members – Ended in hackathon ● Kept in touch in IRC ● Speed: built from master ~monthly ● Benefits: single installer, vastly newer hardware support, solid IPv6 support, not working in abandoned codebase
  • 24. Continuing the Journey: systemd ● CentOS 7 ● Goal: newer features/code, cgroup2 ● Speed: latest release ● Backported (rawhide to CentOS 7) – shared ● Conferences ● Benefits: cgroup2, mkosi, etc.
  • 25. Other Examples ● initscripts/network-scripts – IPv6 fixes & features – Per-device routes – Re-whitespace ● rpm/yum/dnf – rpmdb scaling issues – want to help test at scale
  • 26. Lessons Learned ● Listen first & understand their context ● Provide your context ● Non-code contributions
  • 27. Resources ● Rawhide → CentOS 7 backports – Github: https://github.com/facebookincubator/rpm-backports – (RH) Copr: https://copr.fedorainfracloud.org/coprs/jsynacek/systemd-backports-for-centos-7/ ● Kernel blog post – https://code.facebook.com/posts/938078729581886/improving-the-linux-kernel-with-upstream-contributions/ ● Systemd talk – https://www.youtube.com/watch?v=LhYd0S3qiMY ● Chef Tooling: – https://github.com/facebook/taste-tester – https://github.com/facebook/grocery-delivery – https://github.com/facebook/chef-cookbooks ● MySQL: https://github.com/facebook/mysql-5.6/ ● HHVM: http://hhvm.com/ ● Presto: https://prestodb.io/ ● RocksDB: http://rocksdb.org/
  • 28. You’ve got questions? We’ve got answers! (maybe)

Editor's Notes

  1. Davide - note that we are not the only team that does this and lots of teams work well with the community throughout the company
  2. Davide Production Engineers: Operating Systems - Centos - bare metal experience - provisioning - chef - packaging infra - our customers: bare metal services, and middleware
  3. Phil
  4. Phil HHVM - PHP → HPHP → HHVM - Continue to work with Zend and PHP community today! MySQL - Started sending upstream patches - WebscaleSQL - now our branch – still involved in community! Kernel - Significant performance improvements in UDP - Growing kernel team - Move to upstream kernel development
  5. Davide - Not always perfect...
  6. Davide
  7. Phil
  8. Phil
  9. Phil
  10. Phil Knowing what’s coming: - systemd - networkd - dnf Directoin: - what you need - use cases that others may use
  11. Phil
  12. Davide
  13. Davide
  14. Davide Workflow: - tools, testing, etc. - which branches, how reviews work, their limitations
  15. Davide
  16. Davide … to keep up well enough to provide meaningful contributions in both code and discussions.
  17. Davide
  18. Phil
  19. Phil
  20. Phil
  21. Phil
  22. Davide Backport: GH + copr repo
  23. Davide Network-scripts: - v6 - per interface routes - whitespace cleanup (conversation!) Rpm/yum/dnf - had workarounds for issues @ scale with rpmdb - would like to help bulletproof and test @ scale
  24. Phil Listen first: - start the discussion with how to best contribute/be good members - callback: anaconda Their context: - upstream may have additional processes/requirements - callback: anaconda Your context: - provide context before major contributions **and** with it - callback systemd(cgroup2), anaconda - initscripts – WHY whitespace cleanup?