I think we're getting pretty close to figure it out in the world of node with npm.
* it doesn't have virtual packages (in the sense, "'email-sender' is a package that provides a sendmail() function")
* it hardcodes a max of two dependency sets: runtime and dev. This maybe be better than a freeform Gemfile or a 6-scopes pom.xml but it seems quite arbitrary