Annotating all Knowledge: Adventures in Interoperability

Join us May 3-6 in San Francisco at I Annotate 2017, the fifth annual conference for annotation technologies and practices with a keynote from Esther Dyson. This year’s themes are: increasing user engagement in publication, science, and research, empowering fact checking in journalism, and building digital literacy in education.

Coauthors:  Giulio Andreini, Francesca Di Donato, Peg Fowler,  Jon Udell

The Annotating All Knowledge Coalition was founded as a forum for accelerating the development of a pervasive interoperable annotation layer across all scholarly works.  Figuring out what, exactly, an interoperable annotation layer means was one of the first goals of the coalition.  We took the first steps towards defining what an interoperable layer looks like and how it should operate at our Face to Face meetings at FORCE2016 and I Annotate.  So what are the next steps?

Participants in both events felt strongly that the best way to move forward was to “Just do it”, that is, identify a use case where you have a need to share annotations across:  tools, content, platforms, workflows. Interoperability can be realized at many different levels,  so the goal is explore some of the practical issues that will have to be addressed by trying to implement even basic functionality. With these practical examples in hand, we can start to focus on critical aspects of interoperability in year 2.

In that spirit, folks at Pundit and Hypothesis, two open web-based annotation tools, got together to conduct a little interoperability exploration using our respective tools.

We started by simply by installing both extensions and annotating the same pages with both tools using Chrome:

Annotating all knowledge:  What it means and why it is important

Europeana and the international image interoperability framework – an update

Same web page annotated with Pundit (top) and Hypothesis (bottom)

Both tools highlight snippets of text and let users attach annotations that are viewable in a side bar.  Both clients have some features in common and some unique features. The problem is there are two conversations going on here, in two separate channels and neither would know about the other if someone didn’t have both clients installed. And what if someone didn’t have any annotation tools installed?

Jon Udell of Hypothesis created a simple bookmarklet to demonstrate an alternate reality where the most basic level of interoperability has been reached. In this demo, readers are notified that there are two sets of annotations on a page:

But the devil is in the details. How does it work if you have annotations across multiple clients?  Can you view these annotations?  Do the two clients play nicely together?  We conducted a few experiments under different scenarios:

1) Annotation browsing

Scenario: Both P and H are on

Overlapping P and H annotations in the text lead to some usability issues and conflicts: it’s not clear if the yellow-highlighted text relates to a P or H annotation and clicking on it doesn’t help since the two sidebars are overlapping.

2)  Annotation creation/editing

Scenario: Both P and H are on

The P annotations creation seems to prevail: the H tooltip doesn’t appear, it’s not possible to create H annotations.

The H sidebar (even when closed) overlaps the EDIT annotation arrow of P thus not allowing the user to access the edit drop down.

3)  Annotation anchoring

When annotations are created on separate annotators (only P or only H) there are no anchoring problems when displayed in a page with both annotators.

There are some issues when annotations are created in a page with both annotators on:

  • Only P or Launch order P > H: P annotations created in a paragraph which contains a H annotation and after the H annotation can’t be correctly anchored. P annotations created inside the text fragment of a H annotation can’t be correctly anchored.
  • Launch order H > P: P annotations previously created (only in P) can’t be correctly anchored.

As a general rule it seems that P anchoring is influenced by HTML elements injected in the code by H.

So what does this tell us?   We’ve got a ways to go.  To measure progress, we created a draft of levels of interoperability between web clients and services:

0 Incompatible, conflicting

1 Incompatible, non-conflicting

2  Read only

3 Read only, feature rich

4 Read-write

5 Read-write, feature rich.

6 Full API and feature compatibility

7 Full client equivalence

Based on our little experiment, it appears that we are at about level 0.7:  the two tools can live side by side, but not entirely peacefully.  And clearly, for end users, the need to flip back and forth among multiple clients to view or reply to annotations on a single page is not ideal.  Our goal the next months is to start exploring level 2:  are we able to read annotations generated by another client?