Just read a post on Paolo Massa’s Blog, where he requests to add a Flickr/ del.icio.us/ Technorati style of tagging to Webjay music playlists. In hip speak this practice is called a “folksonomy“.

Folksonomy is a neologism for a practice of collaborative categorization using simple tags. This feature has begun appearing in a variety of social software. At present, the best examples of online folksonomies are social bookmarking sites like del.icio.us, a bookmark sharing site, Flickr, for photo sharing, 43 Things, for goal sharing, and Tagsurf, for tag-based discussions.
(from wikipedia.org)

Strictly speaking, this would be a 4th way of organising stuff, somewhere between a taxonomy (categorized) and searchable (indexed). It’s not a taxonomy because one item can have multiple free-text tags, and it’s not straightforward indexing, because it is information ‘outside’ the item (meta-information), and not part of it.

When I was thinking about how Lucas should implement this, I found it a pity that Webjay has to re-develop something that already exists in other services. Or, the other way around, it would be great to have a service that does ONLY that: add folksonomy support to just about anything. Let’s call it ‘www.folksonomizer.new‘. It would look something like this:

  • the service allows the adding of tags to objects. A ‘tag’ is a string ATOMICS: the atomic operations are
    • write_tags(URI, service, tags): add these tags to the URI, overwriting what existed before, can be used to erase some or all tags
    • add_tags(URI, service, tags): add these tags to the URI, leaving existing tags
    • get_tags_for_uri(URI, service, params): get tags for this URI. Params can be used to influence the maximum number of tags returned (default: 100), the sort order
    • get_uris_for_tag(service, tags, params): get URIs that have this tag. Params can be used to influence # URIs, sort order
    • get_tags_for_service(service, params): get all tags for this service. Params is used for #tags returned and sort order.

    The sort order might be: alphabetically, chronologically (most recent first), by frequency (most used tags), or by some combination (e.g. first the relatively ‘new’ tags with a lot of traffic – the new memes or hypes).

  • SCOPE: A service is public (i.e. the tags are also visible when the service is not specified, tags trickle up) or private (the tags only show up when the correct service is specified).
  • AUTHORISATION: the tagging is ‘narrow’ (i.e. only the author(s) can add tags, like Technorati) or ‘broad’ (i.e. anyone can add tags to a URI, like del.icio.us) (terminology from vanderwal.net)
  • API: the service can be called with SOAP/XML-RPC (within PHP/Perl/ASPX scripts) or Javascript (within HTML pages) links.
  • SIMPLE: To show the tags, all the webmaster should do is add a piece of code in his pages like <script src=”http://www.folksonomizer.new/get?SVC=Webjay&URI=$URI”> </script>. If the folksonomy is broad, the webmaster can throw together a standard HTML FORM that allows users to add tags to a URI via POST or GET.
  • FLEXIBLE: To have more control over the layout and sort order, the webmaster uses the XML-RPC API, which returns a richer XML list. E.g. when he requests the URIs for a certain tag, he gets a list in the format: URI/date added/#tags/#taggers and can use the extra information to make fonts bigger, change sort order, …

Any programmers out there with a lack for a pet project?

Some services that are quite close to this: the del.icio.us API and Flickr API.

Technorati tags: