Open Source

Tutorials and Guides

Hands-on resources demonstrating how Facebook powers community through open source technology. Build a new app, dip your toes in machine learning, and more.

ELI5: Flipper - Cross-Platform Debugger

By Dmitry Vinnik
June 14, 2021

We explain Flipper, an extensible mobile app debugger for iOS, Android and React Native. Flipper is an open source platform for debugging iOS, Android, and React Native apps.

Tools

  • Flipper: an open source platform for debugging iOS, Android, and React Native apps. This debugger lets you visualize, inspect, and control your apps from a desktop interface.

ELI5: Folly - Battle-Tested C++ Library

By Dmitry Vinnik
May 24, 2021

We explain Folly, a library of C++14 components. Folly is designed with practicality and efficiency in mind, including drop-in, optimized replacements for parts of the C++ STL.

Tools

  • Folly: a library of C++14 components. It has features like in-memory JSON manipulation or string-formatting to increase efficiency.

ELI5: an Open Source Series

In our series of short videos, our Developer Advocates breakdown Facebook Open Source projects like you’re 5: in a way that is easy to understand and use. Learn about our innovations and kick start your development today.

ELI5: Pyre - A Security-Focused Static Analysis Tool for Python Code

By Navyata Bawa
May 10, 2021

We explain Pyre, a performant type-checker for Python 3. Pyre works in your favorite editor to automatically flag type errors.

Tools

  • Pyre: a static type checker designed to improve the quality of code, and the development speed in large Python codebases.

ELI5: Ent - Schema as Code in Go

By Dmitry Vinnik
April 26, 2021

We explain Ent, an entity framework built for Go programming language. This framework provides developers with a Graph-based, Object Relational Mapping.

Tools

  • Ent: data schemas, including types, relations and constraints, are treated as code. Ent lets developers avoid context switching and continue working with Go while using Go.

ELI5: Buck - Modular Build System

By Dmitry Vinnik
March 29, 2021

We explain Buck, a high-performance build tool. Buck was designed for fast iteration allowing developers to compile and run their changes quickly.

Tools

  • Buck: a build tool that supports multiple programming languages. It allows for easy integration with IDEs of your choice, making you and your team more productive.

ELI5: Litho - Simplifying User Interface for Android

By Dmitry Vinnik
March 01, 2021

We explain Litho, a declarative UI framework for Android. Litho allows developers to focus on implementing their ideas rather than on how their UI is structured.

Tools

  • Litho: Uses a Facebook open-source project, Yoga to create a flat view hierarchy. It brings UI components over to native Android development.

ELI5: Yoga - Cross-Platform Layout Engine

By Dmitry Vinnik
February 01, 2021

We explain Yoga, an open source, cross-platform layout engine. Yoga brings a single standard for all users, allowing developers to focus on other tasks at hand.

Tools

  • Yoga: An open source, cross-platform layout engine that manages user interfaces across platforms by reusing CSS layouts.

ELI5: Docusaurus - Making Documentation Easy

By Dmitry Vinnik
November 30, 2020

The top open source projects on GitHub have their own documentation sites that contain an overview of the project, short getting started guides, in-depth tutorials and project blogs. These resources are key to the success of any open source project, but building, managing and deploying them can be a lot of work. Unless you're using Docusaurus.

Tools

  • Docusaurus: An open source project for building, deploying and maintaining websites. This project’s main goal is to get you started with your website in a matter of seconds.

ELI5: Fresco - Image Management Library for Android

By Dmitry Vinnik
November 16, 2020

In this post, we explain Fresco, a powerful system for displaying images in Android applications. This resources management library ensures that images, animations, and other visual assets can be used on a wide range of devices, even with an unreliable Internet connection.

Tools

  • Fresco: A powerful system for displaying images in Android applications. It takes care of image loading and display so you don't have to.

Build a Discord Bot with Rust and Serenity

By Joe Previte
September 30, 2020

Discord is on the rise in developer communities. This tutorial shows you how to build your own Discord bot using Rust and serenity and how to test it out in your own Discord server.

Tools

  • Rust: A general purpose programming language to build reliable and efficient software
  • serenity: A Rust library for the Discord API

Using Machine Learning with Detectron2

By Cami Williams
April 17, 2020

Machine learning can be daunting subject. However getting an app up and running is more than manageable process. Cami you through the process walks you through how to discover projects that make ML easier and writes a small application utilizing Detectron2.

Tools

  • Detectron2: Facebook AI Research's next generation software system that implements state-of-the-art object detection algorithms

ELI5: Pysa - A Security-Focused Static Analysis Tool for Python Code

By Jessica Lin
April 29, 2021

We explain Pysa, a static analysis tool to detect and prevent security issues in Python code. Pysa alerts the software engineers or security engineers so they can fix the bug before the code change is ever merged into the codebase.

Tools

  • Pysa: a static analyzer which means it can analyze code without needing to run it. If Pysa does detect that the source connects to the sink, it will report an issue.

ELI5: Infer - Finding Bugs Before You Ship

By Dmitry Vinnik
April 15, 2021

We explain Infer, a static analysis tool for programming languages like Java and C.

Tools

  • Infer: a static analysis tool used to detect bugs in programming languages. Infer catches Null Pointer exceptions, race conditions, memory leaks and other defects early in the project lifecycle.

ELI5: Watchman - Watching for Changes to Build Faster

By Dmitry Vinnik
March 15, 2021

We explain Watchman, a file watching service. Watchman allows developers to focus on managing the files they worked on in the web app development process with incremental build.

Tools

  • Watchman: uses with clients for a command line, NodeJS and more. It records any changes and triggers assigned actions.

ELI5: Hack - Programming Productivity Without Breaking Things

By Dmitry Vinnik
February 16, 2021

We explain Hack, a programming language focused on productivity and type safety. Hack can stay speedy by incrementally type-checking your files as you edit them.

Tools

  • Hack: Provides engineers with quick feedback loops to develop faster while keeping safety in mind with static typing.

ELI5: Flow - Static Type Checker for JavaScript

By Dmitry Vinnik
December 14, 2020

We explain Flow, a static type checker for JavaScript. Flow checks your program in the background while you concentrate on writing quality code and reports errors back to you.

Tools

  • Flow: A static type checker for your JavaScript code. Flow checks your code for errors through static type annotations. These types allow you to tell Flow how you want your code to work, and Flow will make sure it does work that way.

PyTorch Tutorials Refresh - Behind the Scenes

By Jessica Lin
October 7, 2020

With every new release version, PyTorch pushes out new features, updates existing ones, and adds documentation and tutorials that cover how to implement these new changes. Check out a behind the scenes look at how the team planned and deployed an overhaul of the PyTorch tutorials portal.

Tools

  • PyTorch: An open source deep learning library

Connecting a web app to your PyTorch model using Amazon SageMaker

By Cami Williams
August 3, 2020

Leverage Amazon SageMaker to deploy a PyTorch neural network with the goal of hooking it up with a REST API to access it via a web application. The final product? An interactive web app that detects digits of pi via drawings.

Tools

  • PyTorch: An open source machine learning framework that accelerates the path from research prototyping to production deployment
  • Amazon Sagemaker: A fully managed service that provides every developer and data scientist with the ability to build, train, and deploy machine learning models quickly

Build a Smart Bookmarking Tool with Rust and Rocket

By Joe Previte
June 3, 2020

Facebook uses an internal smart bookmarking tool to navigate across tools, wikis, knowledge bases, and more. Learn how to build a simple clone of it using Rust and Rocket.

Tools

  • Rust: A general purpose programming language to build reliable and efficient software
  • Rocket: A web framework for Rust