{"action":"created","issue":{"url":"https://api.github.com/repos/w3c/user-timing/issues/17","repository_url":"https://api.github.com/repos/w3c/user-timing","labels_url":"https://api.github.com/repos/w3c/user-timing/issues/17/labels{/name}","comments_url":"https://api.github.com/repos/w3c/user-timing/issues/17/comments","events_url":"https://api.github.com/repos/w3c/user-timing/issues/17/events","html_url":"https://github.com/w3c/user-timing/issues/17","id":162484644,"number":17,"title":"Declarative marks","user":{"login":"igrigorik","id":10652,"avatar_url":"https://avatars.githubusercontent.com/u/10652?v=3","gravatar_id":"","url":"https://api.github.com/users/igrigorik","html_url":"https://github.com/igrigorik","followers_url":"https://api.github.com/users/igrigorik/followers","following_url":"https://api.github.com/users/igrigorik/following{/other_user}","gists_url":"https://api.github.com/users/igrigorik/gists{/gist_id}","starred_url":"https://api.github.com/users/igrigorik/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/igrigorik/subscriptions","organizations_url":"https://api.github.com/users/igrigorik/orgs","repos_url":"https://api.github.com/users/igrigorik/repos","events_url":"https://api.github.com/users/igrigorik/events{/privacy}","received_events_url":"https://api.github.com/users/igrigorik/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/w3c/user-timing/labels/whiteboard","name":"whiteboard","color":"1d76db"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/w3c/user-timing/milestones/2","html_url":"https://github.com/w3c/user-timing/milestones/Level%203","labels_url":"https://api.github.com/repos/w3c/user-timing/milestones/2/labels","id":1855468,"number":2,"title":"Level 3","description":"","creator":{"login":"igrigorik","id":10652,"avatar_url":"https://avatars.githubusercontent.com/u/10652?v=3","gravatar_id":"","url":"https://api.github.com/users/igrigorik","html_url":"https://github.com/igrigorik","followers_url":"https://api.github.com/users/igrigorik/followers","following_url":"https://api.github.com/users/igrigorik/following{/other_user}","gists_url":"https://api.github.com/users/igrigorik/gists{/gist_id}","starred_url":"https://api.github.com/users/igrigorik/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/igrigorik/subscriptions","organizations_url":"https://api.github.com/users/igrigorik/orgs","repos_url":"https://api.github.com/users/igrigorik/repos","events_url":"https://api.github.com/users/igrigorik/events{/privacy}","received_events_url":"https://api.github.com/users/igrigorik/received_events","type":"User","site_admin":false},"open_issues":3,"closed_issues":0,"state":"open","created_at":"2016-06-29T16:01:34Z","updated_at":"2016-06-29T16:02:32Z","due_on":null,"closed_at":null},"comments":11,"created_at":"2016-06-27T15:47:23Z","updated_at":"2016-09-13T12:29:19Z","closed_at":null,"body":"Today, to emit a user timing mark or measure you need to execute JS, however JS may blocked due to pending stylesheets, other blocking scripts, etc. It would be nice if there was a _declarative_ mechanism to register a mark and/or measure via markup. E.g...\r\n\r\n- Server streams back the response in chunks\r\n\r\n```html\r\n <body>\r\n  <p>lorem ipsum....</p>\r\n  ...\r\n  <user-timing mark=\"header\"> <!-- or some such.. -->\r\n  ...\r\n```\r\n\r\n- UA receives a chunk and runs a preload scanner on it: it should emit a mark when it detects the declaration.\r\n- Some time later, the doc parser (re)processes the same chunk, executes JS, and emits another set of marks defined via existing JS APIs.\r\n\r\nWe've had similar discussions before around exposing timing of each HTTP chunk.. but that could be excessive and its hard to reason about (there is no way easy way to correlate a particular chunk to something you care about). On the other hand, exposing a declarative mechanism would allow applications to \"mark\" the significant points in the response stream and correlate them against other metrics."},"comment":{"url":"https://api.github.com/repos/w3c/user-timing/issues/comments/246665567","html_url":"https://github.com/w3c/user-timing/issues/17#issuecomment-246665567","issue_url":"https://api.github.com/repos/w3c/user-timing/issues/17","id":246665567,"user":{"login":"csharrison","id":1066818,"avatar_url":"https://avatars.githubusercontent.com/u/1066818?v=3","gravatar_id":"","url":"https://api.github.com/users/csharrison","html_url":"https://github.com/csharrison","followers_url":"https://api.github.com/users/csharrison/followers","following_url":"https://api.github.com/users/csharrison/following{/other_user}","gists_url":"https://api.github.com/users/csharrison/gists{/gist_id}","starred_url":"https://api.github.com/users/csharrison/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/csharrison/subscriptions","organizations_url":"https://api.github.com/users/csharrison/orgs","repos_url":"https://api.github.com/users/csharrison/repos","events_url":"https://api.github.com/users/csharrison/events{/privacy}","received_events_url":"https://api.github.com/users/csharrison/received_events","type":"User","site_admin":false},"created_at":"2016-09-13T12:29:19Z","updated_at":"2016-09-13T12:29:19Z","body":"When I last chatted with Ben I got the impression that the current situation today is so bad, literally any more information we can give which helps relay the state of the browser makes perf analytics easier for FB.\r\n\r\nFor FB, there were a few special cases in which Chrome was scanning preloads, but their fetches were being delayed (up to 150ms in some cases) due to the main thread being pegged by extension content scripts on desktop platforms.\r\n\r\nThis was a terrible user experience that confused them and they had to run trace analysis and reach out to us to continue investigating / improve things on Chrome's side. This is a case where scan time would have helped find the problem earlier (they get it server side rather than having to reproduce and analyze locally).\r\n\r\nI agree exposing this in general seems dangerous though. Parse time and render time have many more use cases imo."}}
{"actor":{"display_login":"csharrison"}}