{"action":"created","issue":{"url":"https://api.github.com/repos/cyclejs/cycle-core/issues/196","labels_url":"https://api.github.com/repos/cyclejs/cycle-core/issues/196/labels{/name}","comments_url":"https://api.github.com/repos/cyclejs/cycle-core/issues/196/comments","events_url":"https://api.github.com/repos/cyclejs/cycle-core/issues/196/events","html_url":"https://github.com/cyclejs/cycle-core/issues/196","id":125751567,"number":196,"title":"Generalize Cycle Core for any stream library","user":{"login":"staltz","id":90512,"avatar_url":"https://avatars.githubusercontent.com/u/90512?v=3","gravatar_id":"","url":"https://api.github.com/users/staltz","html_url":"https://github.com/staltz","followers_url":"https://api.github.com/users/staltz/followers","following_url":"https://api.github.com/users/staltz/following{/other_user}","gists_url":"https://api.github.com/users/staltz/gists{/gist_id}","starred_url":"https://api.github.com/users/staltz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/staltz/subscriptions","organizations_url":"https://api.github.com/users/staltz/orgs","repos_url":"https://api.github.com/users/staltz/repos","events_url":"https://api.github.com/users/staltz/events{/privacy}","received_events_url":"https://api.github.com/users/staltz/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/cyclejs/cycle-core/labels/feature","name":"feature","color":"207de5"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":20,"created_at":"2016-01-09T10:34:02Z","updated_at":"2016-01-09T17:36:09Z","closed_at":null,"body":"@TylorS and I started discussing how to migrate to RxJS 5, and/or support *most.js* streams without the need for a fork (Motorcycle.js) which mostly has copy-pasted code from some Cycle.js libraries.\r\n\r\nWe arrived at a proposal: **Drivers are written using whatever stream library, and the conversion from one stream library to another will happen in run()**.\r\n\r\n```js\r\nCycle.run(main, drivers, options)\r\n```\r\nWhere `options`  can have `streamLibrary: 'rx' | 'rxjs' | 'most' | 'baconjs' | 'kefir'`. The option `streamLibrary` determines what stream library the user is using inside `main` for app logic, and this stream library Foo will be used inside `run()` to convert driver sources from whatever stream library to stream library Foo, and convert driver sinks from Foo to the driver's own stream library.\r\n\r\n**Obstacle**: How to convert from driver stream library to `run`'s stream library for advanced sources like `DOM.select().events()`"},"comment":{"url":"https://api.github.com/repos/cyclejs/cycle-core/issues/comments/170263705","html_url":"https://github.com/cyclejs/cycle-core/issues/196#issuecomment-170263705","issue_url":"https://api.github.com/repos/cyclejs/cycle-core/issues/196","id":170263705,"user":{"login":"TylorS","id":6282473,"avatar_url":"https://avatars.githubusercontent.com/u/6282473?v=3","gravatar_id":"","url":"https://api.github.com/users/TylorS","html_url":"https://github.com/TylorS","followers_url":"https://api.github.com/users/TylorS/followers","following_url":"https://api.github.com/users/TylorS/following{/other_user}","gists_url":"https://api.github.com/users/TylorS/gists{/gist_id}","starred_url":"https://api.github.com/users/TylorS/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TylorS/subscriptions","organizations_url":"https://api.github.com/users/TylorS/orgs","repos_url":"https://api.github.com/users/TylorS/repos","events_url":"https://api.github.com/users/TylorS/events{/privacy}","received_events_url":"https://api.github.com/users/TylorS/received_events","type":"User","site_admin":false},"created_at":"2016-01-09T17:36:08Z","updated_at":"2016-01-09T17:36:08Z","body":"@staltz Yes, that's another good reason.\r\n\r\n*Most.js* in theory can be anywhere from ~200x-400x* faster than Rx 4 and still roughly 30x-50x* faster than Rx 5 so even with these conversions there should still be a performance boost where there are expensive operations like diffing and patching the DOM.\r\n\r\n(\\* - https://gist.github.com/TylorS/55573b29df19c064c6b1)"}}