{"action":"created","issue":{"url":"https://api.github.com/repos/WebPlatformForEmbedded/WPEBackend/issues/15","repository_url":"https://api.github.com/repos/WebPlatformForEmbedded/WPEBackend","labels_url":"https://api.github.com/repos/WebPlatformForEmbedded/WPEBackend/issues/15/labels{/name}","comments_url":"https://api.github.com/repos/WebPlatformForEmbedded/WPEBackend/issues/15/comments","events_url":"https://api.github.com/repos/WebPlatformForEmbedded/WPEBackend/issues/15/events","html_url":"https://github.com/WebPlatformForEmbedded/WPEBackend/issues/15","id":313796899,"node_id":"MDU6SXNzdWUzMTM3OTY4OTk=","number":15,"title":"Make all public structs opaque","user":{"login":"mcatanzaro","id":1424966,"node_id":"MDQ6VXNlcjE0MjQ5NjY=","avatar_url":"https://avatars3.githubusercontent.com/u/1424966?v=4","gravatar_id":"","url":"https://api.github.com/users/mcatanzaro","html_url":"https://github.com/mcatanzaro","followers_url":"https://api.github.com/users/mcatanzaro/followers","following_url":"https://api.github.com/users/mcatanzaro/following{/other_user}","gists_url":"https://api.github.com/users/mcatanzaro/gists{/gist_id}","starred_url":"https://api.github.com/users/mcatanzaro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mcatanzaro/subscriptions","organizations_url":"https://api.github.com/users/mcatanzaro/orgs","repos_url":"https://api.github.com/users/mcatanzaro/repos","events_url":"https://api.github.com/users/mcatanzaro/events{/privacy}","received_events_url":"https://api.github.com/users/mcatanzaro/received_events","type":"User","site_admin":false},"labels":[{"id":271626215,"node_id":"MDU6TGFiZWwyNzE2MjYyMTU=","url":"https://api.github.com/repos/WebPlatformForEmbedded/WPEBackend/labels/enhancement","name":"enhancement","color":"84b6eb","default":true}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2018-04-12T16:17:11Z","updated_at":"2018-08-07T13:53:37Z","closed_at":"2018-08-07T13:47:21Z","author_association":"CONTRIBUTOR","body":"We should make structs in the public API opaque in order to make it possible to add new members without breaking the ABI. E.g.:\r\n\r\n```\r\nstruct wpe_input_keyboard_event {\r\n    uint32_t time;\r\n    uint32_t keyCode;\r\n    uint32_t unicode;\r\n    bool pressed;\r\n    uint8_t modifiers;\r\n};\r\n```\r\n\r\nInstead of exposing the contents of the struct, we would expose getter and setter functions: `wpe_input_keyboard_event_get_time()`, `wpe_input_keyboard_event_set_time()`, etc.\r\n\r\nSince this is a bigger change, I don't think it has to block the first release, but we should do it before a 1.0 release IMO."},"comment":{"url":"https://api.github.com/repos/WebPlatformForEmbedded/WPEBackend/issues/comments/411064056","html_url":"https://github.com/WebPlatformForEmbedded/WPEBackend/issues/15#issuecomment-411064056","issue_url":"https://api.github.com/repos/WebPlatformForEmbedded/WPEBackend/issues/15","id":411064056,"node_id":"MDEyOklzc3VlQ29tbWVudDQxMTA2NDA1Ng==","user":{"login":"carlosgcampos","id":5434964,"node_id":"MDQ6VXNlcjU0MzQ5NjQ=","avatar_url":"https://avatars2.githubusercontent.com/u/5434964?v=4","gravatar_id":"","url":"https://api.github.com/users/carlosgcampos","html_url":"https://github.com/carlosgcampos","followers_url":"https://api.github.com/users/carlosgcampos/followers","following_url":"https://api.github.com/users/carlosgcampos/following{/other_user}","gists_url":"https://api.github.com/users/carlosgcampos/gists{/gist_id}","starred_url":"https://api.github.com/users/carlosgcampos/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/carlosgcampos/subscriptions","organizations_url":"https://api.github.com/users/carlosgcampos/orgs","repos_url":"https://api.github.com/users/carlosgcampos/repos","events_url":"https://api.github.com/users/carlosgcampos/events{/privacy}","received_events_url":"https://api.github.com/users/carlosgcampos/received_events","type":"User","site_admin":false},"created_at":"2018-08-07T13:53:37Z","updated_at":"2018-08-07T13:53:37Z","author_association":"CONTRIBUTOR","body":"That's actually @zdobersek reasoning, not mine. I still think structs should be opaque to ensure we can modify them in the future without breaking the API/ABI. I'm not opposed to close this anyway, hopefully we won't need to add more fields to events."}}
{"actor":{"display_login":"carlosgcampos"}}