Welcome, guest ( Login )

» Home (JDC Blog)
» Forums

Page Tags

tags

Search Tags:
WikiHome » 2005-10-19-JotspotTaggingExperiment

JotSpot Tagging Experiment

Version 1, changed by ehaugo. 11/10/2005.   Show version history

By ehaugo at 11/10/2005 07:49AM Tags: tags

Tagmania

Tags are everywhere on the web these days, and for good reason. They're a great "new" option for categorizing information. The concept certainly isn't new -- categories and similar metadata have been around forever. But the particulars of implementation on the web pioneered by sites like Flickr, del.icio.us, and Technorati have given new life to this type of simple-but-effective way of organizing info, mainly due to the social nature of their implementation. This type of community tagging even has it's own name ( folksonomy), un-conference (TagCamp -- check it out on 10/28-29), and set of dedicated blogs (e.g. Tag Tuesday)!

Jot Needs Tags

Jot wikis contain a ton of information, both private and public. And while we've got links and search, it can be darn difficult to find that nugget of info after your wiki has grown a bit. Wikis, and Jot, and can definitely benefit from tagging.

To date there's no explicit support for tagging in Jot. The good news is that given Jot's dev capabilities, we've got the juice to roll our own! But what does that look like? How should tags work? What views into these tags make sense, other than the classic tag cloud?

Let's Experiment!

Let's experiment here on the JDC. I've kicked off a group experiment (JotTaggingExperiment) to try to figure out how to implement and use tags in Jot wikis. To get the ball rolling, I've created a simple plugin that relates pages by tags stored in the main/tags property of each page. I've described the implementation a bit in JotTaggingExperiment. It's also running here already -- check out the toolbar to the left.

The idea is to treat RelatedTagsPlugin as a starting point, and brainstorm and implement additional approaches and views as well. We can run the code here on the JDC to get a feel for what works and what doesn't, as well as share full code so everyone can experiment on their own Jot. To that end here's the initial verion of RelatedTagsPlugin -- it's sure to change based on use:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:jot="http://www.foopee.com/ns/s3/srvtmpl/">

<jot:extension target="sidebarBottom">

<jot:nodeinfo name="p" href="wiki:/${page/name}" />
<div id="related-tags"
style="border: 1px solid #8cacbb; background-color: #eee; padding: 8px; margin-top: 8px; margin-bottom: 8px">
<jot:if test="${util:isDefined(page/main/tags)}">
<jot:then>
Page's tags (<a href="wiki:/${page/name}?edit=1&amp;form=/TagForm">edit</a>): ${page/main/tags}
<br /><br />
Related pages by tag:<br /><br />
<jot:loop over="${p/main/tags}">
   <jot:var key="tag" value="${it}" />
   <jot:search forAll="1" filter="${util:listContains(it/main/tags, tag)}" set="taggedPages" />
   <jot:if test="${taggedPages/totalSize &gt; 1}">
   <jot:then>
      » ${tag}:
      <ul>
      <jot:loop over="taggedPages" set="tp">
         <jot:if test="${not(tp/name = page/name)}">
         <jot:then>
            <li><a href="wiki:/${tp/name}">${tp/name}</a></li>
         </jot:then>
         </jot:if>
      </jot:loop>
      </ul>
   </jot:then>
   <jot:else>
      No others found.
   </jot:else>
   </jot:if>
</jot:loop>
</jot:then>
<jot:else>
   No tags yet -- <a href="wiki:/${page/name}?edit=1&amp;form=/TagForm">add some</a>
</jot:else>
</jot:if>

<jot:script>
<![CDATA[

var pg  = jot.pages[page.path];
try { var tot = pg.revision; } catch (e) {}
// Write each change to an array
var taggerArray = new Array();
var alreadyCounted = new Array();
for (i=1; i<=tot; i++) {
  if (i>1) {
    var currRev = pg.otherRevision(i);
    var prevRev = currRev.prevRevision;
    if (currRev.main.tags != prevRev.main.tags && typeof alreadyCounted[currRev.user] == "undefined") {
      taggerArray.push("<a href='"+currRev.user+"-profile' class='wikiLink'>" + currRev.user + "</a>");
      alreadyCounted[currRev.user] = "yep";
    }
  }
}
if (taggerArray.length>0) {
  jot.out.write('<div id="tagger-log">');
  jot.out.write("<br/>Taggers:<br/>");
  for (j=0; j<taggerArray.length; j++) {
    jot.out.write(taggerArray[j] + "<br/>");
  }
  jot.out.write('</div>');
}

]]>
</jot:script>

</div>
</jot:extension>

</html>

Group Effort

Other than setting up JotTaggingExperiment as an initial meeting page for our efforts, I have no idea how this should evolve. Let's have some fun and figure it out!

Technorati tags: , , , , .


Back to WikiHome



Comments (8)

dianesoini said, 10/19/2005:

Oh, Scott! How disappointed I am! After all the conversation about the evils of inline styles in these jot apps you've perpetuated the practice in your forms for the Jot Tagging code!

Will you be fixing that?

ScottMcmullan said, 10/19/2005:

Doh! I guess I still don't fully grok the syntax to use. This is a collaborative gig here -- can you re-work to shed some light on how we should do it?

dianesoini said, 10/19/2005:

I fixed your plugin to use CSS more properly. This is what I did (and it's reflected in the JotTaggingExperiment page):

I removed the span tag around the text on your form. Why force light gray text on people if the purpose of light gray text isn't to be "grayed" out? If you want it to be light gray, then perhaps a custom class would do, but I can't see any reason why it should be any color in particular, so I just took that out.

I removed the hard-coded inline style for the box, which was border: 1px solid #8cacbb; background-color: #eee; padding: 8px; margin-top: 8px; margin-bottom: 8px. I notice that all your boxes in your side bar use this same inline style. Again, why force your color choices on other people? Especially when your style sheet (jot.layout.css) that is installed on everbody's wikis already comes with a special class called sidebarBox. Since a sidebarBox is exactly what this thing is, I used that class.

Thinking that perhaps you weren't using the sidebarBox class because it has no padding, I took your inline style code and made it the rules for sidebarBox in jot.layout.css.

This poses a dilemma, of course. Nobody's sidebarBox class has padding--or margins for that matter--so they'd also have to customize their CSS to make their plugin look good. However, either way, somebody would have to edit something--either the plugin code or the CSS--to make it fit the look and feel they desire. So, to encourage the proper use of CSS I figured it was worth it to make the change.

galiel said, 10/19/2005:

To provide some context for people who are wondering what the big deal about tags is all about, I thought I'd post a comment I made recently on a political blog that was thinking about implementing tagging, to much grumbling and misapprehension. Someone said, "Isn't 'tag' just a fancy word for "keyword", a very old technology? What's the big deal"?

So, pretending you just asked that, here is my response (just a bit expanded and edited from that original off-the-cuff comment):


Thanks for the question, it made me stop and think about how to translate some tacit knowledge into a coherent explanation. Even better, I couldn't find a pat answer on Google so I had to actually think one up.

More often than not when working with online technology, things are moving so fast that you kind of "get" something in the process of working with it--as opposed to the formal way of "learning" about something and then using it.

Four major distinctions come to mind:

1) Tags are not necessarily text.

A tag might be an image, a sound, or something else we haven't figured out yet. Often, it is a number (for example, a timecode or datestamp) Anything we can interpret meaningfully (and, more practically speaking, that we can program a machine to interpret meaningfully) can be a tag.

The one characteristic of a tag (whatever its form) is that it is both nonexclusive and nonsingular; that is, you can apply the same tag to many different things, and you can apply many different tags to the same thing.

2) Tags are part of an extendable and flexible syntax.

Tags are (metaphorically speaking) more of an XML "concept," while keywords are more of an HTML "concept". (I hear librarians object that keywords are applied to many different systems besides the web, and that HTML - and XML - are just subsets of Markup Languages that preceeded both. I hear you, but I mean it in a different context, which I'm about to explain.)

What I mean by that is that, in old Web, something like a "keyword" had a specific, single place in the structure of a document, and search software was "trained" to look for a keyword in a specific place (in a meta-tag in the header ("meta-tag") here referring to a type of "HTML tag", which is actually markup...just to make things more confusing). Keywords applied to an entire document.

In contrast, in "Web 2.0", a tag is interpreted more liberally, and can be defined--and labeled ("tagged") in any number of different ways in any given document - and can appear anywhere within the document structure, or in many places all over the document (attached to each "thing" that is tagged, for example)--or even contained in a separate document that references locators in the "tagged" document. Tags can be attached to snippets of a page that are inserted dynamically, and can themselves be variables that are dynamically changed as page content is constructed.

3. Keywords are by authors, tags are by readers.

Keywords are, traditionally although not necessarily, static and preincluded in static documents by the creator of that document.

Thus, keywords say, "I meant this this way".

Tagging is usually something that is made available to the reader or end-user to contribute, dynamically.

Thus, tags say "I interpret this this way"

Keywords are a dictat, tags are a vote.

Or, in social software-speak, keywords are ontology, tags are folksonomy.

From this comes the most profound difference betwen keywords and tags how they can be used and repurposed:

4. Tags are democratic and synergetic.

Tags tap into the collective wisdom of the crowd. By weighing, sorting, displaying, and otherwise manipulating the aggregate tagging-judgements of users, new synergetic information is created - information that was not there before, and that is more than the mere sum of individual tag decisions.

Beyond those four distinctions, however, the difference is not just use and geography and cool Netspeak. I believe there is a deep conceptual difference, a difference of "social architecture". Just as wikis make one think differently and interact differently than blogs, so tags differ from keywords. Not a perfect analogy, but more of a kind. Tags empower the user, but no one user controls the tags. Tags require surrender, collaboration and, like wikis, trust. Like Ward Cunningham says, "Wiki reminds people that sometimes to work together you have to trust each other more than you have any reason to."

Hope this was as helpful for you to read as it was for me to write.

- David Galiel

russ_lipton said, 10/20/2005:

Where have you been all my life? This is about the best thing I have ever read on the subject. Course, I don't get out much.

galiel said, 10/24/2005:

Suggested Implementations:

While tag clouds have cool cache, I question how much useful information they provide in a small, focused community like this. Best to give us, I think, multiple ways to sort/look-at the tagasphere for the JDC. Here is my completely idiosyncratic list, in order of importance:

1) Alphabetical. This seems obvious, but you'd be surprised how many places make it really hard to simply find a tag whose name you know or sorta-know. A simple list.

2) Frequency. The most often used tags at the top. This is not the same as popularity, below. A simple list.

3) Popularity. The most often searched tags. A simple list.

4) Association. The tags most often found together, attached to the same documents (this could be represented in all sorts of interesting, interactive graphical ways. The real value in it is a bit similar to "recommendation" systems: "if you like this book, you might like these;" it allows both exploration of related concepts and, just as usefully, helps one find the right tagged article if one is using the almost-right search criteria (e.g. I really am looking for how to edit in wiki markup, but I think I'm looking for "wiki syntax".)

5) Multimap. You sould experiment with representing multiple axes of information in a single cloud - association with size of tag indicating popularity, for example - but I'm not sure how useful that would be in practice as opposed to sounding cool in theory. Perhaps a map with a choice of applying two sorts that make sense comparatively (pop/assoc vs freq/assoc, for example). Again, my primary interest is not in the sociology of the JDC, but in finding useful information (and even for the developers, you want to develop your FAQ and documentation and fix urgent stuff based on priorities, not fancy clouds). In another context, clouds and maps are terrific.

ScottMcmullan said, 10/25/2005:

Thanks David for sharing your excellent writeup on the distinction between tags and keywords, as well as suggestions for furthering this tag experiment.

RE: the distinction, I think your 3) and 4) capture 90% of the distinction in my mind between tags and other types of keyword-based metadata: tags are applied by users not authors, and they increase in value as a group's tagging is aggregated.

RE: your suggested implementations, 1) and 2) are definitely low-hanging fruit and should be made part of any view into the tagasphere. 4) and 5) get more complex to implement, but appear doable with some judicious server-side Javascript hacking. The one that appears difficult to implement is the searching behavior. Jot doesn't log any search info for you. It could be made to by customizng the search form, that it doesn't out of the box.

Two issues jump out:

1) The kick-off ultra-simplistic implementation I've presented in this post doesn't store tags-per-user. Instead it presents a single, shared "tagasphere" everyone modifies (aka the main/tags property of each page). So if I tag something "filter" and then you see that same page and see it's already tagged filter, there's no recognition that you would have also tagged it filter.

2) I can't implement this by myself. This group experiment needs collaborators. Anyone interested joining in?


As an aside, this thread has clearly gone beyond the comment stream for this blog post. I propose we:

  1. add a forum to JotTaggingExperiment for this specific discussion
  2. add a top-level "experiments" forum to DevForums for these types of discussions
  3. just collaborate free-form wiki-style in and around JotTaggingExperiment

Preferences?

galiel said, 10/25/2005:

As for taking this discusion further, my vote would be for #3: it is a good subject for wiki pages, rather than a forum discussion, because we are conglomerating information from many people that we want to persist and build upon.

And, since I see you have already created a "CommunityExperiments" page as a parent to the JotTaggingExperiment page, that addresses the need for a top-level experiments section for the community. It is still good, IMO, to introduce a new experiments here in a JDC blog post and promote the relevant new page within CommunityExperiments.

After my Nov. 1 project deadline, I promise to spend some time in the JotTaggingExperiment wiki tagging merrily and populating the experiment. I have more to learn about Jotscript before I can be any use to you on the implementation side, however. I'm good at coming up with difficult ideas and then leaving the implementation puzzle up to people with those skills :-)

Attachments (0)

  File By Size Attached Ver.