Wiki Namespaces

I think this would be a great idea for an extension to the Wiki Web system. The Wiki Web is likely to grow; there's a chance it will grow so large that millions of people will start contributing to it. There are lots of multi-word phrases that have different meanings in different contexts. Sooner or later, somebody will try to define a page and find out that it has already been defined - as something completely different.

Example: I might decide to write a whole set of pages about Implementing Scheme, and in the process produce a page called Implementing Fundamental Data Types. But somebody else might be Writing Perl Interpreters, and will also want to produce a page called Implementing Fundamental Data Types. Clash! Now, one or both of us has to rename our pages. This makes the names longer, as Implementing Fundamental Data Types In Scheme and Implementing Fundamental Data Types In Perl.

Another alternative might be to introduce hierarchical namespaces to Wiki. Then if you visit my Implementing Scheme page, links that went to Implementing Fundamental Data Types would take you into the Implementing Scheme namespace. So the real name of the page would be something like Implementing Scheme::Implementing Fundamental Data Types. But in many situations you might not have to type that much.

It's a thought. Maybe it would Make The Wiki Too Complicated. But maybe not.


I was also thinking about this, but found no real solution. Currently I think about

one global namespace (globalspace)

multiple dedicated namespaces (localspaces)

any page in a localspace produces a hint in the globalspace

a Link Pattern may produce more than one link

the priority is


display option 1 [Date Types] [Global.Data Types] [Java.Date Types]

display option 2 [Date Types] [=>] (leading to a link page)

An existing example of something like this is the Wiki Clone Dolphin Wiki Web from Object Arts (I'm running it on NT) which organizes into separate "wikis" by directory. Entities in one "wiki" can be linked to just like other Wiki Pages by including the "wiki" name with a colon in front. -- Claude Muncey

This is also possible in Use Mod Wiki using an intersite map file. But this does neither help you know what pages exist in the different wikis nor does it create automatic links if you don't care. -- hl

One idea I had running through my head recently was that all the trouble with off-topic discussions and Difficult To Wikify Names could be solved if this simple technique was followed:

Unadorned Wiki Names refer to entries in the current Wiki Namespace.

Non-Wiki Names beginning with a colon (':') are treated as Wiki Names that refer to the current namespace (colon is not displayed).


Wiki Names of the form Wiki Name:Wiki Name refer to a different namespace specified by the first Wiki Name (the full link is displayed). Essentially, a Wiki Link is a Wiki Namespace followed by a colon, followed by a word. If the Wiki Namespace is missing, the default is the current namespace. If the colon is missing, but the word looks like a Wiki Name, then it is interpreted as a Wiki Link. -- Rob Harwood

Namespaces could be arranged hierarchically. Then there would be a reserved namespace named "top" or "root", and every namespace might be able to refer to its parent as "up", and you could have absolute paths and relative paths, just like files in a filesystem. A namespace could be differentiated from a regular name by the fact that a namespace ends with a colon. So you could have top:Namespace:Nested Namespace:Some Page Or Other as an absolute path, and up:Other Namespace:Different Page as a relative path.

However, refactoring Wiki pages would become a lot more complicated. Since, now, nobody can rename a page once it has been created - in the future, no-one will be able to move a page in the hierarchy, or rename a namespace. Can you put a header on every page in a namespace, perhaps by editing the namespace? Then you can make one that says "This namespace has been moved..." -- Edward Kiser

I don't see why forward slashes / cannot be used. Simply emulate folders. So, the examples given initially could be Scheme/Implementing Fundamental Data Types and Perl/Implementing Fundamental Data Types simple. It transparently allows multiple levels (e.g. Perl/Implementing Fundamental Data Types/Ints ). Then again, maybe on this Wiki it looks too much like Free Links ... -- Mr Harris.

See original on