{"action":"created","issue":{"url":"https://api.github.com/repos/Codeception/Codeception/issues/3014","repository_url":"https://api.github.com/repos/Codeception/Codeception","labels_url":"https://api.github.com/repos/Codeception/Codeception/issues/3014/labels{/name}","comments_url":"https://api.github.com/repos/Codeception/Codeception/issues/3014/comments","events_url":"https://api.github.com/repos/Codeception/Codeception/issues/3014/events","html_url":"https://github.com/Codeception/Codeception/issues/3014","id":150081598,"number":3014,"title":"Semantic Versioning for next release","user":{"login":"GaryJones","id":88371,"avatar_url":"https://avatars.githubusercontent.com/u/88371?v=3","gravatar_id":"","url":"https://api.github.com/users/GaryJones","html_url":"https://github.com/GaryJones","followers_url":"https://api.github.com/users/GaryJones/followers","following_url":"https://api.github.com/users/GaryJones/following{/other_user}","gists_url":"https://api.github.com/users/GaryJones/gists{/gist_id}","starred_url":"https://api.github.com/users/GaryJones/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GaryJones/subscriptions","organizations_url":"https://api.github.com/users/GaryJones/orgs","repos_url":"https://api.github.com/users/GaryJones/repos","events_url":"https://api.github.com/users/GaryJones/events{/privacy}","received_events_url":"https://api.github.com/users/GaryJones/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2016-04-21T13:53:12Z","updated_at":"2016-04-25T09:03:01Z","closed_at":null,"body":"_tl;dr Since there are breaking changes the next version should be `3.0.0`, not `2.2.0`._\r\n\r\n----\r\nI notice from the change log that there is nine _breaking_ changes listed for 2.2.0. None of these affect me personally, but *any* breaking change could affect other developers. Two of these changes appear to be the removal of two modules.\r\n\r\nBreaking changes are often needed for any software, and that's fine. The point here though, is that my project's tests shouldn't start failing because the test suite got updated to the same major branch which included breaking changes.\r\n\r\n[Semantic versioning](http://semver.org/) is fairly well understood by a vast proportion of developers. Enough at least to understand the basics that for a version number of _x.y.z_, releases with just bug fixes bump _z_, releases with new features bump _y_, and most importantly, any breaking changes (changes or removal of API / interface) bump _x_. There's a little more to it than that, but that's the gist of it.\r\n\r\nWhen someone does a `composer update`, or has an CI suite that checks out `\"^2\"` or `\"^2.1\"` of Codeception, then it will grab any version less than version 3. As things stand, after your next release, the automated suite will be checking out `2.2.0`, and if they were using the Laravel4 module, or something else that has now changed, they aren't going to be happy and their build will fail.\r\n\r\nIf, however, you called the next release `3.0.0`, as per semver, then they can decide if they want to update the Codeception dependency, and make changes to their code based when they want.\r\n\r\nI'll re-iterate - my point isn't about what you've removed and changed (and it's great you've identified those changes in the change log), but about following a well-understood convention and using the version number to communicate intent to your users.\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/Codeception/Codeception/issues/comments/214217963","html_url":"https://github.com/Codeception/Codeception/issues/3014#issuecomment-214217963","issue_url":"https://api.github.com/repos/Codeception/Codeception/issues/3014","id":214217963,"user":{"login":"gdscei","id":614371,"avatar_url":"https://avatars.githubusercontent.com/u/614371?v=3","gravatar_id":"","url":"https://api.github.com/users/gdscei","html_url":"https://github.com/gdscei","followers_url":"https://api.github.com/users/gdscei/followers","following_url":"https://api.github.com/users/gdscei/following{/other_user}","gists_url":"https://api.github.com/users/gdscei/gists{/gist_id}","starred_url":"https://api.github.com/users/gdscei/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gdscei/subscriptions","organizations_url":"https://api.github.com/users/gdscei/orgs","repos_url":"https://api.github.com/users/gdscei/repos","events_url":"https://api.github.com/users/gdscei/events{/privacy}","received_events_url":"https://api.github.com/users/gdscei/received_events","type":"User","site_admin":false},"created_at":"2016-04-25T09:03:01Z","updated_at":"2016-04-25T09:03:01Z","body":"Although I completely agree that this release should probably be 3.0 (even though PHP itself does small breaking changes in minors as well), I do want to note on one point:\r\n\r\n> has an CI suite that checks out \"^2\" or \"^2.1\" of Codeception\r\n\r\nIf your build that goes onto production does not grab the same version as you've developed on, you're probably not using composer.lock - it's recommended to include that into your repository to prevent these sorts of issues."}}