16:05:22 RRSAgent has joined #annotation 16:05:22 logging to http://www.w3.org/2015/04/22-annotation-irc 16:05:24 RRSAgent, make logs public 16:05:25 TimCole has joined #annotation 16:05:25 Zakim has joined #annotation 16:05:26 Zakim, this will be 2666 16:05:27 Meeting: Web Annotation Working Group Teleconference 16:05:27 Date: 22 April 2015 16:05:28 I do not see a conference matching that name scheduled within the next hour, trackbot 16:05:53 Chair: Frederick_Hirsch, Rob_Sanderson 16:05:57 RayD has joined #annotation 16:06:03 Present+ Frederick_Hirsch, Rob_Sanderson 16:06:11 Present+ Tim_Cole 16:06:12 present+ Ray_Denenberg 16:06:13 Present+ Randall_Leeds 16:06:25 takeshi has joined #annotation 16:06:36 Agenda: https://lists.w3.org/Archives/Public/public-annotation/2015Apr/0118.html 16:06:47 TimCole: http://w3c.github.io/web-annotation/protocol/wd/ 16:06:47 fjh has changed the topic to: agenda https://lists.w3.org/Archives/Public/public-annotation/2015Apr/0118.html 16:07:00 nickstenn has joined #annotation 16:07:09 present+ Nick_Stenning 16:07:19 paoloC has joined #annotation 16:07:19 1. Introduction, Scribe Selection, Announcements, etc 16:07:20 Annotations at Europeana 16:07:22 2. Minutes approval 16:07:23 3. Client API 16:07:25 Frederick to start, followed by implementation lessons and ideas (e.g. Hypoothes.is Nick et al), discussion 16:07:26 break 16:07:28 4. LDP Recap 16:07:29 5. Protocol - update, next steps, FPWD? 16:07:31 lunch 16:07:32 6 robust anchoring, find 16:07:34 break 16:07:35 Present+ Paolo_Ciccarese 16:07:35 7 search 16:07:36 8 additional use case discussion - footnotes, web packaging, publishing etc 16:07:37 present+ Gergely_Ujvari 16:07:37 9 Data model issue review 16:07:38 10 other business 16:07:39 ScribeNick: tilgovi 16:08:05 present + Kristof_Csillag 16:08:05 Topic: Welcome, Agenda Review, Announcements 16:08:17 am Randall scribe then Tim 16:08:30 Present+ Takeshi_Kanai 16:09:24 tbdinesh has joined #annotation 16:11:45 Dan Whaley: with Hypothesis 16:11:51 Kristof Csillag: with Hypothesis 16:12:00 Gergely Ujvari: with Hypothesis 16:12:18 Takeshi Kanai: I'm Takeshi Kanai, with Sony 16:12:57 Rob Sanderson, Stanford, co-chair with Frederick, co-editor with Paolo on the model, editor for protocol (and happy to have a co-editor :) ) 16:12:58 I am interested in implemneting the outcomes for this device (holding tablet device) 16:13:17 We are trying to also read Web documents on this device 16:13:34 Randall Leeds: I'm Randall Leeds, also with Hypothesis 16:13:43 Jon Udell: I'm Jon Udell, also with Hypothesis 16:13:45 Present+ Jon_Udell 16:14:08 Ray Denenberg, Library of Congress 16:14:11 .present +TB_Dinesh 16:14:49 Tim Cole (TimCole), University of Illinois and a founding member of the Open Annotation Community Group 16:14:57 Present+ Phil_Desenne_(Harvard_Observer) 16:15:00 Phil_Desenne: I'm Phil Desenne with Harvard University 16:15:02 Presnt+ Tim_Cole 16:15:23 bigbluehat: I'm Benjamin Young, I'm with Hypothesis. I like APIs. 16:15:44 Annotations at Europeana 16:15:45 present +TB_Dinesh 16:16:23 https://lists.w3.org/Archives/Public/public-annotation/2015Apr/0103.html 16:16:30 TimCole: There are a number of different people working on different pieces. There has been annotation in Europeana previously, but there seems to be a 16:17:27 scribe: tilgovi 16:18:15 There seems to be a new push to bring annotaation into the core of Europeana, which is good; glad they're paying attention. 16:18:16 fjh: Ivan is not here, but there's this whole space of ebook related stuff that maybe we should address and other thinsg that we need to revisit that we haven't done 16:18:36 Does anyone else have anything to offer the agenda? 16:19:10 q+ 16:19:16 ack TimCole 16:19:21 TB asked how this comes together with other things like social but I think we have a pretty full agenda 16:20:34 bigbluehat: I wanted to know who was here yesterday. The social web is looking at SOLiD, a social web linked data thing. I wanted to know if it came up at all. 16:21:25 ... the social WG is looking at several different protocols, but SOLiD seems to have a lot of iteration and the most overlap with us because it's LDP 16:21:37 fjh: We're going to move on now, to the LDP recap 16:21:46 Topic: LDP recap 16:22:12 azaroth: yesterday there was a meeting of the LDP WG, about the same number as here today 16:22:41 ... including foo from IBM and bar from Oracle, as well as myself and Dinesh and Takeshi 16:22:56 ... main work was finding out the status of what everybody is doing 16:23:19 Patch 16:23:21 ... relevant bits for us, the LD PATCH work is 16:23:45 ... to send updates to a resource rather than completely overwriting it, like SPARQL update and JSON PATCH and diffs 16:24:04 SoLiD API proposal (based on LDP) from the Social Web WG: https://github.com/linkeddata/SoLiD 16:24:05 ... but for linked data, where we might have blank nodes, and other things 16:24:11 ... that has all the boxes checked to go through to technical recommendation 16:24:19 ... However, the third part, LD Paging, does not 16:24:39 ... At the moment, there's only one implementation, and the framework for a test suite 16:24:49 Present+ Benjamin_Young 16:24:50 ... but needs a second implementation and test implementation to demonstrate interpo 16:24:53 shepazu has joined #annotation 16:25:02 TimCole has joined #annotation 16:25:04 ... The status at the moment is that it would be published as a WG note, rather than a TR 16:25:29 q+ 16:25:39 ... If we want to make normative references to that, if we as a WG think that's the right way to go for paging through sets of annotations, that would help us a lot in the future because then it could be a TR that we could refer to 16:26:04 ... The other thing addressed was the rechartering process. We tried to gauge interest in the different topics that had come up for a second round of work. 16:26:39 ... The topics that were most interesting were discovery (of containers, endpoints), which we need here, and extensiblility, so if there were a new capability that a server implemented there might be a way to link to that documentation of what it can do 16:26:56 ... There was a lot of discussion about filtering and query, which we've been discussing here as well, and it's promising that that is ranked highly 16:27:00 ... The third area was access control 16:27:25 q- 16:27:27 ... Seems like all of the LDP 1.1 focus would help us in the Annotation WG 16:27:39 q+ to ask about benefit of referencing LDP, interop benefits, risks 16:27:44 ... Unnerving issue is that the current chair cannot commit to being a chair in the future WG, so we would need to find a new chair before we could continue 16:28:13 q? 16:28:18 ack fjh 16:28:18 fjh, you wanted to ask about benefit of referencing LDP, interop benefits, risks 16:28:33 fjh: I've been asking myself "what is the benefit/risk of having a dependency on LDP?" 16:28:43 ... if what we're deploying is mostly just some REST then what do we get 16:28:49 ... my understanding is that some of what's in LDP we don't need 16:29:01 ... my suspicion is that if paging is a note there will be no interop testing 16:29:10 ... so we have to make interop testing for that 16:29:44 azaroth: For the basic containers there is a test suite and we would be able to bridge a lot of tests and implementations 16:30:09 ... I think it's worthwhile. Especially on the last call, we discussed that paging may simply fall out naturally from querying or relate more strongly to paging than the general LDP paging 16:30:29 ... other advantage is that we wouldn't need to specify all of the base level interactions like what is PUT, POST, etc 16:30:43 ... Really just a profile of that where what you're seeing is an annotation 16:30:44 q? 16:30:52 Present+ Jake_Hartnell 16:31:12 fjh: if it hadn't been done, I would be concerned about creating a dependency if we were going to do it anyway 16:31:17 azaroth has joined #annotation 16:31:17 q? 16:31:46 q+ 16:31:47 shepazu: because this isn't my area (that part of the stack) I'm not really comfortable knowing if LDP and ActivityStreams... where they overlap, compete, etc 16:31:54 q+ 16:32:02 ... I know there were people who attended the annotation workshop from the US gov't who said 'we have to do ActivityStreams' 16:32:20 ... is ActivityStreams in the same space as LDP or not? 16:33:02 fjh: There were three ways social was looking at doing protocol, LDP, ActivityStreams, and Micropub, so the LDP stuff would be a profile like what we're doing 16:33:07 ... I'm not familiar with SOLiD 16:33:25 bigbluehat: SOLiD spun out of the last Social WG F2F, possibly mixing in some SPARQL stuff 16:34:13 fjh: I thought micropub was the one that had legs in the group 16:34:28 bigbluehat: the group is pretty fractured, but micropub has an achilles heel because it has no JSON-LD semantics 16:34:38 ... so you would have to map it to an ActivityStreams output 16:35:12 ... whereas the LDP-based one is JSON-LD, is AS2.0 ... James Snell has an implementation, and then there's SOLiD which pulls in other things 16:35:25 ... James' stuff is just LDP + AS2.0, but both use AS2.0 as currently written 16:35:28 q? 16:35:44 ... the other two have no knowledge of AS2.0, so there's a whole lot more work to do to map it to the document that's been made so far 16:35:51 fjh: what is the time frame fro SOLiD? 16:35:56 bigbluehat: they are having a F2F in May in Paris. 16:36:05 ... that was stuck on the board as a deadline for a fleshed out presentation 16:36:17 q- 16:36:20 ... they're getting decent iteration of it 16:36:42 Zakim: who's here? 16:36:49 q- 16:36:56 q- 16:37:09 Topic: Client API 16:37:21 q- 16:37:52 fjh: we have a bunch of stuff in our charter, some stuff we haven't talked about much 16:37:58 ... so one of the ideas for this F2F is to get those things moving 16:38:04 judell_ has joined #annotation 16:38:10 ... one of the topics is the client side API, we should talk about what we're trynig to do and what the assumptions are 16:38:36 .. I think we're talking about JavaScript using Web IDL 16:38:43 ... I think we're talking about JavaScript using Web IDL 16:38:53 ... The reality is that it just goes to JS now, but we still use it all over the W3C anyway 16:39:05 ... but that's what I think script interface means... JS described by Web IDL 16:39:09 ... events means HTML5 Events 16:39:20 ... "in a browser" means we're talking about asynchronous interfaces that probably use Promises 16:39:39 s/foo/Arnaud Le Hors 16:39:56 ... reading system is another item in the list 16:40:06 ... I think that means we want support for offline and synchronization, but we should talk about how far we have to go in that work 16:40:15 ... I'm not sure what a plugin means except that it's an incremental deployment strategy 16:40:23 ... to do the implemnetations without getting browser buy-in immediately 16:40:45 ... So what's the core functionality of the API? 16:40:57 ... I think it includes some basics that are similar to the protocol but it's not the protocol 16:41:11 ... I don't think Social WG has a client protocol in the same way, so when they say Client API they mean the protocol 16:41:24 ... We want to allow to do things in a client application, something different from but integrated with the protocol 16:41:44 ... I think you're working with the JS in the page you're at, which has security implications 16:41:49 q+ 16:41:58 ... Doug has work on a robust anchoring API, we'd probably want to integrate with that 16:42:09 ... Local caching seems important, whether it's in the API, I don't know 16:42:32 ... The authentication, OAuth, seems important, I don't know if it's ours but maybe we have to make recommendations 16:42:38 ... then search, which is probably an API method as well 16:43:01 fjh: We have to do sensible HTML5 integration, which means a bunch of best practices for writing APIs 16:43:22 on the earlier API note, here's James Snell's LDP-based ActivityStreams API code: https://github.com/jasnell/dandus 16:43:43 ... you shuold be able to have a server-side implementation and still do stuff, a client api is not required in that sense 16:44:25 ... I was thinking about the IndieWeb work and noting the requirements there about server software simplicity, but I think this doesn't impact the client API 16:44:51 ... There's a lot of stuff going in with privacy in different W3 groups, and one thing that has emerged over the years is the idea of user control 16:45:12 ... sharing with the server expectations about retention and re-use of data 16:45:20 ... we might want an extension point but I'm not sure we need to do much 16:45:31 ... Do we need to say anything about UI implementation support in the API? 16:45:41 ... Do there need to be methods to help associate CSS stuff with the presentation? 16:45:53 ... Do we need to integrate with social? I think it's beyond what we need to worry about at the beginning. 16:46:27 fjh: There's a list of requirements in a document from paoloC that might also apply to the API 16:47:13 ... What's the target URI, path, we have to be able to make these statements in the API 16:47:35 ... I'm hoping this will dovetail a bit with what nickstenn has been thinking about 16:47:36 https://lists.w3.org/Archives/Public/public-annotation/2015Apr/att-0121/ClientSideAPI.pdf 16:47:38 q? 16:47:42 Link to the requirements from DPUB use cases: http://www.w3.org/TR/dpub-annotation-uc/#requirements 16:48:11 nickstenn: to be clear, I don't have a slide show that answers any of the questions that fjh just asked 16:48:25 ... this is not a piece of work with hours of investment, but it's a thing we've been playing with on and off at Hypothesis 16:48:30 ... it's one piece of what we're talking about 16:49:00 https://docs.google.com/presentation/d/1ZKSZyLbEFqwYaG32cFJwcXQjjiU2ZzQguDmyhKfaTdY/edit#slide=id.p 16:49:42 nickstenn: What I'm going to talk about is a little project that came out of questions around how we make Annotator part of an interoperable ecosystem and part of the work doing here rather than doing its own thing 16:50:03 ... this component is supposed to answer, "What is the smallest, useful, low-level component in a client-side API for annotation?" 16:50:17 ... I'm talking about something that might be useful across different applications but is not expansive in scope 16:50:31 ... when we say "client side" API we envision something that would ultimately be used in JS from the DOM APIs 16:51:04 ... by "low-level" we mean that standardized APIs in clients should be lower-level than you might at first think, because it's less likely that you'll build something wrong even if other people have to do more work to make it more useful 16:51:12 +1 to nickstenn 16:51:18 ... but if you give something higher level where there isn't access to the nuts and bolts it may end up not getting used 16:51:45 ... What I mean by 'annotation application' I mean some piece of software that creates annotations, whether the user sees it that way or not 16:51:53 ... for example, it could be the code that Medium uses to create annotations 16:52:02 ... it could be an extension that lets you see who is tweeting about the current document 16:52:21 ... the point is that the state of the annotation applications lives with them (in this diagram) 16:52:33 ... DOM Annotations is supposed to be a layer over the document where the current state of annotations on the document can live 16:52:47 ... the idea being that the application(s) can use that and potentially see the annotations created by other annotation applications 16:53:12 ... When I say "state", I am specifically talking about the state of annotations attached to a document at a current point in time in a given "page load" 16:53:21 ... Not storage, not retreiveal, not persistence 16:53:29 s/retreiveal/retrieval/ 16:53:39 nickstenn: This is like when you open the inspector and see the styles and dom elements 16:54:20 ... as a developer, you might ask, "How do I attach annotations to (parts of) the document?", "How do I retrieve annotations associated with (same)?" 16:54:37 ... and, to riff on what fjh said, most HTML APIs are event based 16:54:51 ... so, "How can I be notified when annotations are attached/changed/removed" even by pieces of software I don't control 16:54:56 ... DOM Annotations tries to answer some of these questions 16:55:20 https://github.com/nickstenning/domannotations 16:55:21 ... "straw man" proposal, pick holes in it: https://github.com/nickstenning/domannotations 16:55:32 nickstenn: This is all it is, it's not large 16:55:47 ... currently implemented as a polyfill, in the sense that you load a library and it attaches stuff to existing pieces of the DOM API 16:55:53 ... it is intended to mimic existing APIs 16:56:03 ... one of my questions is: "is that a good idea" 16:56:08 q? 16:56:13 q+ 16:56:16 ... some argument from consistency says "yes" but whether that's the best practices at this point is not clear 16:56:27 ... Three functions on the document object (we can argue about whether that's the right thing): 16:56:32 ... createAnnotation(), no arguments 16:56:53 ... as document.createElement() creates an element but doesn't attach it to the document, this is essentially just a constructor 16:57:08 ... getAnnotations(), at the moment takes an array of Nodes, is the querying part 16:57:09 q- 16:57:14 ... it asks what annotations are attached to the nodes 16:57:16 q+ to ask about server integration 16:57:19 ... lastly, removeAnnotation() is probably fairly obvious 16:57:31 ... In the current implementation, Annotations are first class objects just as Nodes and Elements are 16:57:38 ... At the moment, they don't do anything interesting, just enough to work 16:57:50 ... they have two methods, addTarget() and addBody() 16:58:27 ... Targets are also, currently, first-class objects you must, yourself, construct that reference parts of the DOM 16:58:44 ... If you are familiar with the Range APIs... 16:58:53 ... a "Text" target might be a wrapper around a Range 16:59:10 https://dom.spec.whatwg.org/#ranges 16:59:23 nickstenn: There are also some events: 'annotation{create,change,remove}' 16:59:51 ... these are fired on the Document 17:00:06 ... 'annotationcreate', it's worth noting, at that point nothing is attached and there is no data for the annotation 17:00:17 ... 'annotationchange' says it changed, someone added a target / removed a target, etc 17:00:38 shepazu: At that point, would the event bubble or would it simply be on the Document? 17:00:45 nickstenn: At the moment it's simply on the Document 17:00:56 ... the first time I did this I made it bubble, but there are problems we can discuss with that 17:01:03 ... 'annotationremove' is probably straightforward 17:01:18 fjh: I assume this means that I could have an event handler, and then update the server if I want persistent storage 17:01:27 ... so the event model is elegant in allowing you to do these things as you see fit 17:01:29 nickstenn: precisely 17:01:43 TimCole: so if I remove it, I'm removing it from "this document" and it says nothing about what's happening on a server 17:01:54 nickstenn: Yes. There is a distinction between change and remove vs update and delete. 17:02:10 ... change and remove happen within the document, but update and delete are user actions with effects elsewhere 17:02:18 ... it may well be that removal denotes that you want to delete it, but it may not 17:02:53 shepazu: conversely, if someone made an annotation, remotely, and they delete it, it wouldn't be removed in your local notification 17:03:00 s/notification/document/ 17:03:02 q? 17:03:09 azaroth: as well as the persistence layer, you would need this for the user interface layer 17:03:27 nickstenn: some of these discussions we might want to have more informally 17:03:45 ... "how would you write a persistence module that watches these events and saves annotations elsewhere" 17:04:01 ... "how would a user interface module that wants to draw highlights on the page and remove them" 17:04:11 fjh: I like that it's simple and it's consistent with what I've seen about events 17:04:36 ... is Server Sent Events a rec? 17:05:01 nickstenn: Again, that is something you as an implementor might integrate with this API to handle events from a server 17:05:11 ... 17:05:49 Server Sent Events specification: http://www.w3.org/TR/eventsource/ 17:06:03 EventSource is the browser-side API name for dealing with Server Sent Events 17:06:29 nickstenn: When I select text, I use the same methods to detect the selection that I do in Annotator 17:06:37 ... but then I create an annotation (using the createAnnotation API) 17:07:00 ... The highlighter, though, is a separate component, that listens to the annotationchange event and enumerates the targets and draws some highlights 17:07:14 ... At the moment, this is a polyfill, so it's kind of a hack on a stick, so they are DOM CustomEvents 17:07:22 ... this would be something we actually specify in WebIDL 17:08:11 ... when I click on a node, I'm using the getAnnotations API to get the annotations on that node 17:08:16 ... and then using the removeAnnotation to remove the annotations 17:08:28 ... the highlighter then listens to the annotationremove event, and removes the highlight 17:08:33 text/event-stream is the Media Type for the text format sent from the server: http://www.w3.org/TR/eventsource/#text-event-stream 17:08:48 shepazu: With the getAnnotations, let's say there are two annotations that are on a particular span 17:08:56 ... what if I wanted to get all the annotations on a particular section? 17:09:02 q+ 17:09:12 ... the node that i'm clicking on has annotations with it as its target 17:09:20 ... does it also work for getting all annotations within a node 17:09:28 q+ 17:09:46 nickstenn: what you have described is "given a node, show me the annotations" but a lot of real world applications might want "given a chunk of the document, give me all the annotations" 17:09:58 ... I think the answer to that is that it's low level, and getAnnotations takes a list of DOM nodes 17:10:11 ... you can use existing DOM APIs to enumerate the nodes in a paragraph and then pass that 17:10:39 nickstenn: If anyone wants to know what's going on under the hood, I can walk them through the code 17:11:05 q? 17:11:10 q+ 17:11:26 MiguelAraCo has joined #annotation 17:11:47 nickstenn: It's worth stressing this is a low-level API it is not meant to be pretty 17:11:56 ... there are lots of edge cases you need to address if you're writing an application that uses this 17:12:05 ... but the advantage is you can serve all scenarios, even if it is more work 17:12:15 q- 17:12:26 nickstenn: This is not intended to help with storage, persistence, or retrieval. 17:12:37 ... it is not intended to help with fuzzy anchoring, or taking a serialized annotation and finding a bit of the document. 17:12:45 ... and it is not necessarily intended to help with serialization 17:13:03 ... that is one of the more interesting questions, I think, trying to understanding how the serialization would work 17:13:12 ... is there a way we could do it completely orthogonally to this piece 17:13:21 ... This is merely a reflection of the "annotation state" 17:13:37 nickstenn: Open questions for the group 17:13:52 ... does this "smell" right? should it be imitating other APIs with, for instance, createAnnotation API 17:13:59 q+ tb 17:14:03 ... Events vs Mutation Observers? 17:14:52 ... This deals with "reified state", references to bits of a live DOM thing... is this the right thing for it to be doing? 17:14:56 ... How does serialization work? 17:14:58 q+ 17:15:29 ... Lastly, this is not a bulk API. Does it need a bulk component? How would we find that out? What performance testing would we need to do to find out? 17:15:52 q? 17:16:07 ack shepazu 17:16:22 shepazu: First, thank you for putting this together. 17:16:33 orthogonality is good 17:16:34 ... I think it's orthogonal to something other things like the RangeFinder, I like how you went low-level 17:16:43 ... another reason to do that is because you can compose it up into other things 17:16:47 modularity, testability etc are useful 17:16:49 ... that's very much the trend the right now 17:17:15 ... things like the CSS Houdini project is trying to give CSS more explicit, lower-level components, so I think your instinct is right 17:17:19 ... I think it does smell okay 17:18:38 shepazu: in your model, is the event only sent when someone does something via script? or does it also change when the underlying DOM changes? 17:18:48 ... If I have a target and that target goes away... that's when you start getting into mutation 17:19:26 ... This thing is a meta-thing on top of the document, so it doesn't change the document itself, so you wouldn't get into loops 17:19:38 ... but for utility sake, if the target of an annotation changes I might want an event, but then it might get us into mutation observers 17:19:43 q? 17:20:00 nickstenn: I don't have a whole answer, but at the moment the events are triggered by user (script) actions on the annotation only 17:20:43 ... for the benefit of people who have not run into this before, let's say you do have a long document and things are popping into and out of existence as you scroll, that's a real example of where you might attach an annotation to a document nad then the piece of document where that is attached just disappears 17:20:56 ... that at the moment does not cause any problems, because the annotations are attached to the dom elements 17:21:08 ... and if the elements are released the annotations go away 17:21:27 ... If you have a reference to the node, you can get the annotations, otherwise you can't use the API to get to the annotations 17:21:33 q+ to ask about multiple targets and destroyed nodes 17:21:50 shepazu: what if I create a node, create an annotation, and then attach the paragraph to the annotation as a target, and then insert that into the document 17:22:02 ... does the node have to be in the document 17:23:17 fjh: A big thank you for all this work, it helps move stuff forward. 17:23:25 ... my instinct is you're doing the right thing 17:23:38 ... you want to keep it simple and we can do separate specs to build on it 17:23:46 ... we want it to be testable, modular, usable, so I think it's the right approach 17:24:06 ... I would suggest when we have a draft spec we can run it by the TAG and get feedback, so I think we can ask the right people and get feedback in no time 17:24:21 ack fjh 17:24:21 fjh, you wanted to ask about server integration 17:24:25 ... Just because we do one thing that's simple doesn't mean we can't do other things on top 17:24:32 ack TimCole 17:24:45 TimCole: Right now you have the annotation, addTarget and addBody, right now those are the only two methods 17:24:53 ... the fact that the target can encompass multiple nodes is interesting 17:24:56 q+ 17:25:12 ... the next question is, what's the functionality for multiple targets or for removing a node within a target, are any of those things there yet or are they priorities? 17:25:18 nickstenn: A couple questions in there 17:25:21 I recommend we start simple 17:25:32 ... other properties, absolutely. If we're going to have an Annotation class it needs to actually support the pieces of the model 17:25:50 ... multiple targets, this does multiple targets 17:26:02 ... you can do addTarget multiple times 17:26:20 ... If I remember correctly, addTarget gives back the Target object and then you can remove that object 17:26:47 ... and what happens if the piece targeted changes, I don't think that matters until serialization time 17:27:03 ack paoloC 17:27:05 ... and that is why DOM Annotations doesn't, in the general operation, need to worry about that 17:27:16 paoloC: I have a few points. My first impression was "this is really neat". 17:27:34 ... my second reaction is that I'm worried about the complexity of the model and that possible the body and the target are open ended 17:27:45 ... I'm sure we can extend to accomodate this 17:28:00 ... how do you feel about complex highlighting, overlapping, nested, all these complications 17:28:04 ... is that all still orthogonal? 17:28:10 nickstenn: I think that is a completely separate issue 17:28:23 ... DOM Annotations lets you attach as many annotations as you like to the same piece of the document 17:28:43 paoloC: But if you have not nested annotations you have to break them down in the document 17:29:00 nickstenn: I think you have to be careful not to consider it the same as creating highlights in the document 17:29:07 ... this is a separate problem 17:29:20 paoloC: then I was worried about the dynamicity of the documents. 17:29:39 ... I agree that the part that could be hard is the storage 17:29:57 q? 17:30:00 nickstenn: My personal mental model of how we're going to do this stuff is that we may have to think about storage as being a bit more of an op log approach than a CRUD approach 17:30:24 ... someone is creating annotations in a changing document, the storage component might simply be watching that and then by some heuristic might decide at some point that we're at a place where we can save that off to a remote server 17:30:57 ... if you like, you create the annotation once and that's the right annotation and then it's the responsibility of the persistence component to know that the annotation might need to be updated when the annotation does change 17:31:45 paoloC: I'm worried about actions and the difference between document pieces loading and document pieces getting deleted 17:32:20 azaroth has joined #annotation 17:32:20 ... I think if we had to use this in a framework I would have to duplicate some functions in the code 17:32:46 ... talking in paricular about ReactJS 17:33:09 q+ 17:33:13 ack tb 17:33:31 tbdinesh: The way I see an annotation happen is that there are first selectable objects 17:33:34 ... if you can't select you don't have targets 17:33:40 ... could be text but there are lots of other things 17:33:50 ... so what is it that makes something annotateable? 17:33:55 ... is how we select something 17:34:03 ... I'm not sure this is the smallest 17:34:13 nickstenn: I think you're right, if you can't select a piece of a document you can't annotate it 17:34:29 ... to address the issue directly, I think that's true, but there is an extent to which that is not the problem of this component 17:34:34 q+ 17:34:44 ... how does the user interface work? not the problem of this component. 17:35:03 ... what this component needs is a Target object, which is some domain object that provides a reference, if you like, to the thing you have selected 17:35:08 ... possibly also a way of serializing that 17:35:19 ... and what this deals with is Targets that are themselves Nodes in an HTML document 17:35:44 tbdinesh: would it be simpler if you didn't do selection across the DOM elements 17:36:07 nickstenn: so you're saying that the ability to create a target that spans multiple elemenst in the document means this isn't the simplest thing 17:36:12 ... I think that's interesting 17:36:13 how does fit with create body first then add targets model? 17:36:26 ... my gut tells me when a user annotates an HTML document they're not thinking about elements and the DOM tree 17:36:32 ... they're thinking about a "logical document" 17:36:45 ... if I'm using MS Frontpage it might span 500 elements for no apparent reason 17:36:58 ... that's why a target can refer to a range, which can span multiple nodes 17:37:11 shepazu: Target is not yet defined, as far as I can tell. It might be a Range or it might be a section of a 3D document. 17:37:32 ... I can't pass an event on the 15th second of a video, but we can target that 17:38:15 tbdinesh: I think we need to think a little bit lower 17:38:18 nickstenn: I think we're all saying the same thing 17:38:18 q? 17:38:34 ack bigbluehat 17:38:56 tbdinesh: this is to do with elements that are not part of the document 17:39:19 ... one thing we do is to make annotations that are navigable for a page that is not accessible 17:39:26 ... (talking about accessibility) 17:39:37 ... You change the page through your annotation, and that is the page your annotations work on 17:40:02 nickstenn: I think what you're describing is annotations of things that don't exist exactly in the document 17:40:12 q- 17:40:31 tbdinesh: To clarify, there's a DOM Element and it's not identified as part of the navigation 17:41:03 bigbluehat: I think there are more pieces that aren't presented here, and this is the DOM surface area, which comes and goes with the DOM state machine 17:41:08 ... there's got to be other pieces 17:41:19 ... there's a growing contigent that want to get rid of the DOM state machine, and want a different sort of expression 17:41:25 ... but for the thing that we have, I think this works well 17:41:47 nickstenn: the thing to do is for us to identify the use case we're describing, make sure that the use case is recorded, so we can ask "is the thing that we've built going to cover the use case" 17:41:56 fjh: "Are we clear on what the goal is" 17:57:38 azaroth has joined #annotation 17:58:54 fjh has joined #annotation 17:59:08 scribenick: TimCole 17:59:32 q? 17:59:42 q+ 17:59:48 q- 17:59:52 q? 18:00:26 nickstenn: from an extensibility perspective you may wish to annotate parts that are not in the document 18:00:27 MiguelAraCo has joined #annotation 18:00:30 Much thanks to Randall for excellent scribing 18:00:31 RayD has joined #annotation 18:00:34 q? 18:01:03 present+ Ray_Denenberg 18:01:18 rrsagent, generate minutes 18:01:18 I have made the request to generate http://www.w3.org/2015/04/22-annotation-minutes.html fjh 18:01:22 shepazu: let's i have an image in my document, but no alt tag. now i want to attach a description for accessibility 18:01:25 (lost connection, rejoining) 18:01:35 q? 18:01:53 ... this is an annotation. you would create an annotation attach to image and add a body which is the description 18:02:22 s/extensibility/accessibility/ 18:02:25 tb: I annotate to change the dom in order to support accessibility 18:03:08 bigbluehat: use case coverages -- paolo and i do use cases, mostly protocol to date. need help on client-side use cases 18:03:34 ... what doesn't DOMAnnotations handle, i.e., non DOM State Machine annotations 18:03:42 the use case to capture from above was "Annotate elements that aren't in the document in order to indicate that they *should* be. As a blind person, I want to let the page author know that a