largeblue.tag provides an uber simple tagging adapter.  If included::

    <include package="largeblue.tag" />

It will adapt any object configured to implement largeblue.tag.interfaces.ITaggable, 
e.g::

    <class class=".objects.MyContentObject">
      <implements interface="largeblue.tag.interfaces.ITaggable" />
      ...
    </class>

This will hang a @@tags.html view of each instance of the adapted content object, 
which provides a single textline input to enter tags (seperated by a space).  
Thus if you enter 'foo bar dolores' into the text input and submit, you'll find::

    >>> context = my_obj
    >>> from largeblue.tag.interfaces import ITag
    >>> t = ITag(context)
    >>> t.tags
    ['foo', 'bar', 'dolores']
    >>> t.tagstring
    u'foo bar dolores'

You can add, remove and update::

    >>> t.add_tag('elephants')
    >>> t.tags
    ['foo', 'bar', 'dolores', 'elephants']
    >>> t.remove_tag('dolores')
    >>> t.tags
    ['foo', 'bar', 'elephants']
    >>> t.update_tags(['coffee', 'milk'])
    >>> t.tags
    ['coffee', 'milk']

That's it.