My Preferred Module System (a fusion of earlier proposals)

Yes, "external" here means outside.

I'd be fine with having extern crate function just at the crate root, but I'd still like not dropping it, because of visibility modifiers, renames, attributes (as mentioned above).

It's not required. But since extern crate * and mod * are useful (see above), I thought it would make sense for them to mean something.

I'm not sure what part gave you that idea. My plan was:

// assuming we have
mod foo;

use foo; // no longer needed, mod foo or mod * do this
use foo::Item; // can now be referred to locally
pub use foo; // would just make the submodule public, same as pub mod foo;
pub use foo::Item; // Item can now be referred to locally, and it's public

The difference to the current system is that without any visibility specified, the submodule would only be available in the current module.