Version 9, changed by ScottMcmullan. 10/17/2006. Show version history
Tagging is all the rage in computing these days. A tag is metadata applied to some information (typically a URL) to help organize and categorize that info. Tagging first appeared in popular use in sites like Flickr and del.icio.us, and has spread like wildfire since then. For good reason: it works well in practice and is easy.
There's been much written and done with tags in the past 18 months, including around a particular type of collaborative tagging called a folksonomy. The goal of this experiment is to get first-hand experience with tagging in a wiki context and get a better understanding of what works and what doesn't. This experiment will create tagging features and views for JotSpot wikis that will be tested here on the JDC, as well as other Jot sites as they see fit.
(This experiment was introduced in the Jotspot Tagging Experiment blog post.)
Updated 10/17/2006
Phil took a huge leap and created a new tagging library from the ground up. Optimized for speed and ease of use.
Details here on http://tag-dev.jot.com. (Download the zip file)
The library consists of a set of pages that live under TagLib. To install, download the latest package from http://tag-dev.jot.com/WikiHome/ProjectDownload and install it by following the Manage Packages link in your footer menu.
Demo Pages:
This initial experiment consists of a plugin that puts a very simple box in the sidebar that shows:
Here's what it looks like:
Tags are embedded in a page by adding a main/tags property to a page of type stringList. This property can be edited for a given page using the TagForm form. (See DifferentFormsTutorial for more info on how this works.)
In this experiment, tags are globally shared amongst all users.
See RelatedTagsPluginImplementationV1
TagCloudLib is a set of server-side Javascript functions that create and display a tag cloud. This library can be used by other apps and plugins to create appropriate tag clouds.
There are currently two pairs of functions:
These use different algorithms to collect the tags and display the cloud. createTagCloud2() is a bit more efficient, althought they both have difficulty computing a tagcloud for the entire site (or the entire forum for that matter). I'll be looking into what we can do to optimize this algorithm so it doesn't exceed the maximum allowable execution time for server-side Javascript.
Here's what the current version of this tag cloud looks like:
To use the library, you can include it in a page and then call createTagCloud()/displayTagCloud() appropriately. For example, here's a page that shows all the tags used in the forum reply pages: AllForumReplyTags
<jot:include node="TagCloudCSS" />
<jot:include node="TagCloudLib" />
<jot:script>
var allTagsResult = jot.lib.search({forFormName: "ForumReplyForm", collect: "it/main/tags"});
var allTagsArray = allTagsResult.getItems();
allTagsArray.sort();
//hack to remove tags that have characters that cause problems -- e.g. &
for (i=0; i<allTagsArray.length; i++) {
if (allTagsArray[i].indexOf("&") > 0)
allTagsArray[i]="";
}
var tagCloudArray = createTagCloud(allTagsArray);
displayTagCloud(tagCloudArray);
</jot:script>
See TagCloudLibImplementationV1
This is an extension of the previous TagCloudLib and plugin, written by Phillip Kast, that uses some simple AJAX technique to dynamically display the TagPivot page introduced above.
That also opens the door to the faceted tag approach suggested by ehaugo, and this is implemented here: if you click on multiple tags, they stay highlighted and you get a list of all pages that contain all of those tags.
This version of the plugin also lets you change a page's tags without leaving that page. Clicking "tag this page" reveals a box with the tags, and an Update button.
See RelatedPagesDynamicV1 or just grab the package.