I've been thinking about composability. Unix CLI functions, because they rely on text streaming in and out, can easly compose. Emacs modules / functions are all working with a buffer, which makes them easy to compose.
For my games, I've always had issues with composability. Specific libraries have to be wrapped to work for each game.
This is especially noticable in mapping tools, which combine systems for pathing, autotiling, editing, rendering, masking, collliding, events, and data storage.