We’re finishing up a big intranet project here at ONE/Northwest, and that led to an interesting conversation between me, Dave Averill and Gideon Rosenblatt about tagging and keywording content in a website. Here are a few notes from it.
Definitions:
1) “Tags” – keywords that are stored per-item and per-user, ala del.icio.us. Plone doesn’t provide out of the box support for tagging. That’s probably OK, because tagging doesn’t really work well unless you have a LOT of users.
2) “Keywords” – keywords that are stored per-item, but not per-user. Plone provides this out of the box.
How Things Work Now, And What’s Wrong
Plone’s current Keywords user interface is really clunky. So clunky as to be nearly useless, in fact. (Sorry.)

The main problem is that as the list of keywords in the site grows (which it does, very quickly, because keywords are not per-user, they’re global across the site), it quickly becomes very difficult to find and choose the keywords in the scrolling window.
Worse, you can’t easily see at a glance which keywords have already been selected.
How to fix it
Fortunately, I think this should be fairly easy to fix.
I would do the following things
- Move the Keywords widget from the “Properties” tab to the “Edit” tab. (Plone 3.0 fixes this quite a bit, by making the schemata refresh without page reloads, so this may ultimately be a moot point.)
- Show the list of keywords assigned to a content object above the keyword widget. (Bonus points for making them clickable to a search!)
- Change the widget to an Autocomplete widget. (Note: I need to check whether the Autocomplete widget will let you add new items to the vocabulary.) Del.icio.us uses an autocomplete widget like this for tag entry, and it’s really efficient.

- Make keywords part of the default content view templates (again, with clickable links to other items with the keyword). It’s easier to remove them (especially in Plone 3.0 with the viewlet manager) than to add them, and having them there by default will signal that we value keywording. UPDATE: Shane Graber below points out some instructions he wrote for doing just this, in Plone 2.0-2.5.  Zope 3 fans might prefer this as a viewlet, but that’s a pretty trivial implementaton detail.
- We should build a screen that allows one to very quickly assign keywords to many objects in a single operation. I think I’d want to execute a search (or build a smart folder), then see a list of all found objects, their descriptions, the keywords they currently have, and an autocomplete widget for each object. Rip through the screen, assign keywords to a bunch of objects, then hit save once. That would be really fast and efficient.
- Finally, we should make sure that permission to assign keywords to content is separated from permission to edit the object itself. (I’m not sure if this is already the case, please leave a comment if you know!) This would make it possible to create a “tagger” role which could be used to let site members keyword content items.
OK, that’s it. All of this stuff seems like it would be pretty easy to do without any major changes to the underlying plumbing.
What do you think? Would this be more sensible, more “humane” behavior for Plone? Is there more low-hanging fruit that I’m missing?
Update: It also might be interesting to look at auto-generating keywords by using Yahoo’s Term Extraction API.