Article started by pieterh
25 Oct 2009 12:40
The TopicTree pattern is a recipe for creating forums in Wikidot. A forum is a structure of named spaces where individuals can write and discuss stories, news, questions, and tasks. A topic is a named discussion area.
The name "TopicTree" explains the pattern: a tree of discussion topics that come together at a root. Topics can contain subtopics, to any level needed. TopicTree creates structures that grow and reshape organically to reflect the real work that people want to talk about.
Examples of use in Wikidot:
Historically the largest TopicTree pattern was usenet, the global Internet discussion networks that predated the world wide web.
We can use TopicTree as part of a site, or as a whole site. A site can contain one, or many TopicTree forums. Typically the forum is one category (e.g. 'topic:') containing dozens to thousands of pages. A cover page (e.g. 'topic:_start') acts as the tree root and lists all top level pages. A template ('topic:_template') formats each page and adds necessary scaffolding such as per-page comments. It also lists all subtopics and lets users start new subtopics.
TopicTree promotes a content model based on lists of lists that all members share. It uses autonumbering, so that pages have names like 'topic:1'. This defines a de-facto content model of the forum as lists stretching from oldest to most recent. Each topic (a page) has a list of child topics, and so on to any depth. This hierarchy lets users add detail at any level without affecting other levels. For example, when TopicTree is used for issue tracking, one issue can be broken into smaller ones over time. Traditionally, large issues would be cancelled and recreated as several smaller ones. This approach allows close ownership of pages, which can grow to any importance. By contrast a flatter model throttles the weight of any given page.
Comments are corrections to, proposals, and discussions of individual pages. We keep comments as close as possible to the content, using the Comments module in the topic:_template page to add commentary to each article.
We navigate a TopicTree forum in three ways: search for older pages, hierarchical traversal (browsing), and recent activity (latest edits, latest comments). The Wikidot PageTree module provides a full overview of the entire forum. We may also use tags but these are not often needed. TopicTree relies on the ListPages module to create the navigation user interface. Additionally, the template adds navigation between subtopics within a topic using a scrollbar that emphasizes the list-of-lists content model.
TopicTree can use the Workflow pattern to push pages through a life cycle, using hidden page tags like _closed. Users can then navigate through lists of pages in particular states. TopicTree can be easily extended into a task management system by tagging and listing pages with the "_task" tag.
Like the Forum pattern, TopicTree uses the Benevolent Dictator ownership pattern, with a low barrier to entry. TopicTree does not attempt to synthesize knowledge, but rather to enable and capture flows of discussion. Typically the creator of a page owns that page, and the author of each comment owns his or her comment.
The standard TopicTree permissions model is:
- Site access policy is usually "open"
- Registered users can create pages and make comments
- Only the creator of a page can edit it
- Trusted users get promoted to moderator
TopicTree is a Wikidot-only alternative to Forum, which exists in many implementations. Forum has the advantage of familiarity, using a well-known language and content model. TopicTree is less familiar to naive users and may present a learning challenge.
Forum holds structure to administrator space, while TopicTree delegates structure to normal members. Thus any user can create local structure, to any depth. This should improve ownership and increase overall growth.
Since TopicTree is a simple single-category implementation, it may act as a practical drop-in replacement for the old hard-coded Forum module.