{"action":"created","issue":{"url":"https://api.github.com/repos/akka/akka-http/issues/3","repository_url":"https://api.github.com/repos/akka/akka-http","labels_url":"https://api.github.com/repos/akka/akka-http/issues/3/labels{/name}","comments_url":"https://api.github.com/repos/akka/akka-http/issues/3/comments","events_url":"https://api.github.com/repos/akka/akka-http/issues/3/events","html_url":"https://github.com/akka/akka-http/issues/3","id":172632006,"number":3,"title":"Discuss: versioning scheme","user":{"login":"ktoso","id":120979,"avatar_url":"https://avatars.githubusercontent.com/u/120979?v=3","gravatar_id":"","url":"https://api.github.com/users/ktoso","html_url":"https://github.com/ktoso","followers_url":"https://api.github.com/users/ktoso/followers","following_url":"https://api.github.com/users/ktoso/following{/other_user}","gists_url":"https://api.github.com/users/ktoso/gists{/gist_id}","starred_url":"https://api.github.com/users/ktoso/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ktoso/subscriptions","organizations_url":"https://api.github.com/users/ktoso/orgs","repos_url":"https://api.github.com/users/ktoso/repos","events_url":"https://api.github.com/users/ktoso/events{/privacy}","received_events_url":"https://api.github.com/users/ktoso/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/akka/akka-http/labels/3%20-%20in%20progress","name":"3 - in progress","color":"eb6420"},{"url":"https://api.github.com/repos/akka/akka-http/labels/discuss","name":"discuss","color":"bfe5bf"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/akka/akka-http/milestones/1","html_url":"https://github.com/akka/akka-http/milestones/FIRST_STABLE_RELEASE","labels_url":"https://api.github.com/repos/akka/akka-http/milestones/1/labels","id":1957334,"number":1,"title":"FIRST_STABLE_RELEASE","description":"","creator":{"login":"ktoso","id":120979,"avatar_url":"https://avatars.githubusercontent.com/u/120979?v=3","gravatar_id":"","url":"https://api.github.com/users/ktoso","html_url":"https://github.com/ktoso","followers_url":"https://api.github.com/users/ktoso/followers","following_url":"https://api.github.com/users/ktoso/following{/other_user}","gists_url":"https://api.github.com/users/ktoso/gists{/gist_id}","starred_url":"https://api.github.com/users/ktoso/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ktoso/subscriptions","organizations_url":"https://api.github.com/users/ktoso/orgs","repos_url":"https://api.github.com/users/ktoso/repos","events_url":"https://api.github.com/users/ktoso/events{/privacy}","received_events_url":"https://api.github.com/users/ktoso/received_events","type":"User","site_admin":false},"open_issues":6,"closed_issues":4,"state":"open","created_at":"2016-08-23T07:41:38Z","updated_at":"2016-09-13T12:36:37Z","due_on":null,"closed_at":null},"comments":22,"created_at":"2016-08-23T07:40:49Z","updated_at":"2016-09-13T13:12:07Z","closed_at":null,"body":"As discussed in https://github.com/akka/akka-meta/issues/27\r\n\r\nA new Versioning scheme for Akka HTTP\r\n\r\nBinary compatibility is very important to us. We’ve shown one of the best track records in the Scala ecosystem on maintaining such compatibility–including efforts that we spent between 2.3.x and 2.4.x that made these binary compatible, which would have–under the previous versioning scheme–been major releases.\r\n\r\nPlease note that Akka, since the release of 2.4.0 maintains a MAJOR.MINOR.PATCH versioning, as opposed to the previously used EPOCH.MAJOR.MINOR which used to be Scala versioning scheme inspired.\r\n\r\nWe can not use the 1.0 version to demarcate this new start as it would be very confusing since that number was already used back in July 2015 while we were working on Akka Streams & HTTP under a separate version scheme than Akka \"core\", which was at 2.3.x and later on continued to become 2.4.x.\r\n\r\nOur goal with the HTTP versioning scheme is to signify that while Akka HTTP may need to bump its major version number, e.g. from 10 to 11, it would be still compatible with Akka 2.x–the stable core which will only break compatibility when a huge change is needed.\r\n\r\nAction: After careful consideration of all of the above constraints, we propose that the new versioning scheme be different enough not be confused with Akka \"core\" versions. Specifically, we think using a version number much higher than 2 or 3 (which would be confusable with Akka versions) is the way to go, and suggest to start at 10.0, simultaneously announcing Akka HTTP to be stable (removing the experimental flag).\r\n\r\nTo decide: Given troublesome situation of the Directives trait being extended by user code, binary compatibility is impossible to maintain when a new directive is added into it. This will change with Scala 2.12, however with 2.11 it still is the case. We propose to keep source compatibility in minor releases, e.g. a new directive can be added but to a new trait that one mixes-in explicitly, and in a major release we can merge those new traits to the existing Directives structure. A major release may then still happen sooner than an Akka 3.0 (which is very far out), and the project can keep a healthy speed - to be determined by the team.\r\n\r\n\r\n\r\nPlease comment!"},"comment":{"url":"https://api.github.com/repos/akka/akka-http/issues/comments/246676171","html_url":"https://github.com/akka/akka-http/issues/3#issuecomment-246676171","issue_url":"https://api.github.com/repos/akka/akka-http/issues/3","id":246676171,"user":{"login":"ktoso","id":120979,"avatar_url":"https://avatars.githubusercontent.com/u/120979?v=3","gravatar_id":"","url":"https://api.github.com/users/ktoso","html_url":"https://github.com/ktoso","followers_url":"https://api.github.com/users/ktoso/followers","following_url":"https://api.github.com/users/ktoso/following{/other_user}","gists_url":"https://api.github.com/users/ktoso/gists{/gist_id}","starred_url":"https://api.github.com/users/ktoso/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ktoso/subscriptions","organizations_url":"https://api.github.com/users/ktoso/orgs","repos_url":"https://api.github.com/users/ktoso/repos","events_url":"https://api.github.com/users/ktoso/events{/privacy}","received_events_url":"https://api.github.com/users/ktoso/received_events","type":"User","site_admin":false},"created_at":"2016-09-13T13:12:07Z","updated_at":"2016-09-13T13:12:07Z","body":"I'll attempt to summarise the available options.\r\n\r\n- ❌  `1.0`, we can't use it, it has been used for akka-http already already and would be too confusing \r\n- ❌  `2.0` we can't, same reason as 1.0\r\n- ❔ `3.0` technically possible. It is the logical \"something big happened\" version number and would step forward from Akka `2.4.x`. \r\n  - Problem is that people may eventually find Akka 3 once it's out, and use it with Akka HTTP 3, but that would be wrong, they'd likely should use Akka HTTP 5.0 or something with Akka 3 then.\r\n- ❔ `10.0` would be a large significant marker that it's different from Akka \"main\". It marks that this version number is independent from Akka \"main\".\r\n\r\nFurthermore, other things:\r\n\r\nChanging artifact name to `com.lightbend.akka` (from `com.typesafe.akka`) during the HTTP move:\r\n\r\n- ❌  we can not change the artifact name, as we'd risk users of downstream libraries ending up with a mix of akka classes (say some lib included 2.4.2, and another `10.x`) it'd blowup. We could claim it's not our fault, but that would not be nice. \r\n  - We must change package names when we do the artifact name change. Similar as to Netty's move to netty 3 and 4, which can co-exist on classpath due to other package name.\r\n  - We can not do this, because akka-http-core promised binary compatibility.\r\n\r\nThus, we need to decide if we call it `3.0` or `10.0`.\r\nI feel 3.0 may be confusing to people expecting \"Akka 3.0\", however perhaps that is not an issue...\r\n\r\nSo final question is on: on 3.0 vs 1.0."}}
{"actor":{"display_login":"ktoso"}}