{"action":"created","comment":{"url":"https://api.github.com/repos/nodejs/modules/pulls/comments/167086110","pull_request_review_id":95254985,"id":167086110,"diff_hunk":"@@ -0,0 +1,57 @@\n+# Goals\n+\n+1. Enable use of ESM in Node without requiring a flag\n+2. Have files be unable to collide between module systems\n+3. Define a path to write code that runs in both Node and the Browser without a preprocessing step\n+    1. Define what a preprocessing step is\n+    2. A subset of functionality that is compatible between environments, not requiring either environment implement all features of the other\n+4. Define a path to write libraries that support being used by both\n+    * Node versions supporting ESM\n+    * Node versions that do not support ESM\n+5. Be standards compliant in the nature of our loading of ESM\n+    1. All platform specific APIs exposed to ESM by default will be placed under `import.meta.*`\n+6. Support developer centric workflows for:\n+    1. Intercepting dependencies and replacing them\n+    2. APM integration\n+    3. Multiple distributions of both ESM and CJS in the same package\n+    4. Creation of userland module systems (JSDOM)\n+7. 100% backwards compatibility with existing CJS code bases if left unchanged\n+\n+# Non-Goals\n+\n+1. Use `.js` file extension for both CJS and ESM without a disambiguation mechanism\n+2. Interoperability of Module formats with environments that do not support Module formats that Node seeks to support\n+3. Forwards compatibility support for the transition of existing packages from CJS to ESM\n+    1. loading unknown file formats and `.js` as CJS\n+    2. usage of `require.extensions`\n+    3. usage of `require.cache`\n+    4. usage of `NODE_PATH`, `~/.node_libraries`, `~/.node_modules`, and `$PREFIX/lib/node`\n+4. Direct integration with APMs\n+5. Direct integration with testing libraries\n+6. Direct integration with transpilers\n+7. Direct integration with browser stacks\n+8. Direct integration with package managers\n+\n+# Goals that are not expected for the first iteration\n+\n+1. 100% stable Loader APIs\n+2. Treatment of `.js` file extension as ESM by default\n+3. Support for the following URL schemes: `data:`, `blob:`, and `https:`\n+\n+# Direction\n+\n+* Build upon the existing work in Node that has designs around using `.mjs`\n+* Enable usage of `.js` for ESM through compatible means of out of band data\n+* Build upon the existing Loader hooks to aid usability\n+    * Creation of in memory Module records\n+    * Composition of Loaders\n+    * Find a solution to the live-ness problem\n+    * Discuss issues/benefits around static vs dynamic mutation of loader hooks","path":"GOALS.md","position":49,"original_position":49,"commit_id":"2f3047e040b276e32fde6be24c718c19740a75aa","original_commit_id":"2f3047e040b276e32fde6be24c718c19740a75aa","user":{"login":"weswigham","id":2932786,"avatar_url":"https://avatars3.githubusercontent.com/u/2932786?v=4","gravatar_id":"","url":"https://api.github.com/users/weswigham","html_url":"https://github.com/weswigham","followers_url":"https://api.github.com/users/weswigham/followers","following_url":"https://api.github.com/users/weswigham/following{/other_user}","gists_url":"https://api.github.com/users/weswigham/gists{/gist_id}","starred_url":"https://api.github.com/users/weswigham/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/weswigham/subscriptions","organizations_url":"https://api.github.com/users/weswigham/orgs","repos_url":"https://api.github.com/users/weswigham/repos","events_url":"https://api.github.com/users/weswigham/events{/privacy}","received_events_url":"https://api.github.com/users/weswigham/received_events","type":"User","site_admin":false},"body":"Pedantic: `Discuss` isn't an action word implying a possible resolution (and is rather open-ended). Maybe this should be reworded to something like \"Enable either static or dynamic mutation of loader hooks\".","created_at":"2018-02-08T22:22:26Z","updated_at":"2018-02-08T22:22:26Z","html_url":"https://github.com/nodejs/modules/pull/23#discussion_r167086110","pull_request_url":"https://api.github.com/repos/nodejs/modules/pulls/23","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/nodejs/modules/pulls/comments/167086110"},"html":{"href":"https://github.com/nodejs/modules/pull/23#discussion_r167086110"},"pull_request":{"href":"https://api.github.com/repos/nodejs/modules/pulls/23"}}},"pull_request":{"url":"https://api.github.com/repos/nodejs/modules/pulls/23","id":168053244,"html_url":"https://github.com/nodejs/modules/pull/23","diff_url":"https://github.com/nodejs/modules/pull/23.diff","patch_url":"https://github.com/nodejs/modules/pull/23.patch","issue_url":"https://api.github.com/repos/nodejs/modules/issues/23","number":23,"state":"open","locked":false,"title":"initial GOALS declaration","user":{"login":"bmeck","id":234659,"avatar_url":"https://avatars1.githubusercontent.com/u/234659?v=4","gravatar_id":"","url":"https://api.github.com/users/bmeck","html_url":"https://github.com/bmeck","followers_url":"https://api.github.com/users/bmeck/followers","following_url":"https://api.github.com/users/bmeck/following{/other_user}","gists_url":"https://api.github.com/users/bmeck/gists{/gist_id}","starred_url":"https://api.github.com/users/bmeck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bmeck/subscriptions","organizations_url":"https://api.github.com/users/bmeck/orgs","repos_url":"https://api.github.com/users/bmeck/repos","events_url":"https://api.github.com/users/bmeck/events{/privacy}","received_events_url":"https://api.github.com/users/bmeck/received_events","type":"User","site_admin":false},"body":"","created_at":"2018-02-08T18:36:03Z","updated_at":"2018-02-08T22:22:26Z","closed_at":null,"merged_at":null,"merge_commit_sha":"f798df35b6d856cdfd8c6972fe71181b55df70ec","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"milestone":null,"commits_url":"https://api.github.com/repos/nodejs/modules/pulls/23/commits","review_comments_url":"https://api.github.com/repos/nodejs/modules/pulls/23/comments","review_comment_url":"https://api.github.com/repos/nodejs/modules/pulls/comments{/number}","comments_url":"https://api.github.com/repos/nodejs/modules/issues/23/comments","statuses_url":"https://api.github.com/repos/nodejs/modules/statuses/2f3047e040b276e32fde6be24c718c19740a75aa","head":{"label":"bmeck:goals","ref":"goals","sha":"2f3047e040b276e32fde6be24c718c19740a75aa","user":{"login":"bmeck","id":234659,"avatar_url":"https://avatars1.githubusercontent.com/u/234659?v=4","gravatar_id":"","url":"https://api.github.com/users/bmeck","html_url":"https://github.com/bmeck","followers_url":"https://api.github.com/users/bmeck/followers","following_url":"https://api.github.com/users/bmeck/following{/other_user}","gists_url":"https://api.github.com/users/bmeck/gists{/gist_id}","starred_url":"https://api.github.com/users/bmeck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bmeck/subscriptions","organizations_url":"https://api.github.com/users/bmeck/orgs","repos_url":"https://api.github.com/users/bmeck/repos","events_url":"https://api.github.com/users/bmeck/events{/privacy}","received_events_url":"https://api.github.com/users/bmeck/received_events","type":"User","site_admin":false},"repo":{"id":120800101,"name":"modules","full_name":"bmeck/modules","owner":{"login":"bmeck","id":234659,"avatar_url":"https://avatars1.githubusercontent.com/u/234659?v=4","gravatar_id":"","url":"https://api.github.com/users/bmeck","html_url":"https://github.com/bmeck","followers_url":"https://api.github.com/users/bmeck/followers","following_url":"https://api.github.com/users/bmeck/following{/other_user}","gists_url":"https://api.github.com/users/bmeck/gists{/gist_id}","starred_url":"https://api.github.com/users/bmeck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bmeck/subscriptions","organizations_url":"https://api.github.com/users/bmeck/orgs","repos_url":"https://api.github.com/users/bmeck/repos","events_url":"https://api.github.com/users/bmeck/events{/privacy}","received_events_url":"https://api.github.com/users/bmeck/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/bmeck/modules","description":"Node.js Foundation Modules Team","fork":true,"url":"https://api.github.com/repos/bmeck/modules","forks_url":"https://api.github.com/repos/bmeck/modules/forks","keys_url":"https://api.github.com/repos/bmeck/modules/keys{/key_id}","collaborators_url":"https://api.github.com/repos/bmeck/modules/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/bmeck/modules/teams","hooks_url":"https://api.github.com/repos/bmeck/modules/hooks","issue_events_url":"https://api.github.com/repos/bmeck/modules/issues/events{/number}","events_url":"https://api.github.com/repos/bmeck/modules/events","assignees_url":"https://api.github.com/repos/bmeck/modules/assignees{/user}","branches_url":"https://api.github.com/repos/bmeck/modules/branches{/branch}","tags_url":"https://api.github.com/repos/bmeck/modules/tags","blobs_url":"https://api.github.com/repos/bmeck/modules/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/bmeck/modules/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/bmeck/modules/git/refs{/sha}","trees_url":"https://api.github.com/repos/bmeck/modules/git/trees{/sha}","statuses_url":"https://api.github.com/repos/bmeck/modules/statuses/{sha}","languages_url":"https://api.github.com/repos/bmeck/modules/languages","stargazers_url":"https://api.github.com/repos/bmeck/modules/stargazers","contributors_url":"https://api.github.com/repos/bmeck/modules/contributors","subscribers_url":"https://api.github.com/repos/bmeck/modules/subscribers","subscription_url":"https://api.github.com/repos/bmeck/modules/subscription","commits_url":"https://api.github.com/repos/bmeck/modules/commits{/sha}","git_commits_url":"https://api.github.com/repos/bmeck/modules/git/commits{/sha}","comments_url":"https://api.github.com/repos/bmeck/modules/comments{/number}","issue_comment_url":"https://api.github.com/repos/bmeck/modules/issues/comments{/number}","contents_url":"https://api.github.com/repos/bmeck/modules/contents/{+path}","compare_url":"https://api.github.com/repos/bmeck/modules/compare/{base}...{head}","merges_url":"https://api.github.com/repos/bmeck/modules/merges","archive_url":"https://api.github.com/repos/bmeck/modules/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/bmeck/modules/downloads","issues_url":"https://api.github.com/repos/bmeck/modules/issues{/number}","pulls_url":"https://api.github.com/repos/bmeck/modules/pulls{/number}","milestones_url":"https://api.github.com/repos/bmeck/modules/milestones{/number}","notifications_url":"https://api.github.com/repos/bmeck/modules/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/bmeck/modules/labels{/name}","releases_url":"https://api.github.com/repos/bmeck/modules/releases{/id}","deployments_url":"https://api.github.com/repos/bmeck/modules/deployments","created_at":"2018-02-08T18:23:23Z","updated_at":"2018-02-08T15:55:07Z","pushed_at":"2018-02-08T21:30:16Z","git_url":"git://github.com/bmeck/modules.git","ssh_url":"git@github.com:bmeck/modules.git","clone_url":"https://github.com/bmeck/modules.git","svn_url":"https://github.com/bmeck/modules","homepage":null,"size":16,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"nodejs:master","ref":"master","sha":"3620ac3c740065dd619570da037af9e4f7d52f59","user":{"login":"nodejs","id":9950313,"avatar_url":"https://avatars3.githubusercontent.com/u/9950313?v=4","gravatar_id":"","url":"https://api.github.com/users/nodejs","html_url":"https://github.com/nodejs","followers_url":"https://api.github.com/users/nodejs/followers","following_url":"https://api.github.com/users/nodejs/following{/other_user}","gists_url":"https://api.github.com/users/nodejs/gists{/gist_id}","starred_url":"https://api.github.com/users/nodejs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nodejs/subscriptions","organizations_url":"https://api.github.com/users/nodejs/orgs","repos_url":"https://api.github.com/users/nodejs/repos","events_url":"https://api.github.com/users/nodejs/events{/privacy}","received_events_url":"https://api.github.com/users/nodejs/received_events","type":"Organization","site_admin":false},"repo":{"id":119901830,"name":"modules","full_name":"nodejs/modules","owner":{"login":"nodejs","id":9950313,"avatar_url":"https://avatars3.githubusercontent.com/u/9950313?v=4","gravatar_id":"","url":"https://api.github.com/users/nodejs","html_url":"https://github.com/nodejs","followers_url":"https://api.github.com/users/nodejs/followers","following_url":"https://api.github.com/users/nodejs/following{/other_user}","gists_url":"https://api.github.com/users/nodejs/gists{/gist_id}","starred_url":"https://api.github.com/users/nodejs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nodejs/subscriptions","organizations_url":"https://api.github.com/users/nodejs/orgs","repos_url":"https://api.github.com/users/nodejs/repos","events_url":"https://api.github.com/users/nodejs/events{/privacy}","received_events_url":"https://api.github.com/users/nodejs/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/nodejs/modules","description":"Node.js Foundation Modules Team","fork":false,"url":"https://api.github.com/repos/nodejs/modules","forks_url":"https://api.github.com/repos/nodejs/modules/forks","keys_url":"https://api.github.com/repos/nodejs/modules/keys{/key_id}","collaborators_url":"https://api.github.com/repos/nodejs/modules/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/nodejs/modules/teams","hooks_url":"https://api.github.com/repos/nodejs/modules/hooks","issue_events_url":"https://api.github.com/repos/nodejs/modules/issues/events{/number}","events_url":"https://api.github.com/repos/nodejs/modules/events","assignees_url":"https://api.github.com/repos/nodejs/modules/assignees{/user}","branches_url":"https://api.github.com/repos/nodejs/modules/branches{/branch}","tags_url":"https://api.github.com/repos/nodejs/modules/tags","blobs_url":"https://api.github.com/repos/nodejs/modules/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/nodejs/modules/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/nodejs/modules/git/refs{/sha}","trees_url":"https://api.github.com/repos/nodejs/modules/git/trees{/sha}","statuses_url":"https://api.github.com/repos/nodejs/modules/statuses/{sha}","languages_url":"https://api.github.com/repos/nodejs/modules/languages","stargazers_url":"https://api.github.com/repos/nodejs/modules/stargazers","contributors_url":"https://api.github.com/repos/nodejs/modules/contributors","subscribers_url":"https://api.github.com/repos/nodejs/modules/subscribers","subscription_url":"https://api.github.com/repos/nodejs/modules/subscription","commits_url":"https://api.github.com/repos/nodejs/modules/commits{/sha}","git_commits_url":"https://api.github.com/repos/nodejs/modules/git/commits{/sha}","comments_url":"https://api.github.com/repos/nodejs/modules/comments{/number}","issue_comment_url":"https://api.github.com/repos/nodejs/modules/issues/comments{/number}","contents_url":"https://api.github.com/repos/nodejs/modules/contents/{+path}","compare_url":"https://api.github.com/repos/nodejs/modules/compare/{base}...{head}","merges_url":"https://api.github.com/repos/nodejs/modules/merges","archive_url":"https://api.github.com/repos/nodejs/modules/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/nodejs/modules/downloads","issues_url":"https://api.github.com/repos/nodejs/modules/issues{/number}","pulls_url":"https://api.github.com/repos/nodejs/modules/pulls{/number}","milestones_url":"https://api.github.com/repos/nodejs/modules/milestones{/number}","notifications_url":"https://api.github.com/repos/nodejs/modules/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/nodejs/modules/labels{/name}","releases_url":"https://api.github.com/repos/nodejs/modules/releases{/id}","deployments_url":"https://api.github.com/repos/nodejs/modules/deployments","created_at":"2018-02-01T22:33:47Z","updated_at":"2018-02-08T22:22:03Z","pushed_at":"2018-02-08T21:30:18Z","git_url":"git://github.com/nodejs/modules.git","ssh_url":"git@github.com:nodejs/modules.git","clone_url":"https://github.com/nodejs/modules.git","svn_url":"https://github.com/nodejs/modules","homepage":null,"size":11,"stargazers_count":34,"watchers_count":34,"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":14,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit"},"forks":6,"open_issues":14,"watchers":34,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/nodejs/modules/pulls/23"},"html":{"href":"https://github.com/nodejs/modules/pull/23"},"issue":{"href":"https://api.github.com/repos/nodejs/modules/issues/23"},"comments":{"href":"https://api.github.com/repos/nodejs/modules/issues/23/comments"},"review_comments":{"href":"https://api.github.com/repos/nodejs/modules/pulls/23/comments"},"review_comment":{"href":"https://api.github.com/repos/nodejs/modules/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/nodejs/modules/pulls/23/commits"},"statuses":{"href":"https://api.github.com/repos/nodejs/modules/statuses/2f3047e040b276e32fde6be24c718c19740a75aa"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"weswigham"}}