SlideShare una empresa de Scribd logo
1 de 24
Move Fast and Build Things
Simon Stewart
simons@fb.com
github.com/shs96c
@shs96c
The Challenge

>150,000
files

>100,000
commits

>300
There is no Android team
How do we “move fast”?
Build fast
The working copy
▪ We

use git for source control

▪ Two

branches we care about day-to-day:

▪

master

▪

stable
How the code is organized

Text

http://www.flickr.com/photos/darwinbell/3030214710/
Code review
Image macros

QuickTime™ and a
GIF decompressor
are needed to see this picture.
Dependency injection

http://www.flickr.com/photos/31246066@N04/5253179784/
We needed a better tool
▪ Minimal
▪ Keep
▪ IDE

overhead in creating a module

boilerplate out of the codebase

friendly

▪ Faster

clean builds

▪ Faster

incremental builds

▪ Support

ad-hoc build steps
Buck: an Android build system
▪ build

rule procedure for producing output files from input files

▪ build

file file (named BUCK) where build rules are declared

▪ build

target string identifier for a build rule
Build Target

//java/com/facebook/share:ui
Root of the repository
Directory where the build file can be found
Name of the build rule
Build Rule
android_library( name = 'ui', srcs =
glob(['**/*.java']), deps =
[
'//android_res/com/facebook/share:res',
'//java/com/facebook/base:base',
'//thirdparty/java/guava:guava', ], visibility =
[ 'PUBLIC' ],)
)
Dependency Graph
AB
GR

AB
AL

AL

GR

AL

AL

AL

AL

AR

AR

AR
Dependency Graph
AB
GR

AB
AL

AL

GR

AL

AL

AL

AL

AR

AR

AR
Buck is Open Source!
▪ Available

on GitHub: https://github.com/facebook/buck/

▪ Documentation
▪ Apache
▪ Written
▪ Works

galore: http://facebook.github.com/buck/

2.0 License
in Java and a smattering of Python

on OS X and Linux
Test fast
Developers write tests
Unit tests

http://www.flickr.com/photos/aracelota/4773084433/
Larger tests

http://www.flickr.com/photos/amphalon/6510474165/
Deploy fast
Dogfood, Alpha and Beta
Questions?

Más contenido relacionado

La actualidad más candente

Save Time and Money with Automation
Save Time and Money with AutomationSave Time and Money with Automation
Save Time and Money with Automation
Chris Jean
 
Andrew Mykhaliuk - Sorry, I need to make a build for frontend
Andrew Mykhaliuk - Sorry, I need to make a build for frontendAndrew Mykhaliuk - Sorry, I need to make a build for frontend
Andrew Mykhaliuk - Sorry, I need to make a build for frontend
OdessaJS Conf
 

La actualidad más candente (20)

Serverless framework와 CircleCI를 통한 NoOps 맛보기
Serverless framework와 CircleCI를 통한 NoOps 맛보기Serverless framework와 CircleCI를 통한 NoOps 맛보기
Serverless framework와 CircleCI를 통한 NoOps 맛보기
 
Demystifying Gutenberg Blocks - Understanding the first steps to becoming a G...
Demystifying Gutenberg Blocks - Understanding the first steps to becoming a G...Demystifying Gutenberg Blocks - Understanding the first steps to becoming a G...
Demystifying Gutenberg Blocks - Understanding the first steps to becoming a G...
 
Afrimadoni the power of docker
Afrimadoni   the power of dockerAfrimadoni   the power of docker
Afrimadoni the power of docker
 
Intro to Azure Webjobs
Intro to Azure WebjobsIntro to Azure Webjobs
Intro to Azure Webjobs
 
The Anatomy Of A Hack - WordCamp Sofia 2018
The Anatomy Of A Hack - WordCamp Sofia 2018The Anatomy Of A Hack - WordCamp Sofia 2018
The Anatomy Of A Hack - WordCamp Sofia 2018
 
10 things you should know about django
10 things you should know about django10 things you should know about django
10 things you should know about django
 
WordPress Development with VVV, VV, and Vagrant
WordPress Development with VVV, VV, and VagrantWordPress Development with VVV, VV, and Vagrant
WordPress Development with VVV, VV, and Vagrant
 
Speed up your front-end development with the Proxly chrome extension
Speed up your front-end development with the Proxly chrome extensionSpeed up your front-end development with the Proxly chrome extension
Speed up your front-end development with the Proxly chrome extension
 
21 Ways to Make WordPress Fast
21 Ways to Make WordPress Fast21 Ways to Make WordPress Fast
21 Ways to Make WordPress Fast
 
Building a dev pipeline using GitHub Actions, Node.js, and AWS ECS Fargate
Building a dev pipeline using GitHub Actions, Node.js, and AWS ECS FargateBuilding a dev pipeline using GitHub Actions, Node.js, and AWS ECS Fargate
Building a dev pipeline using GitHub Actions, Node.js, and AWS ECS Fargate
 
Node.JS: Do you know the dependency of your dependencies dependency
Node.JS: Do you know the dependency of your dependencies dependencyNode.JS: Do you know the dependency of your dependencies dependency
Node.JS: Do you know the dependency of your dependencies dependency
 
Bamboo Continuous Integration Server - Brief
Bamboo Continuous Integration Server - BriefBamboo Continuous Integration Server - Brief
Bamboo Continuous Integration Server - Brief
 
Save Time and Money with Automation
Save Time and Money with AutomationSave Time and Money with Automation
Save Time and Money with Automation
 
WordCamp IL 2016 - WordPress Scale on AWS
WordCamp IL 2016 - WordPress Scale on AWSWordCamp IL 2016 - WordPress Scale on AWS
WordCamp IL 2016 - WordPress Scale on AWS
 
SQL Server PowerShell - Community Tools
SQL Server PowerShell - Community ToolsSQL Server PowerShell - Community Tools
SQL Server PowerShell - Community Tools
 
Ci of js and apex using jasmine, phantom js and drone io df14
Ci of js and apex using jasmine, phantom js and drone io   df14Ci of js and apex using jasmine, phantom js and drone io   df14
Ci of js and apex using jasmine, phantom js and drone io df14
 
Sponia with QingCloud
Sponia with QingCloudSponia with QingCloud
Sponia with QingCloud
 
Andrew Mykhaliuk - Sorry, I need to make a build for frontend
Andrew Mykhaliuk - Sorry, I need to make a build for frontendAndrew Mykhaliuk - Sorry, I need to make a build for frontend
Andrew Mykhaliuk - Sorry, I need to make a build for frontend
 
Untangling fall2017 week2
Untangling fall2017 week2Untangling fall2017 week2
Untangling fall2017 week2
 
Automating security with PowerShell
Automating security with PowerShellAutomating security with PowerShell
Automating security with PowerShell
 

Similar a Simon Stewart, Facebook engineer - Building Facebook for Android

Velocity NY 2013 - From Slow to Fast: Improving Performance on Intuit Website...
Velocity NY 2013 - From Slow to Fast: Improving Performance on Intuit Website...Velocity NY 2013 - From Slow to Fast: Improving Performance on Intuit Website...
Velocity NY 2013 - From Slow to Fast: Improving Performance on Intuit Website...
Jay Hung
 

Similar a Simon Stewart, Facebook engineer - Building Facebook for Android (20)

Evolving Infrastructure
Evolving InfrastructureEvolving Infrastructure
Evolving Infrastructure
 
Fun with Jenkins & Salesforce
Fun with Jenkins & SalesforceFun with Jenkins & Salesforce
Fun with Jenkins & Salesforce
 
Rails scaling
Rails scalingRails scaling
Rails scaling
 
Velocity NY 2013 - From Slow to Fast: Improving Performance on Intuit Website...
Velocity NY 2013 - From Slow to Fast: Improving Performance on Intuit Website...Velocity NY 2013 - From Slow to Fast: Improving Performance on Intuit Website...
Velocity NY 2013 - From Slow to Fast: Improving Performance on Intuit Website...
 
Cloud-Native Builds & Deployments in Bitbucket Pipelines
Cloud-Native Builds & Deployments in Bitbucket PipelinesCloud-Native Builds & Deployments in Bitbucket Pipelines
Cloud-Native Builds & Deployments in Bitbucket Pipelines
 
Continuous Integration, the minimum viable product
Continuous Integration, the minimum viable productContinuous Integration, the minimum viable product
Continuous Integration, the minimum viable product
 
Optimizing Your CI Pipelines
Optimizing Your CI PipelinesOptimizing Your CI Pipelines
Optimizing Your CI Pipelines
 
Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration
 
Static Site Generators - Developing Websites in Low-resource Condition
Static Site Generators - Developing Websites in Low-resource ConditionStatic Site Generators - Developing Websites in Low-resource Condition
Static Site Generators - Developing Websites in Low-resource Condition
 
How to start WebGL easily?
How to start WebGL easily?How to start WebGL easily?
How to start WebGL easily?
 
Git and Github
Git and GithubGit and Github
Git and Github
 
Ship It ! with Ruby/ Rails Ecosystem
Ship It ! with Ruby/ Rails EcosystemShip It ! with Ruby/ Rails Ecosystem
Ship It ! with Ruby/ Rails Ecosystem
 
.NET Day - Continuous Deployment Showdown: Traditional CI/CD vs. GitOps
.NET Day - Continuous Deployment Showdown: Traditional CI/CD vs. GitOps.NET Day - Continuous Deployment Showdown: Traditional CI/CD vs. GitOps
.NET Day - Continuous Deployment Showdown: Traditional CI/CD vs. GitOps
 
Developers Use Bitbucket and So Can You
Developers Use Bitbucket and So Can YouDevelopers Use Bitbucket and So Can You
Developers Use Bitbucket and So Can You
 
SQL Server On SANs
SQL Server On SANsSQL Server On SANs
SQL Server On SANs
 
Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI...
Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI...Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI...
Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI...
 
Gradle - From minutes to seconds: minimizing build times
Gradle - From minutes to seconds: minimizing build timesGradle - From minutes to seconds: minimizing build times
Gradle - From minutes to seconds: minimizing build times
 
Bolt on Windows - James Pogran
Bolt on Windows - James PogranBolt on Windows - James Pogran
Bolt on Windows - James Pogran
 
The Journey Towards Continuous Integration
The Journey Towards Continuous IntegrationThe Journey Towards Continuous Integration
The Journey Towards Continuous Integration
 
Git Ninja KT (GitHub to GitLab)
Git Ninja KT (GitHub to GitLab)Git Ninja KT (GitHub to GitLab)
Git Ninja KT (GitHub to GitLab)
 

Más de How to Web

Más de How to Web (20)

Marketing Technologies, Tools and Tactics by Travis Wright at How to Web Conf...
Marketing Technologies, Tools and Tactics by Travis Wright at How to Web Conf...Marketing Technologies, Tools and Tactics by Travis Wright at How to Web Conf...
Marketing Technologies, Tools and Tactics by Travis Wright at How to Web Conf...
 
MVP Academy: Lessons Learnt
MVP Academy: Lessons LearntMVP Academy: Lessons Learnt
MVP Academy: Lessons Learnt
 
MVP Academy Follow-up Report
MVP Academy Follow-up ReportMVP Academy Follow-up Report
MVP Academy Follow-up Report
 
How to Web Conference 2015 - Event Report
How to Web Conference 2015 - Event ReportHow to Web Conference 2015 - Event Report
How to Web Conference 2015 - Event Report
 
How to Web Conference 2015
How to Web Conference 2015How to Web Conference 2015
How to Web Conference 2015
 
Product metrics by Bogdan Ripa
Product metrics by Bogdan RipaProduct metrics by Bogdan Ripa
Product metrics by Bogdan Ripa
 
Michael Ni, Senior VP Marketing & Products Avangate - What's a Product? Servi...
Michael Ni, Senior VP Marketing & Products Avangate - What's a Product? Servi...Michael Ni, Senior VP Marketing & Products Avangate - What's a Product? Servi...
Michael Ni, Senior VP Marketing & Products Avangate - What's a Product? Servi...
 
Agnieszka Szostak, Founder PR Outreach - The Good, The Bad and the PR (How to...
Agnieszka Szostak, Founder PR Outreach - The Good, The Bad and the PR (How to...Agnieszka Szostak, Founder PR Outreach - The Good, The Bad and the PR (How to...
Agnieszka Szostak, Founder PR Outreach - The Good, The Bad and the PR (How to...
 
Cristian Diaconescu, Founder Sand Sailor Studio - Black The Fall: the story b...
Cristian Diaconescu, Founder Sand Sailor Studio - Black The Fall: the story b...Cristian Diaconescu, Founder Sand Sailor Studio - Black The Fall: the story b...
Cristian Diaconescu, Founder Sand Sailor Studio - Black The Fall: the story b...
 
Roberto Mangiafico, CTO BadSeed Entertainment - Sleep Attach: A Technical Pos...
Roberto Mangiafico, CTO BadSeed Entertainment - Sleep Attach: A Technical Pos...Roberto Mangiafico, CTO BadSeed Entertainment - Sleep Attach: A Technical Pos...
Roberto Mangiafico, CTO BadSeed Entertainment - Sleep Attach: A Technical Pos...
 
Dan Olthen, Game of Thrones Producer @ BigPoint GmbH - Make it happen: the st...
Dan Olthen, Game of Thrones Producer @ BigPoint GmbH - Make it happen: the st...Dan Olthen, Game of Thrones Producer @ BigPoint GmbH - Make it happen: the st...
Dan Olthen, Game of Thrones Producer @ BigPoint GmbH - Make it happen: the st...
 
Vlad Micu, Head of Studio Critical Force Entertainment - The complete game st...
Vlad Micu, Head of Studio Critical Force Entertainment - The complete game st...Vlad Micu, Head of Studio Critical Force Entertainment - The complete game st...
Vlad Micu, Head of Studio Critical Force Entertainment - The complete game st...
 
Mathieu Muller, Field Engineer Unity Technologies - Unity 5: Easier, Better, ...
Mathieu Muller, Field Engineer Unity Technologies - Unity 5: Easier, Better, ...Mathieu Muller, Field Engineer Unity Technologies - Unity 5: Easier, Better, ...
Mathieu Muller, Field Engineer Unity Technologies - Unity 5: Easier, Better, ...
 
Valerian Banu, Product Analyst UberVu via HootSuite - What we've learnt while...
Valerian Banu, Product Analyst UberVu via HootSuite - What we've learnt while...Valerian Banu, Product Analyst UberVu via HootSuite - What we've learnt while...
Valerian Banu, Product Analyst UberVu via HootSuite - What we've learnt while...
 
Mark Tolmacs, Product Manager UStream Inc. - How I stopped worrying and start...
Mark Tolmacs, Product Manager UStream Inc. - How I stopped worrying and start...Mark Tolmacs, Product Manager UStream Inc. - How I stopped worrying and start...
Mark Tolmacs, Product Manager UStream Inc. - How I stopped worrying and start...
 
Salim Virani, Partner Founder Centric - Craft (HTW Conference 2014)
Salim Virani, Partner Founder Centric - Craft (HTW Conference 2014)Salim Virani, Partner Founder Centric - Craft (HTW Conference 2014)
Salim Virani, Partner Founder Centric - Craft (HTW Conference 2014)
 
Alex Hunter, CEO Rushmore - Getting and keeping customers
Alex Hunter, CEO Rushmore - Getting and keeping customersAlex Hunter, CEO Rushmore - Getting and keeping customers
Alex Hunter, CEO Rushmore - Getting and keeping customers
 
Marco Cecconi, Software Developer @ Stack Exchange - The architecture of Stac...
Marco Cecconi, Software Developer @ Stack Exchange - The architecture of Stac...Marco Cecconi, Software Developer @ Stack Exchange - The architecture of Stac...
Marco Cecconi, Software Developer @ Stack Exchange - The architecture of Stac...
 
Sitar Teli, Managing Partner, Connect Ventures - Core Metrics: What Web and M...
Sitar Teli, Managing Partner, Connect Ventures - Core Metrics: What Web and M...Sitar Teli, Managing Partner, Connect Ventures - Core Metrics: What Web and M...
Sitar Teli, Managing Partner, Connect Ventures - Core Metrics: What Web and M...
 
Startup Spotlight: Appticles 5 minutes pitchcles
Startup Spotlight: Appticles 5 minutes pitchclesStartup Spotlight: Appticles 5 minutes pitchcles
Startup Spotlight: Appticles 5 minutes pitchcles
 

Último

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Último (20)

FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 

Simon Stewart, Facebook engineer - Building Facebook for Android