July 11, 2021

The Open Source Libraries Used by Instagram (Android)

Alexis González Valenciano
CTO & Co-Founder
Instagram a deep dive into FAANG technologies

Once in a while, taking an hour or so to read about libraries can be very useful to improve one’s developer profile, discover helpful libraries, and also go through difficult challenges in which gold code is found within a good application. In this case, I’ve chosen Instagram because it is part of the FAANG tech giants managing to create these big apps that are more than just a tool or social media platform.

In this article, I will be giving a detailed list sorted by license of all the open source libraries that I consider useful for multiple project scenarios.

Apache License 2.0

ACRA

"ACRA is a library enabling Android applications to automatically post their crash reports to a report server. it is targeted at Android application developers to help them get data from their applications when they crash or behave erroneously"

Use case: It can be useful for almost any application. It can help to track production errors, but you may want to check the costs because a back end has to be implemented alongside the library to check reports.

GSON

"Gson is a Java library that can be used to convert Java Objects into their JSON representation. It can also be used to convert a JSON string to an equivalent Java object. Gson can work with arbitrary Java objects, including pre-existing objects that you do not have the source code of.”

Use case: To store Java objects to the file system, to store persistent data, or to transfer data through a protocol to external devices or services.

LeakCanary

“LeakCanary’s knowledge of the internals of the Android framework gives it a unique ability to narrow down the cause of each leak, helping developers dramatically reduce OutOfMemoryError crashes.”

Use case: Reduce errors when doing memory-intensive workloads and also improve the performance of an application.

Libphonenumber

“Google’s common Java, C++ and JavaScript library for parsing, formatting, and validating international phone numbers. The Java version is optimized for running on smartphones, and is used by the Android framework since 4.0 (Ice Cream Sandwich).”

Use case: User interfaces that validate phone number formatting related to a specific country.

Math.js

“Math.js is an extensive math library for JavaScript and Node.js offers an integrated solution to work with different data types like numbers, big numbers, complex numbers, fractions, units, and matrices.”

Use Case: It can be used on any mathematical operations within a business logic or complex graphics manipulation.

Seismic

Description: According to its documentation, it provides “Android device shake detection.”

Use case: It can be used in game development, deletion, and features like Spotify Driver mode when you want to enable a specific mode without too much work from the user.


SQLite JDBC

"SQLite JDBC is a library for accessing and creating SQLite database files in Java.”

Use case: Suited for large applications. Remote sync and save organized data within local storage with easy access using SQL syntax.

ZXing

“ZXing (“zebra crossing”) is an open-source, multi-format 1D/2D barcode image processing library implemented in Java."

Use case: Game development, event communication apps, ticket validation apps, authentication with third-party apps, and almost any supermarket/store that wants to automate a process with their items instead of using traditional barcode scanners.

MIT License

asn1crypto

“In addition to an ASN.1 BER/DER decoder and DER serializer, the project includes a bunch of ASN.1 structures for use with various common cryptography standards.”

Use case: Since this is a Python library, I supposed that what Instagram uses is a port to Java or some kind of binding to Python. Use cases can be as simple as securing a password with one-way encryption, communicating securely to a server, and secure E2E encryption with an algorithm like RSA.

Brotli

“Brotli is a generic-purpose lossless compression algorithm that compresses data using a combination of a modern variant of the LZ77 algorithm, Huffman coding and 2nd order context modeling.”

Use case: Sending and receiving data to an API can be one of its main use cases.

GoogleTest

“This repository is a merger of the formerly separate GoogleTest and GoogleMock projects. These were so closely related that it makes sense to maintain and release them together.”

Use case: Creating reports on unit testing and rich assertions to validate code.

Sodium

“Sodium is a new, easy-to-use software library for encryption, decryption, signatures, password hashing and more.”

Conclusion

Instagram uses many more libraries. You can check for yourself by going to Instagram App → Settings → About → Open source libraries, but consider the ones listed useful for many application scenarios.

I hope this review is one of many deep dives into interesting applications to see what big tech companies use as daily open source drivers. We can also determine whether a “mortal” application could use some of their core libraries and show implementations or examples of how to use them.

Thanks for reading!

Join dozens of startups who trust Bananacode

No matter what stage you're in, Bananacode's team is the missing piece you've been looking for to outsource your next challenge.