Following up from GHC and Cabal: the big picture, I hypothesise that part of the problem described is due to poorly-specified APIs[1], particularly the command line API to GHC that enables “packages” (perhaps more precisely, “units” – the ambiguity is symptomatic of the poorly-specified API). This got me thinking further. Here’s an idea: A nice way of specifying command line APIs would be to take a subset of all possible command lines for a program, and call it the “core” comm...