A Linux app as a DAG of dependecies, sometimes hard to reconcile? Welcome to 25+ years ago, when dynamic linking and .lib.so stuff became the norm on Linux. That is, basically as long as Linux existed.
Monolithic static apps and stuff like Snap are relatively modern.
Yeah, I know, and I've certainly got blood on my hands here as I helped to implement dynamic linking in SunOS 4.0.
That said, there is a qualitative difference between an app as DAG where said DAG is restricted to only those nodes that are present on a given "release" which describes the entire graph, and an App which is a DAG on a set of subgraphs, each with their own notion of 'currency' and overlapping nodes with other subgraphs.
Monolithic static apps and stuff like Snap are relatively modern.