{"action":"created","issue":{"url":"https://api.github.com/repos/envoyproxy/envoy/issues/5126","repository_url":"https://api.github.com/repos/envoyproxy/envoy","labels_url":"https://api.github.com/repos/envoyproxy/envoy/issues/5126/labels{/name}","comments_url":"https://api.github.com/repos/envoyproxy/envoy/issues/5126/comments","events_url":"https://api.github.com/repos/envoyproxy/envoy/issues/5126/events","html_url":"https://github.com/envoyproxy/envoy/issues/5126","id":384554063,"node_id":"MDU6SXNzdWUzODQ1NTQwNjM=","number":5126,"title":"Separate out Envoy platform API from extension API","user":{"login":"htuch","id":10914751,"node_id":"MDQ6VXNlcjEwOTE0NzUx","avatar_url":"https://avatars1.githubusercontent.com/u/10914751?v=4","gravatar_id":"","url":"https://api.github.com/users/htuch","html_url":"https://github.com/htuch","followers_url":"https://api.github.com/users/htuch/followers","following_url":"https://api.github.com/users/htuch/following{/other_user}","gists_url":"https://api.github.com/users/htuch/gists{/gist_id}","starred_url":"https://api.github.com/users/htuch/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/htuch/subscriptions","organizations_url":"https://api.github.com/users/htuch/orgs","repos_url":"https://api.github.com/users/htuch/repos","events_url":"https://api.github.com/users/htuch/events{/privacy}","received_events_url":"https://api.github.com/users/htuch/received_events","type":"User","site_admin":false},"labels":[{"id":620444894,"node_id":"MDU6TGFiZWw2MjA0NDQ4OTQ=","url":"https://api.github.com/repos/envoyproxy/envoy/labels/design%20proposal","name":"design proposal","color":"c5def5","default":false},{"id":645516726,"node_id":"MDU6TGFiZWw2NDU1MTY3MjY=","url":"https://api.github.com/repos/envoyproxy/envoy/labels/help%20wanted","name":"help wanted","color":"fbca04","default":true}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2018-11-26T23:26:06Z","updated_at":"2018-11-27T13:20:50Z","closed_at":null,"author_association":"MEMBER","body":"We currently have a bit of conflation in `api/` between those APIs that are provided a platform abstraction layer (mostly for the benefit of core Envoy, but also extensions) and the APIs that will one day act as a stable interface for extensions. For example:\r\n\r\nhttps://github.com/envoyproxy/envoy/blob/2c0733ad3ffaf3e1630e3a77e822c5d76ad08f0b/include/envoy/api/api.h#L28\r\n\r\nis clearly in the second category, and \r\n\r\nhttps://github.com/envoyproxy/envoy/blob/2c0733ad3ffaf3e1630e3a77e822c5d76ad08f0b/include/envoy/api/api.h#L54\r\n\r\nis in the first. This becomes even stranger when we have the `ApiImpl` require access to a stats object in \r\n\r\nhttps://github.com/envoyproxy/envoy/blob/2c0733ad3ffaf3e1630e3a77e822c5d76ad08f0b/source/common/api/api_impl.h#L22\r\n\r\nThis is because the filesystem code is both a platform abstraction API and also providing higher level functionality like stats tracking.\r\n\r\nIdeally, we split out the API into a `api/platform` and `api/export`, where we clearly delineate these two concerns. New platform ports of Envoy populate the interfaces in `api/platform`, extensions take dependencies on `api/export`.\r\n\r\nCC @jmarantz @eziskind @mattklein123 "},"comment":{"url":"https://api.github.com/repos/envoyproxy/envoy/issues/comments/442055621","html_url":"https://github.com/envoyproxy/envoy/issues/5126#issuecomment-442055621","issue_url":"https://api.github.com/repos/envoyproxy/envoy/issues/5126","id":442055621,"node_id":"MDEyOklzc3VlQ29tbWVudDQ0MjA1NTYyMQ==","user":{"login":"jmarantz","id":1942589,"node_id":"MDQ6VXNlcjE5NDI1ODk=","avatar_url":"https://avatars3.githubusercontent.com/u/1942589?v=4","gravatar_id":"","url":"https://api.github.com/users/jmarantz","html_url":"https://github.com/jmarantz","followers_url":"https://api.github.com/users/jmarantz/followers","following_url":"https://api.github.com/users/jmarantz/following{/other_user}","gists_url":"https://api.github.com/users/jmarantz/gists{/gist_id}","starred_url":"https://api.github.com/users/jmarantz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jmarantz/subscriptions","organizations_url":"https://api.github.com/users/jmarantz/orgs","repos_url":"https://api.github.com/users/jmarantz/repos","events_url":"https://api.github.com/users/jmarantz/events{/privacy}","received_events_url":"https://api.github.com/users/jmarantz/received_events","type":"User","site_admin":false},"created_at":"2018-11-27T13:20:50Z","updated_at":"2018-11-27T13:20:50Z","author_association":"CONTRIBUTOR","body":"Also I would propose we move TimeSystem/TimeSource into API. Many places where TImeSystem& or TimeSource& is plumbed through, API& is well, and it would seem better to use API as a conduit."}}
{"actor":{"display_login":"jmarantz"}}