IDL and RPC: A Historical Overview

IDL and RPC: A Historical Overview

Since the launch of Protocol Buffers and GRPC, we have seen a sharp rise in interest in and adoption of Interface Description Languages across many organizations.

Given the rise of microservice architecture and Cloud Native Applications and a new era of computation, GRPC and Protocol Buffers have gained unmatched popularity. The wide variety of languages supported by the framework and a thriving ecosystem has made it easy for any organization to adapt and start using it in production-grade applications.

Google, Netflix, Uber, Square, IBM, Cisco, Juniper Networks, Docker, CockroachDB, Dropbox, Yik Yak, VSCO, ngork and many other companies have used gRPC in their production successfully.

CNCF projects and standards have shown real use cases where projects like kubelet and container Storage Interface have used it successfully in the Open Source landscape.

Background

Since the beginning of distributed computation and communication across networked devices, a common theme has been running around about the efficient packing of data on wire for transmission to save time and space, and defining an interface over which machines could communicate with each other. A lot of low-level details are abstracted and taken care of by communication protocols like TCP and HTTP but the applications still need a uniform way of describing the communication patterns, contracts and message formats, this is handled by Interface Description Languages.

Interface Description Languages have been around for a while now, dating back to 1969, when an extensive amount of progress was made in the development of Remote Procedure Calls and network communication.

The earliest reference for remote communication in IETF I could find was in RFC 11 ・Implementation of the Host-Host Software Procedures in GORDO which defines Host-Host Software Procedures dating back to 1969, which got superseded by RFC 33・New Host-Host Protocol.

Similarly one could find the earliest discussions about data serialization and deserialization in IETF RFC 5 ・DEL Decode Encode Language dating back to 1969.

The term Remote Procedure Call was popularised by Bruce Jay Nelson in his Ph. D. thesis titled Remote Procedure Call published in the year 1981. Here is a link to the PDF thesis from Bruce Jay if you are interested.

Later as networked systems grew in adoption, Sun ONC Protocol was proposed as RFC 1050 ・RPC: Remote Procedure Call Protocol Specification in 1988. This description has a clean representation of Remote Procedure and

Leading the innovation ahead Object Management Group released a visionary idea for communication across truly heterogeneous systems, systems on different networks, different CPU architectures, different Operating Systems, and different programming languages named Common Object Request Broker Architecture abbreviated as COBRA in 1991.

Following this suit, we see innovation from Mircosoft with the introduction of DCE/RPC and Microsoft Interface Definition Language in the late 1990s

Since then communication across networked devices has grown and we have seen WSDL specification in 2000 as a collaboration between Ariba, IBM and Microsoft. Post 2000 we see companies like Facebook, Alibaba, Google, and Cisco open-sourcing their internal RPC stacks.

List of a few noticeable IDL

ASN.1 — The great grandfather in the IDL ecosystem, developed by the International Telecommunication Union Telecommunication Standardization Sector, is a data type declaration notation— 1984

dubbo — donated to Apache Software Foundation by Alibaba — 2017

thrift — donated to Apache Software Foundation by Facebook — 2008

avro — developed by Apache Software Foundation as part of Apache Hadoop — 2009

Cap’n Proto — developed by Kenton Varda former maintainer of Protocol Buffers — 2013

FlatBuffers — developed by Wouter van Oortmerssen and Open Sourced by Google — 2014

FIDL • Fuchsia IDL — developed by Google for Fuchsia OS to be used by Inter-Process Communication

WSDL • Web Services Description Language — developed by Ariba, IBM and Microsoft — 2000

smithy — developed by Amazon, smithy 2.0 is a recent iteration — 2024

MIDL • Microsoft IDL — developed by Microsoft based on DCE/RPC currently in its 3.0 iteration— Late 1990s


This list is not exhaustive but a mere snapshot of a few famous protocols some due to their historical importance such as ASN.1, and some for their trendiness such as Protocol Buffers.

In the next article, we will be exploring Heterogeneous Systems and Interfaces.