I've only somewhat followed this discussion. The following might be nonsensical or already discussed.
The issue with automatic modules is we don't know what the names of future modules will be, but what we do know is what packages we require. So instead of guessing a module name, we could require package(s) until the actual module becomes available. module my.module { exports ...; requires ...; requires package org.junit; requires package org.junit.rules; } So in the above example, it would need to check if a module on the module-path exports the packages listed, if not, look in the Jar files for the packages. Once Junit modularizes their stuff, we can update our module at our leisure: module my.module { exports ...; requires ...; requires <junit module name>; } Bob