{"action":"created","issue":{"url":"https://api.github.com/repos/egeloen/ivory-http-adapter/issues/104","labels_url":"https://api.github.com/repos/egeloen/ivory-http-adapter/issues/104/labels{/name}","comments_url":"https://api.github.com/repos/egeloen/ivory-http-adapter/issues/104/comments","events_url":"https://api.github.com/repos/egeloen/ivory-http-adapter/issues/104/events","html_url":"https://github.com/egeloen/ivory-http-adapter/issues/104","id":70673892,"number":104,"title":"Adapter packages","user":{"login":"hannesvdvreken","id":1410358,"avatar_url":"https://avatars.githubusercontent.com/u/1410358?v=3","gravatar_id":"","url":"https://api.github.com/users/hannesvdvreken","html_url":"https://github.com/hannesvdvreken","followers_url":"https://api.github.com/users/hannesvdvreken/followers","following_url":"https://api.github.com/users/hannesvdvreken/following{/other_user}","gists_url":"https://api.github.com/users/hannesvdvreken/gists{/gist_id}","starred_url":"https://api.github.com/users/hannesvdvreken/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hannesvdvreken/subscriptions","organizations_url":"https://api.github.com/users/hannesvdvreken/orgs","repos_url":"https://api.github.com/users/hannesvdvreken/repos","events_url":"https://api.github.com/users/hannesvdvreken/events{/privacy}","received_events_url":"https://api.github.com/users/hannesvdvreken/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":32,"created_at":"2015-04-24T12:15:24Z","updated_at":"2015-04-25T15:21:27Z","closed_at":null,"body":"Hi,\r\n\r\nIn case you noticed: you depend on a lot of \"stable\" packages that have few dependencies of their own.\r\n\r\nhttps://github.com/egeloen/ivory-http-adapter/tree/master/src\r\n\r\nThis package is a helper package for other tools like SDKs, OAuth clients, ...\r\nSo it should be stable as well.\r\n\r\n### How stable is this package?\r\n\r\nThe problem is, this package is equally unstable as all of your dependencies together. When one of these dependencies gets a new backwards incompatible release, you will need to update your package and publish a new major release in order to provide it. Imagine maintaining that.\r\n\r\n### Solution\r\n\r\nWhat you can do is create a new GitHub organisation, and migrate this package over there. Then start creating new repositories in that organisation, one for every adapter class. Each repository will contain one adapter class and a bunch of peripheral files like composer.json, .gitattributes, ...\r\n\r\nConsider creating a base adapter package repository, which you can clone, fill and push up to a new repository.\r\n\r\n### What depends on what?\r\n\r\nThe core package depends on nothing. Thus it is extremely stable!\r\n\r\nThe adapter packages depend on the core package (because that one contains the adapter interface and traits etc). Every adapter package also possibly depends on an external HTTP client, like Guzzle, or Buzz. But the amount of dependencies per package is maximum 2 or 3.\r\n\r\n#### Suggest\r\n\r\nWhen an adapter is extracted, the core package can **suggest** using one of the extracted adapter packages using the suggest field in composer.json.\r\n\r\n### What happens when Buzz releases a new major version?\r\n\r\nYou can update the buzz adapter package and release a new major version. People who are not using buzz and the buzz adapter package don't have to do anything. People using the old buzz http client can still use the old version of the buzz adapter package. You can even match the version with its external dependency, but I'd advise against it.\r\n\r\n### What happens when the core package makes a Backwards incompatible change?\r\n\r\nIt depends.\r\nThe core package needs to update major version number.\r\n\r\nAll adapter packages as well, because they need to publish a new release which can work with the new version of the core package. If the adapter interface and all of the traits remain backwards compatible, you might be able to get away with new bug releases for all adapter packages which also allow the new major version releases in their composer.json files.\r\n\r\n### Upgrade path?\r\n\r\nThis package is currently at version 0.7.1. By gradually extracting the adapters, you can work towards a 1.0.0. This v1 version will incredibly stable. If you don't have the time to do all the work at once, you could create a 0.8.0 release which has abstracted only one adapter.\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/egeloen/ivory-http-adapter/issues/comments/96221205","html_url":"https://github.com/egeloen/ivory-http-adapter/issues/104#issuecomment-96221205","issue_url":"https://api.github.com/repos/egeloen/ivory-http-adapter/issues/104","id":96221205,"user":{"login":"hannesvdvreken","id":1410358,"avatar_url":"https://avatars.githubusercontent.com/u/1410358?v=3","gravatar_id":"","url":"https://api.github.com/users/hannesvdvreken","html_url":"https://github.com/hannesvdvreken","followers_url":"https://api.github.com/users/hannesvdvreken/followers","following_url":"https://api.github.com/users/hannesvdvreken/following{/other_user}","gists_url":"https://api.github.com/users/hannesvdvreken/gists{/gist_id}","starred_url":"https://api.github.com/users/hannesvdvreken/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hannesvdvreken/subscriptions","organizations_url":"https://api.github.com/users/hannesvdvreken/orgs","repos_url":"https://api.github.com/users/hannesvdvreken/repos","events_url":"https://api.github.com/users/hannesvdvreken/events{/privacy}","received_events_url":"https://api.github.com/users/hannesvdvreken/received_events","type":"User","site_admin":false},"created_at":"2015-04-25T15:21:27Z","updated_at":"2015-04-25T15:21:27Z","body":"I think you need to accept the org joining request. I haven't received one,\nI'd like to join as well.\nOn 25 Apr 2015 5:17 pm, \"Márk Sági-Kazár\" <notifications@github.com> wrote:\n\n> Weird.... Don't you see the organization on the left side (on gitter)?\n>\n> —\n> Reply to this email directly or view it on GitHub\n> <https://github.com/egeloen/ivory-http-adapter/issues/104#issuecomment-96220799>\n> .\n>\n"}}