One of the best new features of the upcoming REBOL 3 is the module system. I’m not going to go into the rationale behind modules, but I would like to make a proposal about module names.
Every module can optionally have a name. A name is required if the module author wishes to export words from the module. If the module is contained in a file, it’s important to note that the module name and the file name need not be the same. REBOL uses the module name to ensure that a module is never loaded twice. This allows us to import the module as often as we like without incurring any additional overhead.
The name of a module must be a valid REBOL word. Many REBOL programmers are used to REBOL’s "programming in the small" (PITS) philosophy, so I think their tendency will be to use simple module names. However, modules are not a PITS feature, they are a "programming in the large" (PITL) feature. Using simple module names will decrease the opportunity for reuse by making collisions more likely.
So my proposal is to take a page from Java and use package-style module names. Fortunately, the "." character is perfectly valid inside a REBOL word and has no particular meaning as it does in other languages. Here are some examples:
As you can see, these are names for math modules. My fear is that many REBOL programmers will release modules naively named "math" and this will make it much harder to use them together. By hijacking Java's simple convention of reverse domain names, the problem is neatly solved.