Annotating all Knowledge: Adventures in Interoperability
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.
We started by simply by installing both extensions and annotating the same pages with both tools using Chrome:
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: http://jonudell.net/h/pundit-h-convergence-demo.mp4
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
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?