My first experiences with social tagging, in services like Flickr and Delicious, profoundly changed how I think about managing shared online resources.
The freedom of an open-ended folksonomy, versus a controlled taxonomy, was exhilarating. But folksonomies can be, and often are, a complete mess. What really got my attention was the power that flows from disciplined use of tags, governed by thoughtful conventions. Given a set of resources -- photos in the case of Flickr, URLs in the case of Delicious -- you could envision a set of queries that you wanted to perform and use tags to enable those queries.
For example, I've recently started writing again for InfoWorld. There are five recent items online; this query finds all of them. (There may be six by the time you read this.) Three are posts in this blog, Working Together -- this query finds them. Two are feature articles; this query finds them.
The last two queries rely on combining several tags, a capability that's common in social tagging systems but rarely exploited. If you know it's possible, it can change how you think about tags. Folksonomies are typically flat -- that is, they lack explicit hierarchy. But you can create implicit hierarchy along various axes, the most useful of which (for me) is generality. The general tag, in the above examples, is "infoworld," more specific ones are "working-together" (this blog) and "feature-article." A query for "infoworld" alone finds five (maybe now six) items. A query for "infoworld" plus "working-together" finds three (maybe now four) items.
I'm using Pinboard these days, a service that does everything I used to love about and none of what drove me away from Delicious. I'm using it in a way that feels more like database management than social bookmarking. I imagine queries, assign tags in ways that enable them, and form URLs that run them.
My examples so far illustrate personal information management, but Delicious in its heyday was a fantastic enabler of collective information management too. At one point I wrote an alternate front end for InfoWorld's search engine and a companion faceted browser (remembered for posterity in this screencast). What the screencast doesn't show is the collaboration between InfoWorld's editors and readers. Members of both groups were tagging stories in Delicious. Editors chose the official tags that appeared on Delicious and in the faceted browser. But editors' choices were informed by tags that readers assigned.
That was a powerful dynamic. Why didn't it survive on InfoWorld.com, and why don't we see it happening more widely today? There are at least two major obstacles. Services like Delicious and Flickr support tagging less visibly than they once did. Plus, most people don't think about tagging in the way I always have.
Neither obstacle exists in social coding platforms, which is why they are the best places to observe what's possible. On GitHub, for example, where tags are called labels, you can see teams using them not only to classify issues and pull requests but also to implement simple workflows. In the TypeScript repository, for example, tags like "es6" and "es7" are specific classifiers. They can be combined with general ones, so you can find all bugs or only bugs related to ECMAScript 6.
But the tags "cla-required" and "cla-signed" work a bit differently. The "cla-required" tag says an issue will require a Contributor License Agreement to be signed by an external contributor. It's replaced by "cla-signed" when a signed CLA has been received for that issue.
These are not among the default tags suggested by GitHub (a short list that includes "bug," "duplicate," and "enhancement"). But neither were they invented by the TypeScript team. Facebook's React uses a similar convention: "CLA: Needed" and "CLA: Signed." That's a nice example of how tag conventions -- and associated workflow -- can spread by mimicry.
Despite all my recent attention to GitHub, it isn't the only game in town. In a paper published in IEEE Transactions on Software Engineering, Christoph Treude and Margaret-Anne Storey analyzed how programmers tag work items in IBM's Rational Team Concert. "Most tag keywords relate to some kind of technical concern -- a component, a requirement, or documentation," they wrote. "However, some of the tag keywords ... are used to coordinate collaborative processes within the development team or to communicate with other developers."
One of the developers they interviewed noted that tags are especially useful for tracking cross-cutting concerns: "That's the beauty of tags -- that they are cross-cutting. It's not about grouping, when we have grouping, things can only be in one [category]."
Programmers need not, and should not, be the only ones who understand and apply these principles. Almost everyone adds resources to shared online spaces that support social tagging. Using those tags well is a fundamental kind of Web literacy.