#engineering #design #api #software


Top layers trying to create abstraction are limited by their underlying layers, and leak those limitations, thus breaking the abstraction.

Therefore an abstraction cannot really be seen as real black boxes because they will leak limitations and querks of what's behind.

All non-trivial abstractions, to some degree, are leaky[1].

Examples of this are

A corollary called "Hyrum's law"[2] is that with enough users, any observable behaviors (including incorrect ones) will be depended upon by someone.



Law of implicit interfaces is a specialization of this law, telling that provided a large enough number of users, leakages will get depended upon.

Conceptual integrity is important precisely because abstractions are leaky.


[1]: Joel Spolsky / The Law of Leaky Abstractionsref is the seminal post about this.

All non-trivial abstractions, to some degree, are leaky.

~ Joel Spolsky

[2]: Hyrum Wright

With a sufficient number of users of an API, it does not matter what you promise in the contract: all observable behaviours of your system will be depended on by somebody.

~ Hyrum Wright