explaingit

apache/thrift

10,919C++Audience · developerComplexity · 4/5LicenseSetup · moderate

TLDR

Apache Thrift lets programs written in different languages call each other's functions over a network, with all the glue code automatically generated from a single shared definition file.

Mindmap

mindmap
  root((Apache Thrift))
    What it does
      Cross-language RPC
      Code generation
      Data serialization
    Key concepts
      IDL definition file
      Remote procedure call
      Version compatibility
    Supported languages
      28+ languages
      C++ and Java
      Python and Go
    What is included
      Thrift compiler
      Language libraries
      Tutorial and tests
    Audience
      Backend developers
      Distributed systems
      API designers
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Build a distributed system where services written in Python, Java, and Go call each other's functions reliably.

USE CASE 2

Define a shared API between two services in a single Thrift file and auto-generate client and server code for both.

USE CASE 3

Add backward-compatible versioning to a live API so old and new clients keep working during a gradual rollout.

USE CASE 4

Replace custom serialization code with auto-generated Thrift code across any of its 28 supported languages.

Tech stack

C++JavaPythonGoRubyPHPDocker

Getting it running

Difficulty · moderate Time to first run · 1h+

Building the Thrift compiler from source requires standard build tools, the README recommends Docker for a consistent environment.

Apache 2.0, use freely for any purpose including commercial products, keep the license notice.

In plain English

Apache Thrift is a tool for making programs written in different programming languages talk to each other. Normally, if you write one service in Python and another in Java, getting them to exchange data and call each other's functions requires a lot of custom work. Thrift solves this by letting you describe your data structures and service calls in a simple definition file, then automatically generating the code needed for both sides in over 28 languages. The core idea is remote procedure calls, meaning one program can call a function that lives in another program running on a different machine, as if it were a local function. Thrift handles the details of packaging the data for the network, sending it, and unpacking it on the other end. One practical feature is that Thrift is designed to handle version mismatches gracefully. If you update your server but some clients are still running the old version, or vice versa, Thrift is built to keep things working rather than breaking immediately. This makes it practical for real-world systems that cannot all be updated at the same time. The repository contains the Thrift compiler (the tool that reads your definition file and generates code), library implementations for each supported language, a tutorial, and test code. Building it requires some standard development tools and the instructions recommend using Docker for a consistent build environment. Thrift is an Apache Software Foundation project and is Apache 2.0 licensed.

Copy-paste prompts

Prompt 1
Write a Thrift IDL file for a user profile service and generate Python client code and a Java server stub from it.
Prompt 2
How do I add a new optional field to an existing Thrift service without breaking clients running the old version?
Prompt 3
Set up a Thrift RPC server in Go that a Python client can call, using Docker for a consistent local environment.
Prompt 4
Explain the difference between Thrift binary, compact, and JSON transport protocols and when I should choose each one.
Open on GitHub → Explain another repo

← apache on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.