EDIT_THIS ADD_MIRROR ADD_REFLECTION ADD_SHARD PUBLISH ?

Interface

shard⁄Interface
in reflections⁄

Infrastructure accretes in the form of layers of abstractions. Each layer builds on top of the prior one, using its metaphors to bootstrap more complex ideas. This conceptual leap-frogging permits one to not work from scratch, and as such multiply efforts. Critically, however, it becomes imperative to design layers of infrastructure that retain an expansive space of possibilities.

Deeper layers of the infrastructural stack evolve at slower paces than higher layers, simply because as more infrastructure gets stacked on top, changing too quickly may cause the whole edifice to collapse. In other words, the more others depend on you, the harder change becomes.

In order to change without affecting those that depend on you, it becomes beneficial to define an interface, the contract of what you offer. As long as the interface is consistent, it does not matter how the promise is fulfilled. This is the positive side of a black box; you’re able to swap it out as long as the same things come out, given the same things going in.

If M different users interact with N different providers separately, each of the MxN interfaces must be designed. If an intermediate standard is chosen, then the M users interact with one standard, as do the N providers. Therefore, only M+N interfaces are designed. The standard operates as a narrow waist, reducing complexity. The prototypical example of a narrow waist is the Internet Protocol (IP). Email, hypertext, domain resolutions, and more all interact via the IP, which itself is implemented via copper cable, fibre optic, or radio.

Text and bytes are the two most important narrow waists in computing. The computer uses raw bytes as a narrow waist between a variety of media (images, text, video, 3D models, etc) and a variety of transmission and compression techniques. An HTTP message transmits arbitrary data in the form of text or bytes between a client and server. It does not matter what is in the payload. Similarly, gzip can be used to encode any arbitrary sequence of bytes, regardless if the file is a sequence of text or the RGB of an image.