This is a post by Rufus Pollock, a long-time Open Knowledge Foundation member and coordinator of the Open Shakespeare project.
We’ve been working on web-annotation — inline, online annotation of web texts — for several years.
Our original motivation was to support annotation of texts in http://openshakespeare.org/ so we can collaboratively build up critical notes but since then I’ve seen this need again and again — in drafting new open data licenses, with scholars working on medieval canon law, when taking my own notes on academic papers.
What’s surprised me is that there appears to be no good opensource tool out there to do this. There are several commercial offerings (including annotation in google docs), and there have been opensource attempts such as annotea, Stet (for GPLv3), marginalia, and co-ment but none of these really seemed to work — my original implementation in 2006/2007 of annotation for http://openshakespeare.org/ used http://geof.net/‘s (excellent) marginalia library but I ultimately ran into performance and integration problems).
- Annotation of arbitrary text ranges
- Annotate any web (html) document
- Well-factored and library-structured — easy to integrate and easy to extend
In the way of spare-time projects, development has been rather slower than we would have liked but we now have a functioning alpha which has now been running successfully on http://openshakespeare.org/ for the last 6 months.
Interested? Below are links to project information including the source code and docs and mailing list. We’re especially eager to get feedback from those looking to integrate into other apps or who would like to help develop the library features.
- Backend: http://github.com/nickstenning/annotator-store-py docs
- SQL + Python backend
- Alpha couchdb backend
- Open JSON-REST annotation protocol – simple JSON and REST-based
- One or more backends implementing this protocol (emphasis on backends that are easy to deploy using standard tools e.g. using sql database or couchdb)
- Really simple: just do (jquery-esqe) $(‘myelement’).annotator() to get up and running
- Fast even on large documents
- Support of multiple users
- Pluggable backends