Bringing annotation to browsers

Hi everyone,

I (along with some colleagues) have been considering how to bring annotation capabilities to mainstream browsers. Briefly, annotation allows users and authors to create resources about other resources - the straightforward example would be adding comments to a page (e.g. think Google Docs comments for the web). Wondering if there’s others who’d like to collaborate and help make this a reality.

A standard for annotations on the web already exists in the W3C; WebAnnotation lays out a data model and protocol for annotating web content. Browser annotations should be built on this standard. That said, I think there’s some problems remaining to solve before we could bring annotations to a web browser.

I’ve written an explainer to provide a more in-depth introduction and layout of the challenges. To give a flavor of the kinds of things we’d need to solve:

  • How are annotation sources linked? Existing annotation tools are special-purpose and come linked to their own backend. A browser shouldn’t be restricted to a single annotation source. Should users be able to plug-in annotation sources and how would that work? Could a URL include an annotation source to use for the given resource? Could we encode annotations directly into a URL?
  • Author controls - existing annotation tools are installed intentionally by users and are a negligible proportion of web traffic. If all/most web traffic becomes annotation enabled - authors would likely demand controls. Perhaps some form of opt-out or default visibility, styling and presentation control, etc.
  • Hosts of annotations will need the ability to moderate their content. What kind of controls and feedback should browser UI provide? (e.g. “flag comment”? up/down vote?)
  • Security and privacy challenges to be worked out
  • How to handle identity and attribution
  • etc.

We’re still quite early into this so there’s nothing’s fully baked yet but I wanted to invite anyone interested to join the effort and provide feedback. To get the discussion rolling, I have put together a proposal for a first step in this direction in URL based annotation which would allow specifying an annotation source or annotation in the URL using the fragment directive syntax, e.g.:

https://example.org#:~:note(href=https://notes.org/mynotes)

or

https://example.org#:~:note(content={<<Serialized JSON-LD here>>})

Would anyone want to move this into a WICG repo and incubate from there?