{"action":"created","issue":{"url":"https://api.github.com/repos/cyclejs/cycle-http-driver/issues/42","labels_url":"https://api.github.com/repos/cyclejs/cycle-http-driver/issues/42/labels{/name}","comments_url":"https://api.github.com/repos/cyclejs/cycle-http-driver/issues/42/comments","events_url":"https://api.github.com/repos/cyclejs/cycle-http-driver/issues/42/events","html_url":"https://github.com/cyclejs/cycle-http-driver/issues/42","id":129154702,"number":42,"title":"Is this even necessary?","user":{"login":"doodledood","id":888717,"avatar_url":"https://avatars.githubusercontent.com/u/888717?v=3","gravatar_id":"","url":"https://api.github.com/users/doodledood","html_url":"https://github.com/doodledood","followers_url":"https://api.github.com/users/doodledood/followers","following_url":"https://api.github.com/users/doodledood/following{/other_user}","gists_url":"https://api.github.com/users/doodledood/gists{/gist_id}","starred_url":"https://api.github.com/users/doodledood/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/doodledood/subscriptions","organizations_url":"https://api.github.com/users/doodledood/orgs","repos_url":"https://api.github.com/users/doodledood/repos","events_url":"https://api.github.com/users/doodledood/events{/privacy}","received_events_url":"https://api.github.com/users/doodledood/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":6,"created_at":"2016-01-27T14:08:43Z","updated_at":"2016-01-30T19:18:30Z","closed_at":"2016-01-30T19:18:30Z","body":"I am trying to get a broader understanding of Cycle JS's architecture and the reasoning behind it.\r\n\r\nMy question is this:\r\nDo we even need to have super abstract drivers like the HTTP driver and the LocalStorage driver?\r\nWhy can't I just create an \"API\" driver specific to my app and avoid all the inconvenience that comes with using a wrapper around some arbitrary library? (For example superagent in the HTTP driver)\r\nIsn't the whole point of having drivers to abstract away the \"how\" from the \"what\"?\r\n\r\nIf I just create an \"API\" driver and simply deliver \"commands\" to it via a sink and receive results via a source, I don't need to worry about the finer details (like filtering a GET request by the address) - if I for example, currently use local storage to retrieve my data and I now want to use an external server, I will need to change code in many places instead of only a single place (the API driver). With a specific API driver one I can do just that - which supports the Open/Closed principle.\r\n\r\nBasically using an API driver looks like a mini-flux inside Cycle JS where the API sink is dispatching an action and the API driver being a reducer/saga that contains all of the side effects in the system.\r\n\r\nAm I missing something? What are your thoughts about this?"},"comment":{"url":"https://api.github.com/repos/cyclejs/cycle-http-driver/issues/comments/177280415","html_url":"https://github.com/cyclejs/cycle-http-driver/issues/42#issuecomment-177280415","issue_url":"https://api.github.com/repos/cyclejs/cycle-http-driver/issues/42","id":177280415,"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},"created_at":"2016-01-30T19:18:30Z","updated_at":"2016-01-30T19:18:30Z","body":"Alright, I'll close this issue, we can reopen if necessary later."}}