The Artima Developer Community
Sponsored Link

Ward Says, Don't Try This at Home
Half Sisters
by Ward Cunningham
April 24, 2003
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's wiki pages, one per line, text/plain? If you do then I can make it a sister site of 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 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 for the moment. You can change your implementation of the interface to do more at any time. -- Ward

Bob -- I like Fitnesse and the 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.

Talk Back!

Have an opinion? Readers have already posted 3 comments about this weblog entry. Why not add yours?

RSS Feed

If you'd like to be notified whenever Ward Cunningham adds a new entry to his weblog, subscribe to his RSS feed.

About the Blogger

Ward Cunningham is a founder of Cunningham & Cunningham, Inc. He has served as Director of R&D at Wyatt Software and as Principle Engineer in the Tektronix Computer Research Laboratory. Ward is well known for his contributions to the developing practice of object-oriented programming, the variation called Extreme Programming, and the communities hosted by his WikiWikiWeb. He is active with the Hillside Group and has served as program chair of the Pattern Languages of Programs conference which it sponsors. Ward created the CRC design method which helps teams find objects. Ward has written for PLoP, JOOP and OOPSLA on Patterns, Objects, CRC and related topics.

This weblog entry is Copyright © 2003 Ward Cunningham. All rights reserved.

Sponsored Links


Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use