{"action":"created","issue":{"url":"https://api.github.com/repos/minetest/minetest/issues/6527","repository_url":"https://api.github.com/repos/minetest/minetest","labels_url":"https://api.github.com/repos/minetest/minetest/issues/6527/labels{/name}","comments_url":"https://api.github.com/repos/minetest/minetest/issues/6527/comments","events_url":"https://api.github.com/repos/minetest/minetest/issues/6527/events","html_url":"https://github.com/minetest/minetest/issues/6527","id":265261183,"number":6527,"title":"Formspec replacement","user":{"login":"rubenwardy","id":2122943,"avatar_url":"https://avatars2.githubusercontent.com/u/2122943?v=4","gravatar_id":"","url":"https://api.github.com/users/rubenwardy","html_url":"https://github.com/rubenwardy","followers_url":"https://api.github.com/users/rubenwardy/followers","following_url":"https://api.github.com/users/rubenwardy/following{/other_user}","gists_url":"https://api.github.com/users/rubenwardy/gists{/gist_id}","starred_url":"https://api.github.com/users/rubenwardy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rubenwardy/subscriptions","organizations_url":"https://api.github.com/users/rubenwardy/orgs","repos_url":"https://api.github.com/users/rubenwardy/repos","events_url":"https://api.github.com/users/rubenwardy/events{/privacy}","received_events_url":"https://api.github.com/users/rubenwardy/received_events","type":"User","site_admin":false},"labels":[{"id":73369003,"url":"https://api.github.com/repos/minetest/minetest/labels/@%20Client%20/%20Audiovisuals","name":"@ Client / Audiovisuals","color":"009800","default":false},{"id":523316166,"url":"https://api.github.com/repos/minetest/minetest/labels/@%20Client%20Script%20API","name":"@ Client Script API","color":"009800","default":false},{"id":73368983,"url":"https://api.github.com/repos/minetest/minetest/labels/@%20Script%20API","name":"@ Script API","color":"009800","default":false},{"id":471238548,"url":"https://api.github.com/repos/minetest/minetest/labels/Feature","name":"Feature","color":"f9d0c4","default":false},{"id":161764276,"url":"https://api.github.com/repos/minetest/minetest/labels/High%20priority","name":"High priority","color":"e11d21","default":false},{"id":11426245,"url":"https://api.github.com/repos/minetest/minetest/labels/Non-trivial","name":"Non-trivial","color":"e144d8","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":57,"created_at":"2017-10-13T11:46:10Z","updated_at":"2018-02-06T19:48:39Z","closed_at":null,"author_association":"OWNER","body":"# MuSCo (must have, should have, could have)\r\n\r\n## Actual GUI libraries / logic\r\n\r\n**Must have**\r\n\r\n* Good layouting\r\n  * Consistent co-ordinates and scale.\r\n  * Adapting containers for varying window size (table, linear, stack)\r\n* OOP design in C++ to allow extending, and decouple elements.\r\n\r\n**Should have**\r\n\r\n* Should use an existing solution - avoid reinventing the wheel. It's fine to define our own Lua API for it, however.\r\n* Theming\r\n  * Ability to change borders/backgrounds/etc\r\n  * CSS like syntax?\r\n\r\n## Server API\r\n\r\n**Must have**\r\n\r\n* Sane format\r\n  * OOP style, which is then converted to JSON?\r\n\r\n**Should have**\r\n\r\n* Auto-validation\r\n  * reject invalid submissions\r\n\r\n**Could have**\r\n\r\n* Server-side formspec to new API converter\r\n\r\n## CSM API\r\n\r\n**Could have**\r\n\r\n* Define custom elements, with `draw()`. Draw is only called when required, which may be every draw step.\r\n\r\n\r\n# Other notes\r\n\r\n> @sapier\r\n> As discussion on minetest-dev showed up we first need to define what a possible formspec replacement has to do, a suggestion:\r\n> \r\n>     Completely specified\r\n>     Modifyable (change existing formspecs)\r\n>     Current formspecs have to be convertable to it\r\n>     Errors have to be detectable (no typos, no logical errors)\r\n>     Container support (tabs/ribbons/whatever you wanna add here)\r\n>     Existing format is preferred\r\n>     Support for optional parameters (not interpreted by GUI, but explicitly defined)\r\n>     Pixel based AND relative positioning of elements\r\n>     API versioning \r\n>     How UI elements are drawn\r\n>     How UI is defined\r\n>     How user input is linked to UI definition\r\n\r\n---------------\r\n\r\nSee [sfan5's post for an example API](https://github.com/minetest/minetest/issues/6527#issuecomment-336449202)\r\n\r\nI'm willing to work on this if we can have a consensus on how it should work.\r\n\r\nRelated: #1399, #5810 )"},"comment":{"url":"https://api.github.com/repos/minetest/minetest/issues/comments/363543277","html_url":"https://github.com/minetest/minetest/issues/6527#issuecomment-363543277","issue_url":"https://api.github.com/repos/minetest/minetest/issues/6527","id":363543277,"user":{"login":"rubenwardy","id":2122943,"avatar_url":"https://avatars2.githubusercontent.com/u/2122943?v=4","gravatar_id":"","url":"https://api.github.com/users/rubenwardy","html_url":"https://github.com/rubenwardy","followers_url":"https://api.github.com/users/rubenwardy/followers","following_url":"https://api.github.com/users/rubenwardy/following{/other_user}","gists_url":"https://api.github.com/users/rubenwardy/gists{/gist_id}","starred_url":"https://api.github.com/users/rubenwardy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rubenwardy/subscriptions","organizations_url":"https://api.github.com/users/rubenwardy/orgs","repos_url":"https://api.github.com/users/rubenwardy/repos","events_url":"https://api.github.com/users/rubenwardy/events{/privacy}","received_events_url":"https://api.github.com/users/rubenwardy/received_events","type":"User","site_admin":false},"created_at":"2018-02-06T19:48:39Z","updated_at":"2018-02-06T19:48:39Z","author_association":"OWNER","body":"> Dear ImGui is designed to enable fast iteration and empower programmers to create content creation tools and visualization/ debug tools (as opposed to UI for the average end-user)"}}
{"actor":{"display_login":"rubenwardy"}}