Oh, I missed that detail. That actually could work quite nicely. Though it's a bit of a messy build script, it's something we could write generically to work well on any "project". The only remaining remnant of the "prefixed" namespace is in myLib.mli/.ml module MyModule = MyLibMyModule module Utils = MyLibUtils It would be nice to eliminate that as well, but I could imagine auto-generating these module alias mappings. This sounds like a nice workaround the namespace issue, but do you think it would be worth supporting module aliases themselves as a form of namespacing at compilation time, so that this intermediate prefixed compilation artifact isn't needed? Thank you for the help, J On Sun, Dec 28, 2014 at 1:26 PM, Leo White wrote: > Jordo writes: > > > Thank you for the reply, Leo. One of the requirements was that > developers be able to name their internal modules as they > > see fit without having to fear naming collisions. It's also required > that file names correspond directly to module names > > (or at least we retain the capability to do so). It appears in this > solution you suggested, developers still must prefix > > their file names in order to avoid collisions. > > None of the source files have prefixed names, only intermediate files > (that is why you use `-o`). For both reading the source code and using > the library through `MyLib.Foo`, the prefix does not appear. > > Regards, > > Leo >