baby ideas

Posted on Nov 19, 2021Read on Mirror.xyz

A Primer on Composability

It’s worth exploring the value of composability, which comes about because of blockchain interoperability. I’ll introduce the idea by comparing it with another common term in software: open source. While it is now relatively common as a hallmark of software openness to make something open source, enabling interoperability is less common, and less easy.

The distinction between the two is that for open source, the source code is freely available,  whereas interoperability means that one application/system can exchange, integrate, access and use another application or system’s functionality and data. Things like common protocols, permissionlessness, and no or minimal system downtime increase interoperability.

Comparing open source and interoperable systems.

In a way, open source is easy to operationalize. You simply release your source code. Interoperability, however, has to be built into the system, and exists by degrees. Just because you can see the source code of an app doesn’t mean you can use its data, communicate with it, or build on top of it. Usually developers have to spend significant effort building and maintaining APIs to facilitate interoperability.

Interoperability is generally enabled by canonical protocols and standards for interface design and communication. While the underlying layer of the internet is fundamentally interoperable through e.g. TCP/IP, HTTPS, TLS and email protocols, most applications on top of it are not. This results in people becoming inescapably tied to platforms, unable to change clients or move their data, and the proliferation of bloated, monopolistic silos like Instagram and YouTube.

Imagine if every application on the Internet by default had a zero-downtime, publicly exposed API. You can message Discord accounts using WhatsApp, and watch videos hosted anywhere on a video client of your choice. Flexibility is the norm; silos are rare.

Smart contracts are tremendously interoperable by default. They can not only programmatically interact with other smart contracts, the blockchain guarantees equal uptime, data availability and validity of all programs. It’s possible to use and compose existing primitives on top of each other to make potentially complex and tightly integrated systems, without fear that something further down the stack will fail. Anyone’s work can be highly interoperable without them putting significant effort into making it so.

You can also see the blockchain as a decentralized database and source of shared truth—you can read data to e.g. verify that some existing algorithm acts in an expected way, rather than just seeing the source code. This decentralized data availability adds extra guarantees.

We’ve made a decentralized world computer that we can easily build together on, with a database we can all use as shared reference. DeFi has exploded as a result, going from the invention of fully-on-chain stablecoins to the proliferation of complicated financial derivatives in just 2-3 years. What might interoperability do for other applications?

A snippet from the appendix of my other blog post on “Turing-Complete Governance” that functions as a general primer on composability/interoperability.