{"action":"created","comment":{"url":"https://api.github.com/repos/drufball/layered-apis/pulls/comments/207683154","pull_request_review_id":143353783,"id":207683154,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwNzY4MzE1NA==","diff_hunk":"@@ -23,37 +25,137 @@ Enable the creation of high-level features such that:\n \n ## Solution\n \n-### Part 1: the infrastructure\n+### Part 1: the standards process\n+\n+We propose a renewed focus in the web-standards space on higher-level APIs. In particular, we'd propose a marketing-brand of \"layered APIs\" for high-level API standardization efforts which follow these two constraints:\n+\n+- **Layered**: Their specifications _must not_ use any \"magic\" that is inaccessible to web developers, i.e. they must be layered on top of the platform's existing lower-level features. A concrete way of stating this is that a web developer must be able to implement a given layered API's specification, purely in unprivileged JavaScript.","path":"README.md","position":18,"original_position":18,"commit_id":"bedc20a70c29809ec186bb5022d574691dde5d52","original_commit_id":"bedc20a70c29809ec186bb5022d574691dde5d52","user":{"login":"ljharb","id":45469,"node_id":"MDQ6VXNlcjQ1NDY5","avatar_url":"https://avatars1.githubusercontent.com/u/45469?v=4","gravatar_id":"","url":"https://api.github.com/users/ljharb","html_url":"https://github.com/ljharb","followers_url":"https://api.github.com/users/ljharb/followers","following_url":"https://api.github.com/users/ljharb/following{/other_user}","gists_url":"https://api.github.com/users/ljharb/gists{/gist_id}","starred_url":"https://api.github.com/users/ljharb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ljharb/subscriptions","organizations_url":"https://api.github.com/users/ljharb/orgs","repos_url":"https://api.github.com/users/ljharb/repos","events_url":"https://api.github.com/users/ljharb/events{/privacy}","received_events_url":"https://api.github.com/users/ljharb/received_events","type":"User","site_admin":false},"body":"what's the value in ensuring that layered APIs can be implemented in JS, when it'd be impossible to transparently provide a missing layered API using JS? (iow, when in practice would anyone ever actually *implement* a layered API in JS, except to polyfill it?)","created_at":"2018-08-03T22:40:05Z","updated_at":"2018-08-03T22:40:06Z","html_url":"https://github.com/drufball/layered-apis/pull/33#discussion_r207683154","pull_request_url":"https://api.github.com/repos/drufball/layered-apis/pulls/33","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/drufball/layered-apis/pulls/comments/207683154"},"html":{"href":"https://github.com/drufball/layered-apis/pull/33#discussion_r207683154"},"pull_request":{"href":"https://api.github.com/repos/drufball/layered-apis/pulls/33"}},"in_reply_to_id":207682706},"pull_request":{"url":"https://api.github.com/repos/drufball/layered-apis/pulls/33","id":206152822,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA2MTUyODIy","html_url":"https://github.com/drufball/layered-apis/pull/33","diff_url":"https://github.com/drufball/layered-apis/pull/33.diff","patch_url":"https://github.com/drufball/layered-apis/pull/33.patch","issue_url":"https://api.github.com/repos/drufball/layered-apis/issues/33","number":33,"state":"open","locked":false,"title":"Rewrite with a stronger dependency on package name maps","user":{"login":"domenic","id":617481,"node_id":"MDQ6VXNlcjYxNzQ4MQ==","avatar_url":"https://avatars0.githubusercontent.com/u/617481?v=4","gravatar_id":"","url":"https://api.github.com/users/domenic","html_url":"https://github.com/domenic","followers_url":"https://api.github.com/users/domenic/followers","following_url":"https://api.github.com/users/domenic/following{/other_user}","gists_url":"https://api.github.com/users/domenic/gists{/gist_id}","starred_url":"https://api.github.com/users/domenic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/domenic/subscriptions","organizations_url":"https://api.github.com/users/domenic/orgs","repos_url":"https://api.github.com/users/domenic/repos","events_url":"https://api.github.com/users/domenic/events{/privacy}","received_events_url":"https://api.github.com/users/domenic/received_events","type":"User","site_admin":false},"body":"This incorporates some of the ideas touched on in the issue tracker, mostly around using package name maps to provide a better fallback story and web developer control. It touches on the following issues:\r\n\r\n* Fixes #10, fixes #14, fixes #15, and fixes #24 by moving away from std:x|y and its attendant problems.\r\n* Opens the door to solutions for #5 based on the speculative package name map fallback ideas.\r\n\r\nIt also adds a bit more motivation to the intro, and rearranges to emphasize the standards process, before diving into many details on the importing infrastructure.\r\n\r\nFor now we delete the \"Trying these ideas out\" section, and spec.md, as they are all about the old infrastructure.\r\n\r\n----\r\n\r\nReview much appreciated. I'd suggest just re-reading the entire doc using the rendered view on GitHub.\r\n\r\nThe `layeredapi:` URL scheme is an interesting aspect here. I'd like to get folks' reactions to it, especially if they are negative. In a package name map based system, it is most natural to have a package -> URL mapping, and so we need some URL system to exist to map to. We could re-conceptualize how package name maps work, or add special exceptions for built-in packages/LAPIs, maybe. But this makes the most sense to me. Still, I'm wary of the extra complexity it adds.","created_at":"2018-08-03T22:31:36Z","updated_at":"2018-08-03T22:40:06Z","closed_at":null,"merged_at":null,"merge_commit_sha":"d27574eaa43acd3e16e15229fa947a6d196c3696","assignee":null,"assignees":[],"requested_reviewers":[{"login":"ojanvafai","id":1607171,"node_id":"MDQ6VXNlcjE2MDcxNzE=","avatar_url":"https://avatars1.githubusercontent.com/u/1607171?v=4","gravatar_id":"","url":"https://api.github.com/users/ojanvafai","html_url":"https://github.com/ojanvafai","followers_url":"https://api.github.com/users/ojanvafai/followers","following_url":"https://api.github.com/users/ojanvafai/following{/other_user}","gists_url":"https://api.github.com/users/ojanvafai/gists{/gist_id}","starred_url":"https://api.github.com/users/ojanvafai/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ojanvafai/subscriptions","organizations_url":"https://api.github.com/users/ojanvafai/orgs","repos_url":"https://api.github.com/users/ojanvafai/repos","events_url":"https://api.github.com/users/ojanvafai/events{/privacy}","received_events_url":"https://api.github.com/users/ojanvafai/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/drufball/layered-apis/pulls/33/commits","review_comments_url":"https://api.github.com/repos/drufball/layered-apis/pulls/33/comments","review_comment_url":"https://api.github.com/repos/drufball/layered-apis/pulls/comments{/number}","comments_url":"https://api.github.com/repos/drufball/layered-apis/issues/33/comments","statuses_url":"https://api.github.com/repos/drufball/layered-apis/statuses/bedc20a70c29809ec186bb5022d574691dde5d52","head":{"label":"drufball:take-3","ref":"take-3","sha":"bedc20a70c29809ec186bb5022d574691dde5d52","user":{"login":"drufball","id":5472050,"node_id":"MDQ6VXNlcjU0NzIwNTA=","avatar_url":"https://avatars0.githubusercontent.com/u/5472050?v=4","gravatar_id":"","url":"https://api.github.com/users/drufball","html_url":"https://github.com/drufball","followers_url":"https://api.github.com/users/drufball/followers","following_url":"https://api.github.com/users/drufball/following{/other_user}","gists_url":"https://api.github.com/users/drufball/gists{/gist_id}","starred_url":"https://api.github.com/users/drufball/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/drufball/subscriptions","organizations_url":"https://api.github.com/users/drufball/orgs","repos_url":"https://api.github.com/users/drufball/repos","events_url":"https://api.github.com/users/drufball/events{/privacy}","received_events_url":"https://api.github.com/users/drufball/received_events","type":"User","site_admin":false},"repo":{"id":116189383,"node_id":"MDEwOlJlcG9zaXRvcnkxMTYxODkzODM=","name":"layered-apis","full_name":"drufball/layered-apis","owner":{"login":"drufball","id":5472050,"node_id":"MDQ6VXNlcjU0NzIwNTA=","avatar_url":"https://avatars0.githubusercontent.com/u/5472050?v=4","gravatar_id":"","url":"https://api.github.com/users/drufball","html_url":"https://github.com/drufball","followers_url":"https://api.github.com/users/drufball/followers","following_url":"https://api.github.com/users/drufball/following{/other_user}","gists_url":"https://api.github.com/users/drufball/gists{/gist_id}","starred_url":"https://api.github.com/users/drufball/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/drufball/subscriptions","organizations_url":"https://api.github.com/users/drufball/orgs","repos_url":"https://api.github.com/users/drufball/repos","events_url":"https://api.github.com/users/drufball/events{/privacy}","received_events_url":"https://api.github.com/users/drufball/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/drufball/layered-apis","description":"A new standards effort for collaborating on high-level features.","fork":false,"url":"https://api.github.com/repos/drufball/layered-apis","forks_url":"https://api.github.com/repos/drufball/layered-apis/forks","keys_url":"https://api.github.com/repos/drufball/layered-apis/keys{/key_id}","collaborators_url":"https://api.github.com/repos/drufball/layered-apis/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/drufball/layered-apis/teams","hooks_url":"https://api.github.com/repos/drufball/layered-apis/hooks","issue_events_url":"https://api.github.com/repos/drufball/layered-apis/issues/events{/number}","events_url":"https://api.github.com/repos/drufball/layered-apis/events","assignees_url":"https://api.github.com/repos/drufball/layered-apis/assignees{/user}","branches_url":"https://api.github.com/repos/drufball/layered-apis/branches{/branch}","tags_url":"https://api.github.com/repos/drufball/layered-apis/tags","blobs_url":"https://api.github.com/repos/drufball/layered-apis/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/drufball/layered-apis/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/drufball/layered-apis/git/refs{/sha}","trees_url":"https://api.github.com/repos/drufball/layered-apis/git/trees{/sha}","statuses_url":"https://api.github.com/repos/drufball/layered-apis/statuses/{sha}","languages_url":"https://api.github.com/repos/drufball/layered-apis/languages","stargazers_url":"https://api.github.com/repos/drufball/layered-apis/stargazers","contributors_url":"https://api.github.com/repos/drufball/layered-apis/contributors","subscribers_url":"https://api.github.com/repos/drufball/layered-apis/subscribers","subscription_url":"https://api.github.com/repos/drufball/layered-apis/subscription","commits_url":"https://api.github.com/repos/drufball/layered-apis/commits{/sha}","git_commits_url":"https://api.github.com/repos/drufball/layered-apis/git/commits{/sha}","comments_url":"https://api.github.com/repos/drufball/layered-apis/comments{/number}","issue_comment_url":"https://api.github.com/repos/drufball/layered-apis/issues/comments{/number}","contents_url":"https://api.github.com/repos/drufball/layered-apis/contents/{+path}","compare_url":"https://api.github.com/repos/drufball/layered-apis/compare/{base}...{head}","merges_url":"https://api.github.com/repos/drufball/layered-apis/merges","archive_url":"https://api.github.com/repos/drufball/layered-apis/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/drufball/layered-apis/downloads","issues_url":"https://api.github.com/repos/drufball/layered-apis/issues{/number}","pulls_url":"https://api.github.com/repos/drufball/layered-apis/pulls{/number}","milestones_url":"https://api.github.com/repos/drufball/layered-apis/milestones{/number}","notifications_url":"https://api.github.com/repos/drufball/layered-apis/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/drufball/layered-apis/labels{/name}","releases_url":"https://api.github.com/repos/drufball/layered-apis/releases{/id}","deployments_url":"https://api.github.com/repos/drufball/layered-apis/deployments","created_at":"2018-01-03T22:43:36Z","updated_at":"2018-08-02T23:09:13Z","pushed_at":"2018-08-03T22:31:36Z","git_url":"git://github.com/drufball/layered-apis.git","ssh_url":"git@github.com:drufball/layered-apis.git","clone_url":"https://github.com/drufball/layered-apis.git","svn_url":"https://github.com/drufball/layered-apis","homepage":"","size":46,"stargazers_count":148,"watchers_count":148,"language":null,"has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":6,"mirror_url":null,"archived":false,"open_issues_count":16,"license":null,"forks":6,"open_issues":16,"watchers":148,"default_branch":"master"}},"base":{"label":"drufball:master","ref":"master","sha":"c6603d29e47aabdd0f4b671d75a71dcc59b017b7","user":{"login":"drufball","id":5472050,"node_id":"MDQ6VXNlcjU0NzIwNTA=","avatar_url":"https://avatars0.githubusercontent.com/u/5472050?v=4","gravatar_id":"","url":"https://api.github.com/users/drufball","html_url":"https://github.com/drufball","followers_url":"https://api.github.com/users/drufball/followers","following_url":"https://api.github.com/users/drufball/following{/other_user}","gists_url":"https://api.github.com/users/drufball/gists{/gist_id}","starred_url":"https://api.github.com/users/drufball/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/drufball/subscriptions","organizations_url":"https://api.github.com/users/drufball/orgs","repos_url":"https://api.github.com/users/drufball/repos","events_url":"https://api.github.com/users/drufball/events{/privacy}","received_events_url":"https://api.github.com/users/drufball/received_events","type":"User","site_admin":false},"repo":{"id":116189383,"node_id":"MDEwOlJlcG9zaXRvcnkxMTYxODkzODM=","name":"layered-apis","full_name":"drufball/layered-apis","owner":{"login":"drufball","id":5472050,"node_id":"MDQ6VXNlcjU0NzIwNTA=","avatar_url":"https://avatars0.githubusercontent.com/u/5472050?v=4","gravatar_id":"","url":"https://api.github.com/users/drufball","html_url":"https://github.com/drufball","followers_url":"https://api.github.com/users/drufball/followers","following_url":"https://api.github.com/users/drufball/following{/other_user}","gists_url":"https://api.github.com/users/drufball/gists{/gist_id}","starred_url":"https://api.github.com/users/drufball/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/drufball/subscriptions","organizations_url":"https://api.github.com/users/drufball/orgs","repos_url":"https://api.github.com/users/drufball/repos","events_url":"https://api.github.com/users/drufball/events{/privacy}","received_events_url":"https://api.github.com/users/drufball/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/drufball/layered-apis","description":"A new standards effort for collaborating on high-level features.","fork":false,"url":"https://api.github.com/repos/drufball/layered-apis","forks_url":"https://api.github.com/repos/drufball/layered-apis/forks","keys_url":"https://api.github.com/repos/drufball/layered-apis/keys{/key_id}","collaborators_url":"https://api.github.com/repos/drufball/layered-apis/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/drufball/layered-apis/teams","hooks_url":"https://api.github.com/repos/drufball/layered-apis/hooks","issue_events_url":"https://api.github.com/repos/drufball/layered-apis/issues/events{/number}","events_url":"https://api.github.com/repos/drufball/layered-apis/events","assignees_url":"https://api.github.com/repos/drufball/layered-apis/assignees{/user}","branches_url":"https://api.github.com/repos/drufball/layered-apis/branches{/branch}","tags_url":"https://api.github.com/repos/drufball/layered-apis/tags","blobs_url":"https://api.github.com/repos/drufball/layered-apis/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/drufball/layered-apis/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/drufball/layered-apis/git/refs{/sha}","trees_url":"https://api.github.com/repos/drufball/layered-apis/git/trees{/sha}","statuses_url":"https://api.github.com/repos/drufball/layered-apis/statuses/{sha}","languages_url":"https://api.github.com/repos/drufball/layered-apis/languages","stargazers_url":"https://api.github.com/repos/drufball/layered-apis/stargazers","contributors_url":"https://api.github.com/repos/drufball/layered-apis/contributors","subscribers_url":"https://api.github.com/repos/drufball/layered-apis/subscribers","subscription_url":"https://api.github.com/repos/drufball/layered-apis/subscription","commits_url":"https://api.github.com/repos/drufball/layered-apis/commits{/sha}","git_commits_url":"https://api.github.com/repos/drufball/layered-apis/git/commits{/sha}","comments_url":"https://api.github.com/repos/drufball/layered-apis/comments{/number}","issue_comment_url":"https://api.github.com/repos/drufball/layered-apis/issues/comments{/number}","contents_url":"https://api.github.com/repos/drufball/layered-apis/contents/{+path}","compare_url":"https://api.github.com/repos/drufball/layered-apis/compare/{base}...{head}","merges_url":"https://api.github.com/repos/drufball/layered-apis/merges","archive_url":"https://api.github.com/repos/drufball/layered-apis/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/drufball/layered-apis/downloads","issues_url":"https://api.github.com/repos/drufball/layered-apis/issues{/number}","pulls_url":"https://api.github.com/repos/drufball/layered-apis/pulls{/number}","milestones_url":"https://api.github.com/repos/drufball/layered-apis/milestones{/number}","notifications_url":"https://api.github.com/repos/drufball/layered-apis/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/drufball/layered-apis/labels{/name}","releases_url":"https://api.github.com/repos/drufball/layered-apis/releases{/id}","deployments_url":"https://api.github.com/repos/drufball/layered-apis/deployments","created_at":"2018-01-03T22:43:36Z","updated_at":"2018-08-02T23:09:13Z","pushed_at":"2018-08-03T22:31:36Z","git_url":"git://github.com/drufball/layered-apis.git","ssh_url":"git@github.com:drufball/layered-apis.git","clone_url":"https://github.com/drufball/layered-apis.git","svn_url":"https://github.com/drufball/layered-apis","homepage":"","size":46,"stargazers_count":148,"watchers_count":148,"language":null,"has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":6,"mirror_url":null,"archived":false,"open_issues_count":16,"license":null,"forks":6,"open_issues":16,"watchers":148,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/drufball/layered-apis/pulls/33"},"html":{"href":"https://github.com/drufball/layered-apis/pull/33"},"issue":{"href":"https://api.github.com/repos/drufball/layered-apis/issues/33"},"comments":{"href":"https://api.github.com/repos/drufball/layered-apis/issues/33/comments"},"review_comments":{"href":"https://api.github.com/repos/drufball/layered-apis/pulls/33/comments"},"review_comment":{"href":"https://api.github.com/repos/drufball/layered-apis/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/drufball/layered-apis/pulls/33/commits"},"statuses":{"href":"https://api.github.com/repos/drufball/layered-apis/statuses/bedc20a70c29809ec186bb5022d574691dde5d52"}},"author_association":"COLLABORATOR"}}
{"actor":{"display_login":"ljharb"}}