Year in Review: 2017 Highlights from Uber Open Source

Uber
4 min readadvanced
--
View Original

Overview

The article highlights Uber's contributions to the open source community in 2017, showcasing several key projects that enhance software development and engineering practices. It emphasizes the importance of open source technologies in building scalable systems and introduces notable projects like Jaeger, Pyro, RIBs, Horovod, deck.gl, and NullAway.

What You'll Learn

1

How to implement distributed tracing using Jaeger

2

Why to use Pyro for probabilistic programming in AI applications

3

How to apply RIBs architecture for scalable mobile app development

4

How to speed up distributed deep learning projects with Horovod

5

How to visualize large datasets using deck.gl 4.0

Key Questions Answered

What is Jaeger and how does it help in distributed tracing?
Jaeger is an open source distributed tracing system developed by Uber, designed to monitor complex microservice architectures. It allows for tracking distributed context propagation, transaction monitoring, and performance optimization, making it easier to identify performance bottlenecks and analyze service dependencies.
What is Pyro and what are its applications?
Pyro is a probabilistic programming library built on PyTorch that facilitates deep probabilistic modeling. It combines modern deep learning techniques with Bayesian modeling, making it suitable for a wide range of AI applications, from research to practical implementations.
How does RIBs architecture improve mobile app development?
RIBs is a cross-platform architecture framework that promotes modularity and maintainability in mobile app development. By breaking down app logic into small, independently testable components, it enhances collaboration among large engineering teams and simplifies the management of complex states.
What is the purpose of Horovod in deep learning?
Horovod is a distributed training framework designed to simplify and accelerate deep learning projects using TensorFlow. It utilizes a ring-allreduce approach to improve performance and usability, making it easier for developers to implement distributed training without extensive code modifications.
What advancements does deck.gl 4.0 offer for data visualization?
deck.gl 4.0 enhances geospatial exploration and data visualization capabilities by introducing new visualization layers and improved documentation. It supports on-the-fly data aggregation and extends its functionality beyond maps to include machine learning and abstract data visualizations.
How does NullAway help in reducing NullPointerExceptions in Java?
NullAway is an open source tool that helps eliminate NullPointerExceptions in Java applications by providing type-based null checking. It integrates with the Error Prone framework to enhance code reliability and developer productivity, making it easier to build safer Android applications.

Technologies & Tools

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

Backend
Jaeger
Distributed tracing system for monitoring microservices.
AI/ML
Pyro
Probabilistic programming library for deep learning.
Mobile
Ribs
Architecture framework for scalable mobile app development.
AI/ML
Horovod
Distributed training framework for TensorFlow.
Data Visualization
Deck.gl
Framework for large-scale WebGL-powered data visualization.
Backend
Nullaway
Tool for eliminating NullPointerExceptions in Java.

Key Actionable Insights

1
Implement Jaeger for distributed tracing in your microservices architecture to gain insights into performance bottlenecks.
Using Jaeger can significantly improve your ability to monitor and optimize service interactions, leading to better performance and reliability in production environments.
2
Adopt Pyro for your AI projects to leverage probabilistic programming techniques that can enhance model accuracy and flexibility.
By utilizing Pyro, you can streamline the development of complex models, making them more accessible and easier to implement in real-world applications.
3
Utilize RIBs architecture to manage large-scale mobile app development efficiently, ensuring maintainability and scalability.
This architecture pattern is particularly beneficial for teams with many developers, as it promotes clear separation of concerns and simplifies testing.
4
Incorporate Horovod into your TensorFlow projects to accelerate distributed training and improve model performance.
Horovod's design allows for easier scaling of deep learning models, which is crucial for handling large datasets and complex computations.
5
Leverage deck.gl 4.0 for advanced data visualization tasks, especially when dealing with geospatial data.
The new features in deck.gl 4.0 can enhance your data presentation, making it more interactive and insightful for users.
6
Use NullAway to proactively address potential NullPointerExceptions in your Java applications, enhancing code safety.
By integrating NullAway, you can reduce runtime errors and improve overall application reliability, which is essential for maintaining user trust.