{"action":"created","issue":{"url":"https://api.github.com/repos/plone/Products.CMFPlone/issues/1485","repository_url":"https://api.github.com/repos/plone/Products.CMFPlone","labels_url":"https://api.github.com/repos/plone/Products.CMFPlone/issues/1485/labels{/name}","comments_url":"https://api.github.com/repos/plone/Products.CMFPlone/issues/1485/comments","events_url":"https://api.github.com/repos/plone/Products.CMFPlone/issues/1485/events","html_url":"https://github.com/plone/Products.CMFPlone/issues/1485","id":143247692,"number":1485,"title":"PLIP: Approve use of React in core, deprecate backbone","user":{"login":"vangheem","id":524413,"avatar_url":"https://avatars.githubusercontent.com/u/524413?v=3","gravatar_id":"","url":"https://api.github.com/users/vangheem","html_url":"https://github.com/vangheem","followers_url":"https://api.github.com/users/vangheem/followers","following_url":"https://api.github.com/users/vangheem/following{/other_user}","gists_url":"https://api.github.com/users/vangheem/gists{/gist_id}","starred_url":"https://api.github.com/users/vangheem/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vangheem/subscriptions","organizations_url":"https://api.github.com/users/vangheem/orgs","repos_url":"https://api.github.com/users/vangheem/repos","events_url":"https://api.github.com/users/vangheem/events{/privacy}","received_events_url":"https://api.github.com/users/vangheem/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/plone/Products.CMFPlone/labels/03%20type:%20feature%20(plip)","name":"03 type: feature (plip)","color":"0000fa"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":7,"created_at":"2016-03-24T13:37:40Z","updated_at":"2016-03-24T15:30:29Z","closed_at":null,"body":"### Proposer : vangheem\r\n\r\n### Seconder : ?\r\n\r\n## Abstract\r\n\r\nI propose we allow using React in core and deprecate the use of Backbone JS.\r\n\r\nBackbone is used currently to manage complex patterns; however, it has not done a great job and we have jQuery mixed in all over the place.\r\n\r\nBeing able to use React will provide a much better developer experience and make it easier to manage complex patterns like the structure.\r\n\r\n## Motivation\r\n\r\nCurrently in core JS, some of our patterns are overly complex. Where we have complex patterns, we have used backbone JS. Backbone was never explicitly authorized for use in core but it was used and has been used because it is already there.\r\n\r\n\r\n## Assumptions\r\n\r\n\r\n\r\n## Proposal & Implementation\r\n\r\n - upgrade mockup react to latest\r\n - the only pattern I propose to migrate to using react right now is resource registries. It can stand as an example of how to do it.\r\n\r\n## Deliverables\r\n\r\n- a PR with the upgraded react and migrated resource registries pattern\r\n\r\n## Risks\r\n\r\n - should we use react-lite?\r\n - does it add yet another complex thing in our JS story?\r\n - who wants to fight about which framework to use?\r\n"},"comment":{"url":"https://api.github.com/repos/plone/Products.CMFPlone/issues/comments/200887290","html_url":"https://github.com/plone/Products.CMFPlone/issues/1485#issuecomment-200887290","issue_url":"https://api.github.com/repos/plone/Products.CMFPlone/issues/1485","id":200887290,"user":{"login":"tisto","id":632105,"avatar_url":"https://avatars.githubusercontent.com/u/632105?v=3","gravatar_id":"","url":"https://api.github.com/users/tisto","html_url":"https://github.com/tisto","followers_url":"https://api.github.com/users/tisto/followers","following_url":"https://api.github.com/users/tisto/following{/other_user}","gists_url":"https://api.github.com/users/tisto/gists{/gist_id}","starred_url":"https://api.github.com/users/tisto/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tisto/subscriptions","organizations_url":"https://api.github.com/users/tisto/orgs","repos_url":"https://api.github.com/users/tisto/repos","events_url":"https://api.github.com/users/tisto/events{/privacy}","received_events_url":"https://api.github.com/users/tisto/received_events","type":"User","site_admin":false},"created_at":"2016-03-24T15:30:29Z","updated_at":"2016-03-24T15:30:29Z","body":"I pretty much agree with everything @ebrehault wrote. I think moving from Backbone to React would be a huge win in general. Though, I think we have to take into consideration that:\r\n\r\na) choosing React also means buying into a larger ecosystem of tools (if we use React we might want to use JSX, Webpack, Redux, React Hot Loader, etc.). We can of course limit its usage to the resource registry and decide we are not using anything else from the React toolchain, but I'm not sure that would really work out.\r\n\r\nb) we should try to make sure our decision aligns with our long term goals (choosing React now and then moving to another framework at a later point would be pretty confusing and potentially waste a lot of energy)."}}