This was added to prevent inheriting of Classes and Packages that are properties on the superclass.

So, if Uize.Widget is loaded, then Uize.Widget.Bar shouldn't have a Widget property on it. It's not the most robust test and it assumes that class properties are functions whose names begin with a capital letter. We definitely don't want to go back to the way it was before this change was added and have ever deep subclass polluted with all the classes defined under the superclass' namespace.

In the future, this will be addressed by an approach that doesn't place classes as properties on another class' namespace, but where classes are referenced from a global lookup either by a string name, or within the module's scope through a mapping to a local name. The latter approach is desirable in the possibilities that it opens up for different modules to get different versions of the same module, or even substitutions. Version selection along with alternate substitution / injection can't be accomplished with the global lookup approach or the properties-on-host approach.

In the meantime, I'm curious what motivated this change. Was there an actual problem you encountered that was addressed by this change?