Marginalia Release

While I haven’t posted about Marginalia in a long time, I have been making significant enhancements. These were prompted mainly by work on integration with and features for the Bungeni system for parliamentary information systems. Downloads for Moodle and Open Journal Systems are available on the Code site, along with full current source code in the repository (follow the link from the Download page).

Among the new features:

  • some very important bug fixes
  • a multi-user interface for displaying public annotations by multiple users at once on a per-paragraph basis (in OJS, Bungeni, and the demo)
  • users can edit personal lists of keywords (this version of keywords is only currently used by Moodle; OJS still uses a static keyword list)
  • Marginalia can be used as a kind of track changes feature, in which highlights indicate insert, edit, and delete actions (used in Bungeni)

The Moodle version adds further enhancements:

  • keywords, as in OJS, which each user can customize (called “tags”)
  • a search and replace feature for margin notes
  • the summary page can display all annotations for a given forum (in addition to the existing per discussion and per course display)
  • online help
  • splash text to introduce users to Marginalia

The following improvements are relevant to developers:

  • the Bungeni portal project is maintaining a Plone implementation of the Marginalia service
  • a modified database format to allow Marginalia to determine overlapping highlight regions without looking at the annotated document
  • most of the PHP code necessary for a Marginalia server implementation is provided in a library
  • applications can override Marginalia’s default margin note display and editor functions (Bungeni does this extensively)
  • there’s a mechanism for preventing cross-site request forgery of annotation actions (keywords and preferences are not yet protected, however)
  • Marginalia is easier to configure, so that different applications can easily determine which features to support (e.g. track changes in Bungeni, per-user keywords in Moodle)
  • integrating Marginalia with host applications is more straightforward, and it’s easier to upgrade to new versions of Marginalia without touching the rest of your application code
  • improved regression tests for highlighting (the code had been out of date for some time)
  • the Atom format for annotations is easier to read and more informative as a syndication feed