First let me apologize if this is not appropriate because I've only recently subscribed again to this list and haven't thoroughly checked if this was discussed before.
I thought that the intention of namespaces was to disambiguate homonyms such as Nirvana (Music and Mythology), function (Mathematics and Programming Languages), ring (Mathematics and Common use) et cetera. But now it seems that they are only used to distinguish between pages with different types of functions. I personally was planning to write some articles on database normalization and there we have also a lot of terms (relation, key, dependency, normal form) that have a very specific meaning there. If I now see the problems that Uri Yanover mentions, then it seems to me that these problems are very similar to those in Mathematics and Computer science (and other fantasy worlds, :-)) and could also be solved by a general user-definable hierarchical name space implementation. Let me make a suggestion:
1. With every page a name space of the same name is associated. So with the page "Middle_earth" there would be a name space "Middle_earth:" and with the the page "Database_theory" there would be a name space "Database_theory:".
2. A page name would consist of (an optional) namespace, e.g., "relational_model:", and the basic page name, e.g., "first_normal_form". The full page name would in this case be "relational_model:first_normal_form" or for example "Middle_earth:Elrond". Since a name space corresponds with a page name, a name space itself can also be qualified with another name space, so you might have "Computer_science:Database_theory:Relational_model:First_normal_form". (I don't think the hierarchy will be that deep in practice, but you get the point.)
3. The looking up/linking of page names that are not qualified with a namespace is done by walking up to the root of the tree of name spaces. So a link on the page for "first_normal_form" is first looked for in the name space "First_normal_form:", then consecutively in "Relational_model:", "Database_theory:", "Computer_science:" and finally the global name space ":"". For Uri's example this would mean that the look-up of "Elrond" would start in the name space "Middle_earth:" if it appeared on the page "Middle_earth".
4. If a page name is qualified then the look-up starts at the given name space. So "Computer_science:relation" is looked up first in the name space "Computer_science" even if it appears on a page with name space "Database_theory".
5. If a page name belongs to a certain name space then it also belongs to the name spaces higher up the name space hierarchy unless a conflict arises.
6. The looking up only happens when the page is submitted. After that the unqalified page name is replaced with a fully qualified page name. That prevents unneccesary processing and avoids problems with page names becoming ambiguous because a new page with the same name is added in a sibling name space.
7. If a page name is not found then a "creation link" is created and its namespace is either the name space that was specified (if it exists) and if no name space is specified then it is the local space name, i.e., the name space of the page that the link is on. If the specified name space does not exist already then an error is reported and no "creation link" is created.
8. Every page is presented with somewhere on the screen a link to the page corresponding to its namespace.
That is about all. I know this looks very much like subpages on steroids (Larry is probably foaming at the mouth right now :-)) and in some sense it is, but I really think we need user-definable hierarchies of name spaces and I don't see why we cannot trust the self-organization of Wikipedians on this. I also realize that this is not easy to implement, to put it mildly, but if you think it is a good idea then I would probably feel morally obliged to help build it. I have a little PHP experience and have once written patches for PhpWiki.
Btw. note how elegantly Talk-pages fit into this scheme; you just add a link [[Talk]]. No further special arrangements necessary. On the down-side the user now has the indicate explicitly that a page has to be put in the highest name space by writing for example [[:Wikipedia_talk]] where ":" represents the root name space.
Kind regards,
-- Jan Hidders