Thrift is an interface definition language that is used to define and create services for numerous languages. It is used as a remote procedure call (RPC) framework and was developed at Facebook for “scalable cross-language services development”. It combines a software stack with a code generation engine to build services that work efficiently to a varying degree and seamlessly between ActionScript, C#, C++ (on POSIX-compliant systems), Cappuccino, Cocoa, Erlang, Haskell, Java, OCaml, Perl, PHP, Python, Ruby, and Smalltalk. Although developed at Facebook, it is now an open source project in the Apache Software Foundation Incubator. The implementation was described in an April 2007 technical paper released by Facebook, now hosted on Apache. To put it simply, Apache Thrift is a binary communication protocol.