{"action":"created","issue":{"url":"https://api.github.com/repos/yarray/AviPost.web/issues/3","labels_url":"https://api.github.com/repos/yarray/AviPost.web/issues/3/labels{/name}","comments_url":"https://api.github.com/repos/yarray/AviPost.web/issues/3/comments","events_url":"https://api.github.com/repos/yarray/AviPost.web/issues/3/events","html_url":"https://github.com/yarray/AviPost.web/issues/3","id":99921456,"number":3,"title":"Think about UI engine","user":{"login":"yarray","id":1227829,"avatar_url":"https://avatars.githubusercontent.com/u/1227829?v=3","gravatar_id":"","url":"https://api.github.com/users/yarray","html_url":"https://github.com/yarray","followers_url":"https://api.github.com/users/yarray/followers","following_url":"https://api.github.com/users/yarray/following{/other_user}","gists_url":"https://api.github.com/users/yarray/gists{/gist_id}","starred_url":"https://api.github.com/users/yarray/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yarray/subscriptions","organizations_url":"https://api.github.com/users/yarray/orgs","repos_url":"https://api.github.com/users/yarray/repos","events_url":"https://api.github.com/users/yarray/events{/privacy}","received_events_url":"https://api.github.com/users/yarray/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/yarray/AviPost.web/labels/in%20progress","name":"in progress","color":"ededed"},{"url":"https://api.github.com/repos/yarray/AviPost.web/labels/question","name":"question","color":"cc317c"}],"state":"open","locked":false,"assignee":{"login":"yarray","id":1227829,"avatar_url":"https://avatars.githubusercontent.com/u/1227829?v=3","gravatar_id":"","url":"https://api.github.com/users/yarray","html_url":"https://github.com/yarray","followers_url":"https://api.github.com/users/yarray/followers","following_url":"https://api.github.com/users/yarray/following{/other_user}","gists_url":"https://api.github.com/users/yarray/gists{/gist_id}","starred_url":"https://api.github.com/users/yarray/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yarray/subscriptions","organizations_url":"https://api.github.com/users/yarray/orgs","repos_url":"https://api.github.com/users/yarray/repos","events_url":"https://api.github.com/users/yarray/events{/privacy}","received_events_url":"https://api.github.com/users/yarray/received_events","type":"User","site_admin":false},"milestone":null,"comments":9,"created_at":"2015-08-09T19:27:21Z","updated_at":"2015-08-21T17:57:40Z","closed_at":null,"body":"Think about the \"ideal\" UI engine for us, including:\n\nWhat parts should a UI engine contain?\nWhat are the best ways to do that?\n\nThe conclusion should contain a conceptual model. The solving of this question should learn from other UI frameworks and can explain them with the final model, to justify their suitability for us.\n\nOther UI frameworks/libraries\n\n* React\n* Masonry\n* Bootstrap\n* Webix"},"comment":{"url":"https://api.github.com/repos/yarray/AviPost.web/issues/comments/133512681","html_url":"https://github.com/yarray/AviPost.web/issues/3#issuecomment-133512681","issue_url":"https://api.github.com/repos/yarray/AviPost.web/issues/3","id":133512681,"user":{"login":"yarray","id":1227829,"avatar_url":"https://avatars.githubusercontent.com/u/1227829?v=3","gravatar_id":"","url":"https://api.github.com/users/yarray","html_url":"https://github.com/yarray","followers_url":"https://api.github.com/users/yarray/followers","following_url":"https://api.github.com/users/yarray/following{/other_user}","gists_url":"https://api.github.com/users/yarray/gists{/gist_id}","starred_url":"https://api.github.com/users/yarray/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yarray/subscriptions","organizations_url":"https://api.github.com/users/yarray/orgs","repos_url":"https://api.github.com/users/yarray/repos","events_url":"https://api.github.com/users/yarray/events{/privacy}","received_events_url":"https://api.github.com/users/yarray/received_events","type":"User","site_admin":false},"created_at":"2015-08-21T17:57:40Z","updated_at":"2015-08-21T17:57:40Z","body":"\"Not a component\" in previous comments is not exact, it should be rather expressed as \"interface coupled\" versus \"no coupling\". Example:\r\n\r\nVersion 1:\r\n\r\n``` js\r\nfunction A(b) {\r\n    return doSomething(b.B());\r\n}\r\n```\r\n\r\nVersion 2:\r\n\r\n``` js\r\nfunction A(value) {\r\n    return doSomething(value);\r\n\r\n// binder\r\nA(b.B());\r\n```\r\n\r\nVersion 1 is interface coupled with b, while version 2 is not coupled with anything, all composition logic resides in binder."}}