{"action":"created","issue":{"url":"https://api.github.com/repos/emberjs/rfcs/issues/416","repository_url":"https://api.github.com/repos/emberjs/rfcs","labels_url":"https://api.github.com/repos/emberjs/rfcs/issues/416/labels{/name}","comments_url":"https://api.github.com/repos/emberjs/rfcs/issues/416/comments","events_url":"https://api.github.com/repos/emberjs/rfcs/issues/416/events","html_url":"https://github.com/emberjs/rfcs/pull/416","id":390936859,"node_id":"MDExOlB1bGxSZXF1ZXN0MjM4NTkwMjAw","number":416,"title":"Glimmer Components","user":{"login":"pzuraq","id":685518,"node_id":"MDQ6VXNlcjY4NTUxOA==","avatar_url":"https://avatars3.githubusercontent.com/u/685518?v=4","gravatar_id":"","url":"https://api.github.com/users/pzuraq","html_url":"https://github.com/pzuraq","followers_url":"https://api.github.com/users/pzuraq/followers","following_url":"https://api.github.com/users/pzuraq/following{/other_user}","gists_url":"https://api.github.com/users/pzuraq/gists{/gist_id}","starred_url":"https://api.github.com/users/pzuraq/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pzuraq/subscriptions","organizations_url":"https://api.github.com/users/pzuraq/orgs","repos_url":"https://api.github.com/users/pzuraq/repos","events_url":"https://api.github.com/users/pzuraq/events{/privacy}","received_events_url":"https://api.github.com/users/pzuraq/received_events","type":"User","site_admin":false},"labels":[{"id":1142658936,"node_id":"MDU6TGFiZWwxMTQyNjU4OTM2","url":"https://api.github.com/repos/emberjs/rfcs/labels/Octane","name":"Octane","color":"5F4B8B","default":false},{"id":659160406,"node_id":"MDU6TGFiZWw2NTkxNjA0MDY=","url":"https://api.github.com/repos/emberjs/rfcs/labels/T-framework","name":"T-framework","color":"0e8a16","default":false}],"state":"open","locked":false,"assignee":{"login":"rwjblue","id":12637,"node_id":"MDQ6VXNlcjEyNjM3","avatar_url":"https://avatars0.githubusercontent.com/u/12637?v=4","gravatar_id":"","url":"https://api.github.com/users/rwjblue","html_url":"https://github.com/rwjblue","followers_url":"https://api.github.com/users/rwjblue/followers","following_url":"https://api.github.com/users/rwjblue/following{/other_user}","gists_url":"https://api.github.com/users/rwjblue/gists{/gist_id}","starred_url":"https://api.github.com/users/rwjblue/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rwjblue/subscriptions","organizations_url":"https://api.github.com/users/rwjblue/orgs","repos_url":"https://api.github.com/users/rwjblue/repos","events_url":"https://api.github.com/users/rwjblue/events{/privacy}","received_events_url":"https://api.github.com/users/rwjblue/received_events","type":"User","site_admin":false},"assignees":[{"login":"rwjblue","id":12637,"node_id":"MDQ6VXNlcjEyNjM3","avatar_url":"https://avatars0.githubusercontent.com/u/12637?v=4","gravatar_id":"","url":"https://api.github.com/users/rwjblue","html_url":"https://github.com/rwjblue","followers_url":"https://api.github.com/users/rwjblue/followers","following_url":"https://api.github.com/users/rwjblue/following{/other_user}","gists_url":"https://api.github.com/users/rwjblue/gists{/gist_id}","starred_url":"https://api.github.com/users/rwjblue/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rwjblue/subscriptions","organizations_url":"https://api.github.com/users/rwjblue/orgs","repos_url":"https://api.github.com/users/rwjblue/repos","events_url":"https://api.github.com/users/rwjblue/events{/privacy}","received_events_url":"https://api.github.com/users/rwjblue/received_events","type":"User","site_admin":false},{"login":"tomdale","id":90888,"node_id":"MDQ6VXNlcjkwODg4","avatar_url":"https://avatars2.githubusercontent.com/u/90888?v=4","gravatar_id":"","url":"https://api.github.com/users/tomdale","html_url":"https://github.com/tomdale","followers_url":"https://api.github.com/users/tomdale/followers","following_url":"https://api.github.com/users/tomdale/following{/other_user}","gists_url":"https://api.github.com/users/tomdale/gists{/gist_id}","starred_url":"https://api.github.com/users/tomdale/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tomdale/subscriptions","organizations_url":"https://api.github.com/users/tomdale/orgs","repos_url":"https://api.github.com/users/tomdale/repos","events_url":"https://api.github.com/users/tomdale/events{/privacy}","received_events_url":"https://api.github.com/users/tomdale/received_events","type":"User","site_admin":false}],"milestone":null,"comments":8,"created_at":"2018-12-14T02:10:06Z","updated_at":"2018-12-23T00:58:56Z","closed_at":null,"author_association":"CONTRIBUTOR","pull_request":{"url":"https://api.github.com/repos/emberjs/rfcs/pulls/416","html_url":"https://github.com/emberjs/rfcs/pull/416","diff_url":"https://github.com/emberjs/rfcs/pull/416.diff","patch_url":"https://github.com/emberjs/rfcs/pull/416.patch"},"body":"[rendered](https://github.com/pzuraq/emberjs-rfcs/blob/glimmer-components/text/0000-glimmer-components.md)\r\n\r\nHuge thanks to @tomdale, @rwjblue, @krisselden, @mike-north, @stefanpenner, @chadhietala, @MelSumner, and everyone else who helped with feedback and design in this RFC! This has been a long time coming, and represents a massive community effort that I have been very glad to be a part of!"},"comment":{"url":"https://api.github.com/repos/emberjs/rfcs/issues/comments/449607052","html_url":"https://github.com/emberjs/rfcs/pull/416#issuecomment-449607052","issue_url":"https://api.github.com/repos/emberjs/rfcs/issues/416","id":449607052,"node_id":"MDEyOklzc3VlQ29tbWVudDQ0OTYwNzA1Mg==","user":{"login":"pzuraq","id":685518,"node_id":"MDQ6VXNlcjY4NTUxOA==","avatar_url":"https://avatars3.githubusercontent.com/u/685518?v=4","gravatar_id":"","url":"https://api.github.com/users/pzuraq","html_url":"https://github.com/pzuraq","followers_url":"https://api.github.com/users/pzuraq/followers","following_url":"https://api.github.com/users/pzuraq/following{/other_user}","gists_url":"https://api.github.com/users/pzuraq/gists{/gist_id}","starred_url":"https://api.github.com/users/pzuraq/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pzuraq/subscriptions","organizations_url":"https://api.github.com/users/pzuraq/orgs","repos_url":"https://api.github.com/users/pzuraq/repos","events_url":"https://api.github.com/users/pzuraq/events{/privacy}","received_events_url":"https://api.github.com/users/pzuraq/received_events","type":"User","site_admin":false},"created_at":"2018-12-23T00:58:56Z","updated_at":"2018-12-23T00:58:56Z","author_association":"CONTRIBUTOR","body":"> Can't ES6 classes, .args, and outer HTML be implemented independently from each other?\r\n\r\nYes, the absolutely can. What I was referring to here was the set of features that are tied together by Outer HTML, so:\r\n\r\n* `tagName`\r\n* `classNames`\r\n* `classNameBindings`\r\n* `attributeBindings`\r\n* Event hooks such as `click`, `focus`, `hover`, etc.\r\n* Default bound properties such as `isVisible`, `ariaRole`, etc.\r\n* The `element` property, and any usages of it\r\n\r\nThere may be some more I'm forgetting at the moment, but the point is that as soon as you toggle that switch, you have to rewrite _all_ of the above to the new world. That's a fairly big switch, and really points to two separate class APIs.\r\n\r\n> Why would all of the event hooks need to be disabled in order to use outer HTML?\r\n\r\nI was specifically referring to the `click`, `focus`, `hover` etc. style event hooks here, not the lifecycle hooks like `didInsertElement` and `didRender`. These _would_ be able to continue functioning, but would likely need to be rewritten since you can't use `element` anymore.\r\n\r\n> What is the performance impact? \r\n\r\nIt's hard to say without actual benchmarking, and it's hard to benchmark without rewriting a real world application 😄 We do have a minimal component API in the form of `sparkles-component` now so we can start to do this to get a real world estimation.\r\n\r\nHowever, the fact is that we _are_ doing much more work than is necessary right now, between the usage of `EmberObject` and the many, many lifecycle and event hooks of classic components. Components are one of the most commonly instantiated objects in an Ember app, so even the smallest wins here should move the needle.\r\n\r\n> And isn't a major version release a better place to focus on removing APIs?\r\n\r\nAbsolutely! This is _not_ a deprecation RFC, and classic components _will_ remain part of the Ember API for the forseeable future. They still have functionality which is not available in Glimmer components (such as positional parameters), and they are very widespread in usage so it will take a long time to transition away from them. \r\n\r\nThis was part of the reason for creating component managers in the first place, and the painstaking design that was done to ensure that all forms of component defined using them would interoperate at all levels - to ensure that transitions could be done incrementally, without removing or deprecating component APIs that are still in common use."}}
{"actor":{"display_login":"pzuraq"}}