I've just discovered that the "package name" equals "name space" convention would actually be quite painful for what I intended to do with vibe.d. That is, I want to split it up several sub packages (the actual split is not yet decided). I really wouldn't want to have to split them up into one package per vibe.* sub package, not even if it is possible to define multiple sub packages within the same repository and directory hierarchy. That's just not the right level to split things up. And the alternative would be to break all dependent code and restructure everything (e.g. for vibe-core: vibe.core, vibe.core.inet, vibe.core.utils), which is also not the intention.

Example split:

vibe-d -> vibe-http, vibe-mail, vibe-db
 - vibe.vibe
 - vibe.d

vibe-core
 - vibe.core.*
 - vibe.inet.*
 - vibe.utils.*

vibe-ext -> vibe-core
 - vibe.data.*
 - vibe.stream.*
 - vibe.templ.*
 - vibe.textfilter.*

vibe-http -> vibe-ext
 - vibe-http.*

vibe-db -> vibe-ext
 - vibe.db.*

vibe-mail -> vibe-core
 - vibe.mail.*