Composability – A Secret Sauce For Computers

Published by Sohhom on

(26 January 2024) This post is incomplete, please check back later for the finished version.

Composability is the term used to describe a principle that allows a lot of magic to happen.

How? We shall take a look in this article. By the end of it, we hope that you will have a good grasp on the meaning of the principle. More importantly, we will try to provide an outline on how it relates to computers software, hardware, machine learning, and all sorts of systems.

If you have ever used the output of one system or process (e.g. a cake batter) and given it to another (e.g. the baking oven), you have used composition. It is a univeral principle – not just related to computers.

Examples of composability in everyday life

Here are some other examples where composability plays a major role:

However, it plays a special role in allowing humans like you and me to design, debug and iterate on computers, as we shall see next.

Composability in system design

Wikipedia gives a cryptic description:

Composability is a system design principle that deals with the inter-relationships of components. A highly composable system provides components that can be selected and assembled in various combinations to satisfy specific user requirements.

“Composability allows enterprises to swap and pair software components at will” says article called Why composability is the single most important requirement in software

The outstanding success of this model is the Unix commands designed to be
connected by pipes: cat , sort , sed , and their friends. There are quite a few
of these, and you can do a lot by putting them together with a small amount of
glue, usually written in the shell language.
It works because the components have a very simple interface (a character
stream, perhaps parsed into lines or words) and because most of them were writ-
ten by a single tightly-knit group. Not many components have been added by

“Software Components: Only The Giants Survive” by Butler Lampson in “Computer Systems: Theory, Technology, and Applications” (2004)