As for why we don’t expose transitive deps by default: Only exposing direct deps limits module collisions to a minimum and therefore the modules you might have to rename. E.g., an older stdlib is usually not in scope so you don’t have to worry about renaming modules from it to avoid a collision unless you truly need a direct reference to the old stdlib.