At the Extension:Scribunto/Lua reference manual, at several places,[1] it is pointed out that the lua-libs should use the form 'mw.ext.NAME'. This creates visual noise in the code. Any lib included should have a extension page, thus it has already been given an unique name. In addition, only the libraries that need to be preloaded are added to the mw-structure, and those are the extensions. The ext-addition is like saying "this is an extension and it is only extensions that needs to be added to the mw-struct so we make it abundantly clear that this is an extension".
The only cases where a name can collide is if some external lib is included, that external lib has the same name as an extension, and if someone in addition preloads the external lib. The chance is quite frankly pretty slim, as there are rather few external libs that makes sense to preload in this environment, especially as preloading imply some kind of interaction with the environment. That means it is an extension.
I guess I'm stepping on some toes here…
So to make it abundantly clear, not 'mw.ext.NAME' (or 'mw.ext.NaMe', or 'mw.ext.name') but 'mw.name' (lowercase, not camelcase). If the call is a constructor or some kind of builder interface, then 'mw.name(…)' is totally valid. I do not believe it is wise to turn the lib into an instance by the call, but it can return an instance, it can cache previously returned instances, and it can somehow install the instance(s) in the current environment.
An extension should have any pure root libs at 'pure/name.lua' and additional libs at 'pure/name/additional.lua', where 'pure' is resolved in the 'ScribuntoExternalLibraries' hook.
[1] https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Exte...)
wikitech-l@lists.wikimedia.org