2017 Year in review: Software across the stack

Visit the post for more.

David Mortenson
5 min readintermediate
--
View Original

Overview

The article reviews the advancements and technologies introduced by Facebook engineers in 2017, focusing on improvements in software development workflows, compilation efficiency, and testing processes. Key highlights include the implementation of the Jupiter job-matching system, enhancements to the Buck build tool, and the release of several open-source projects.

What You'll Learn

1

How to reduce job assignment latency in software development

2

Why optimizing compilation processes is crucial for large codebases

3

How to implement a continuous deployment model effectively

4

When to use static analysis tools for bug detection

Key Questions Answered

What improvements were made to the software development workflow at Facebook in 2017?
In 2017, Facebook engineers optimized their development workflow by reducing machine wait times by 79% for Android engineers, implementing the Jupiter job-matching system to cut job assignment latency from minutes to milliseconds, and enhancing the Buck build tool to reduce build times by 30%.
How does the Jupiter system improve job assignment for developers?
Jupiter is a high-performance job-matching system that pairs development tasks with the most suitable machines, significantly reducing job assignment latency from minutes to milliseconds, thus allowing engineers to work more efficiently.
What role does the One World system play in testing at Facebook?
One World is a management system for remotely controlling Android devices, iPhones, web browsers, and emulators, facilitating the execution of over 1 million jobs daily in Facebook's mobile device lab, thereby enhancing the testing process.
What advancements were made in static analysis with Infer?
In 2017, Infer expanded its capabilities to detect concurrency bugs at scale and introduced a new declarative language for writing checkers, enabling engineers to identify new types of bugs more easily without needing deep expertise in static analysis.

Key Statistics & Figures

Reduction in time waiting on machines for Android engineers
79%
This improvement was a result of optimizations made to the development workflow.
Reduction in job assignment latency by Jupiter
from minutes to milliseconds
This was achieved through the implementation of the Jupiter job-matching system.
Reduction in build times with Buck
30%
This was accomplished by reimagining Java compilation and reducing the amount of code rebuilt.
Jobs executed daily by One World
over 1 million
This system manages tens of thousands of remote resources for testing.
Number of new open source projects released in 2017
113
This brought Facebook's total portfolio to nearly 450 active projects.

Technologies & Tools

Some links below are affiliate links. We may earn a commission if you make a purchase.

Backend
Jupiter
A job-matching system that reduces job assignment latency.
Build Tool
Buck
An open source build tool designed for fast iteration and efficient compilation.
Testing Framework
One World
A management system for remotely controlling testing devices.
Static Analysis
Infer
An open source static analyzer for detecting bugs in code.
Frontend
React
A declarative front-end library that was rewritten for improved performance.
Frontend
Relay
A framework that pairs React components with GraphQL queries.
Frontend
Litho
A declarative framework for building efficient UIs on Android.
Package Manager
Yarn
A JavaScript package manager responsible for 3 billion package downloads per month.

Key Actionable Insights

1
Implementing a job-matching system like Jupiter can drastically reduce latency in task assignments.
By pairing tasks with the best-equipped machines, teams can enhance productivity and reduce waiting times, which is crucial in fast-paced development environments.
2
Optimizing build processes with tools like Buck can lead to significant reductions in build times.
As codebases grow, it's essential to rethink compilation strategies to maintain efficiency and speed, allowing for quicker iterations and deployments.
3
Utilizing a robust static analysis tool like Infer can help identify and mitigate bugs early in the development cycle.
By expanding the types of bugs detected, teams can improve code quality and reduce the risk of issues in production.

Common Pitfalls

1
Failing to optimize build processes can lead to increased wait times and reduced productivity.
As codebases grow, developers may overlook the need for efficient compilation strategies, resulting in slower iterations and potential bottlenecks in the development cycle.

Related Concepts

Software Development Workflows
Continuous Deployment
Static Analysis Tools
Open Source Contributions