Two wiki sites are sisters if they join their namespace in such a way that happy collisions occur. Here are excerpts from a conversation as two quite different wiki implementations are joined by this technology.
Bob -- Can you point me to a url that lists all of fitnesse.org's wiki pages, one per line, text/plain? If you do then I can make it a sister site of fit.c2.com. You will have to give me leaf names only. You can write a second cgi that redirects to unique leafs or offers a choice when your leaf names clash. (Sister sites are all about happy name clashes.) -- Ward
Ward -- That sounds like a great idea. We can easily set up a url that provides what you need. Something like fitnesse.org/names.
Fitnesse is a hierarchical wiki, which means that each page can be the
parent of a flat wiki. We use the hierarchy to organize different
classpaths and variables for different test suites.
What this means is that the names of pages on fitnesse can have dots in
them, like: FitNesse.MyProject.MyFirstTestSuite.EditTests
What do you think is the best way to map such names into a "sister" site.
Should we use only the final name of the page (i.e. EditTests)?
Another possibility is that sisterhood could be granted to individual
branches of the hierarchy, since each branch is an independent flat wiki.
That way we could select certain branches to be sisters, and others to be
"private". -- Bob
Bob -- Yes. Selected branches sounds like the way to go. How ever you decide to do this you will present a flat model to me through cooperating scripts (one that provides flat names and one that redirects to the proper url(s) for that flat name.)
One approach would be to support only one flat branch of fitnesse.org for the moment. You can change your implementation of the interface to do more at any time. -- Ward
Bob -- I like Fitnesse and the fitness.org site a lot. And I'm sure the hierarchy is an asset, especially when in a classroom environment where many people are doing the same thing and need to keep their work separate. I love hierarchy and find the discovery of effective hierarchy (as in classes or directories) rewarding.
[That's one motivation. Another is teams that have multiple projects and
need to keep their classpaths separate. We wanted a mechanism whereby we
could create a suite of tests that had one classpath, and another suite of
tests that had another. -- Bob]
I thought I'd mention why I don't do hierarchy on my wiki.
I see wiki as a place where people work out the names of things that they will say. Since our spoken vocabulary is small, we must struggle to find words that carry value commensurate with the space they consume in our brains. Where works collide in wiki they will also collide in our thoughts. Usually that is a happy circumstance.
Still, we often establish the context of a conversation so as to avoid or at least disambiguate many of these collisions. And we have to note the context switches we make in conversation. The analogy of context switching I've chosen for wiki is SisterSites. Two sites are candidates to be sisters if the collisions in their vocabulary are likely to be useful. The reader, like the listener, has to decide where to take the switch.
As a sister, you should feel just the right amount of pressure to call thing that we share by the same names. It is a subtle thing, but very powerful when scaled. -- Ward
Bob, by the way, is Uncle Bob Martin, the founder of Object Mentor and host, with Micah Martin, of the Fitnesse site. I quote this conversation as a message to wiki site operators everywhere. Sister sites are easy and they scale. I've written a memo that describes my tips for implementing sister sites (pdf). There are a lot of wiki sites out there. Let's get 'em hooked together.
I totally agree. I think SisterSites, or at least InterWikiMap, are big potential benefits. I hope that more WikiEngines appreciate this and stick with CamelCase-like URLs, rather than numeric IDs or FreeformLinks.
(Speaking of CamelCase, have you considered loosening the rules a bit to allow acronyms and numbers - PDA, P2P, etc.?)