Wikitect is a small experimental wiki developed by Ward Cunningham as a pilot collaborative software architecture description tool. The work was done in support of the Eclipse Foundation's Architecture Council which did not request further development. The Eclipse Foundation has released the software under the EPL open source license.
We are now a small group that is exploring the applicability of the Wikitect tool for collaboration regarding large pattern languages with interest in applying those languages to some of the most vexing problems facing the world today.
Who We Are
This group was founded through correspondence facilitated by Eugene Eric Kim. We owe much to the intellectual inspiration of Christopher Alexander and the hard work of all his colleagues. The current admitted members are as follows.
We welcome additional members. We invite you to add your name to the bottom of this section along with a brief description of your interest. Please consider creating an account for this site and adding this page to your watch list. You can be notified of changes here by email if you select this option in your user preferences.
What We Do
Some of us speculate on the power of pattern languages to solve complex problems. Others are more interested in the mechanics of such pattern languages and the suitability of collaboration tools like wikitect to support their creation and distribution.
We will explore the wikitect pilot's applicability by, perhaps, entering a well established pattern language. We expect there will be many ways to do this and many ideas for improving wikitect will emerge.
What We Have
We have the mostly hierarchical description of Eclipse prepared in 2006 as part of the pilot experiment. This can be browsed in a read-only mode here. Try comparing the online version with this dot diagram.
There is editable access to the same database here. This location is protected with login: GuestUser and a blank password. This is not a particularly good place to experiment with editing, but the editable interface offers a few extra functions such as dot and xml output and a source code preview.
We also have a hierarchical description of an automobile. This is a database that is designed for experimentation. Be sure to ask for more detail.
We've described the Wikitect program at several levels using Wikitect in a database we're calling doc. Check it out here. Use the same GuestUser for extra options. This is currently the most developed version of the wikitect application.
Wikitect is available as an open source program. We distribute it and the doc database via git. Install Wikitect on a typically configured unix machine with these commands:
- cd public_html
- git clone git://c2.com/wikitect.git
- chmod 755 wikitect wikitect/*.cgi
For a more detailed account of working through this process in a particular instance, you could look at adventures with wikitect.
What We Would Like
Wikitect needs something like RecentChanges. This could be just a chronological list of node links. Or it could be some color coding of changed nodes in the display.
Wikitect would benefit from something like the 'discussion' tab on wikipedia.
For building pattern languages, it would be useful to have pattern templates to encourage good usage. Eventually a range of these might be available.
A 'fit to screen width' command (should really be a browser ability - Opera can do this).
A node reference that contains digits, or a period as a character seems to cause confusion with '.dot' interpreter software, so that links and/or node names are not rendered/correct
I keep wanting to put a whole Alexandrian pattern structure into each node. Originally I thought that wikitect must support such a thing - for my purposes. But I now think that's wrong - wikitect can be the equivalent of reading only the 'title', 'context/problem' and 'therefore' parts of an "Alexandrian" pattern: if you want to see more, then a simple hyperlink to a formatted pattern layout would be there. So something more akin to the traditional wiki method of originating a page would be a useful tool (a keyword: 'expanded:' would create a page [templated?] where the detailed discussion etc could be).
Brief suggestions for further pilot implementations of wikitect. These could be tagged with the proposer's name. New: Now that I have a clone of the wikitect code, I am happy to host a few wikitect projects: drop me a line , setting out your proposal.--Dilgreen 20:02, 20 September 2007 (PDT)
Part (or even all) of A Pattern Language - nothing terribly creative about this - could be unhelpful in giving those patterns 'tablets of stone' status. It would be exciting to see what that language looks like. --Dilgreen 15:55, 20 July 2007 (PDT)NEW! This project is live! here!--Dilgreen 10:35, 27 September 2007 (PDT) Ooops - server moved - needs to be reconstructed...Dilgreen March 2011
The Family School at Larkhall is a new, small school in London. We intend that the School's policies and practices will form a 'Living Plan' - a network of patterns.--Dilgreen 15:55, 20 July 2007 (PDT) NEW! The Family School's 'Living Plan' is live! here!--Dilgreen 13:31, 19 September 2007 (PDT) Ooops - server moved - needs to be reconstructed...Dilgreen March 2011
Q: The numeric keywords tell wikitect about sub-nodes and relationships - but I'm afraid I'm unclear about how this works, or how to use the numbering - I notice that you seldom start at 1, and often use odd numbering - can you offer a short guide to this?
A: Use numeric keywords to identify subnodes. I used to number them 1, 2, 3. But then when I wanted to insert something before 1, I had to edit every line. When I wrote "doc" I tried something new: choosing initially numbers like 3, 5, 7. Then 1 and 2 were available for those occasional inserts.
Q: Can you explain how circular references are handled? I've managed to confuse it, or it confused me.
A: Wikitect structures can have shared nodes and even loops. It will display the name of a node everywhere it finds it, but it will only display the contents once, when it is first encountered. This one rule is enough to handle both shared nodes and loops. Browse this recursive data to see how these cases are handled. Here is a picture of what you will be seeing: