I think this proposal is definitely much better than the previous one! So my part of feedback and some ideas (a bit random for now):
- 
pub useis often referenced in terms of “exporting” something, so why not to call it just that? So we’ll writeexport foo;for exporting whole module to outside world, andexport foo::{bar, zoo};for exporting elements or sub-modules, andpub usewill only be used for sharing inside crate. (of courseexport'ed items will be visible inside crate too) This way facade pattern can be expressed naturally using multi-line approach without much boilerplate and problem of “automatic promotion of key items” will be solved too. I think it certainly will help with teaching and intuitiveness of the module system. And maybe then even rename from/use to from/import for name coherence and to please Python crowd.
 - I think from/use will be better compared to use/from, as it’s represents top-down approach more intuitive for hierarchies. And in general I like removal of 
extern cratein favour of from/use and I think it has a nice readability compared to proposals based onuse ::cratename...oruse extern::cratename::.... Although we need to consider public re-exports and how they will look. - It would be good to allow 
from crate use self;, so items could be referenced ascrate::foo. Or just copy Python and use from/import andimport crate;. This way re-export will look asimport crate; export crate;. Alternative would bepub import crate;, but I don’t like it much. - I personally feel explicit 
use's (ormods) for bringing module into the crate scope is a must have. One of the big negative points in the previous proposal was implicitness (i.e. taking module structure from file system), which I strongly dislike and which I think will have an undesired impact on code discoverability and readability. (yes, I am generally not using IDEs) Also warnings can significantly reduce value of mentioned potential problems. So in some senseusewill replace currentmodfor files with onlyimplblocks. But at this point why not just leavemodas is? - Continuing on 
x/x.rsproblem I think we can allow to writemod foo::bar::zoofor adding foo/bar/zoo.rs into crate scope without requiringmod.rses in the foo and bar directories and allow to writeuse zoo::item;, so we’ll forget exact path tozooas an implementation detail. - About absolute/relative paths I am more or less indifferent, with slight favour of keeping absolute path to reduce breakage.
 - About 
pub(crate)by default, I personally don’t have crates large enough to have need for finer privacy granularity, so I can’t judge, but maybe need for it is an indication for time to split project into several crates?