{"action":"created","issue":{"url":"https://api.github.com/repos/tfausak/tfausak.github.io/issues/117","repository_url":"https://api.github.com/repos/tfausak/tfausak.github.io","labels_url":"https://api.github.com/repos/tfausak/tfausak.github.io/issues/117/labels{/name}","comments_url":"https://api.github.com/repos/tfausak/tfausak.github.io/issues/117/comments","events_url":"https://api.github.com/repos/tfausak/tfausak.github.io/issues/117/events","html_url":"https://github.com/tfausak/tfausak.github.io/issues/117","id":196972601,"number":117,"title":"Package Versioning Policy versus Semantic Versioning","user":{"login":"tfausak","id":408753,"avatar_url":"https://avatars.githubusercontent.com/u/408753?v=3","gravatar_id":"","url":"https://api.github.com/users/tfausak","html_url":"https://github.com/tfausak","followers_url":"https://api.github.com/users/tfausak/followers","following_url":"https://api.github.com/users/tfausak/following{/other_user}","gists_url":"https://api.github.com/users/tfausak/gists{/gist_id}","starred_url":"https://api.github.com/users/tfausak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tfausak/subscriptions","organizations_url":"https://api.github.com/users/tfausak/orgs","repos_url":"https://api.github.com/users/tfausak/repos","events_url":"https://api.github.com/users/tfausak/events{/privacy}","received_events_url":"https://api.github.com/users/tfausak/received_events","type":"User","site_admin":false},"labels":[{"id":164732216,"url":"https://api.github.com/repos/tfausak/tfausak.github.io/labels/idea","name":"idea","color":"bfe5bf","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":20,"created_at":"2016-12-21T16:17:53Z","updated_at":"2016-12-23T21:44:27Z","closed_at":null,"body":"Many people on Reddit took issue with me recommending SemVer over the PVP. \r\n\r\n> I totally disagree about SemVer v. PVP Versioning.\r\n\r\nhttps://www.reddit.com/r/haskell/comments/5iok3l/haskell_package_checklist/\r\n\r\nI am obviously in favor of SemVer. I wanted some empirical data about Haskell package versioning. I wrote a script that downloads Hackage's package index and looks at the version numbers.\r\n\r\n> Found 10642 packages.\r\n> Number of version components => number of packages\r\n> 3 => 4255\r\n> 4 => 4638\r\n> Number of (version components, major versions) => number of packages\r\n> (3,1) => 3747\r\n> (4,1) => 4357\r\n\r\nhttps://gist.github.com/tfausak/98726c8255c5bc5c940e0f4939978a43\r\n\r\nI assume that 3 version components means SemVer and 4 version components means the PVP. That's not quite accurate since SemVer requires exactly 3 components but the PVP requires at least 3.\r\n\r\n> A package version number SHOULD have the form A.B.C, and MAY optionally have any number of additional components\r\n\r\nhttp://pvp.haskell.org/\r\n\r\nAnyway, the PVP is the most popular versioning policy on Hackage. But SemVer is a very close second. \r\n\r\n> Of the 10,642 #Haskell packages on Hackage, 4,638 use the PVP and 4,255 use SemVer.\r\n\r\nhttps://twitter.com/taylorfausak/status/811578904209227776\r\n\r\nMost of the packages on Hackage never change their most significant version number. Only 9% have.\r\n\r\n> Of the 10,642 #Haskell packages on Hackage, only 921 have ever changed their most significant version number.\r\n\r\nhttps://twitter.com/taylorfausak/status/811579159671668736\r\n\r\n6% of PVP packages have ever changed their most significant version number. That's a lot less than the overall rate.\r\n\r\n> Of the 4,638 #Haskell packages on Hackage that use the PVP, only 281 have ever changed their most significant version number.\r\n\r\nhttps://twitter.com/taylorfausak/status/811579605278670849\r\n\r\n12% of SemVer packages have ever changed their most significant version number. That's a lot more than the overall rate.\r\n\r\n> Of the 4,255 #Haskell packages on Hackage that use SemVer, 508 have changed their most significant version number.\r\n\r\nhttps://twitter.com/taylorfausak/status/811580634045026304\r\n\r\nThose numbers make SemVer look less stable than the PVP, but it isn't a fair comparison. I need to update the script to look at the first two components of packages that use the PVP and compare that to the first component of packages that use SemVer. \r\n\r\nEven as they are now, the numbers support a point I want to make: The PVP gives unnecessary freedom that most packages don't even use. "},"comment":{"url":"https://api.github.com/repos/tfausak/tfausak.github.io/issues/comments/269048813","html_url":"https://github.com/tfausak/tfausak.github.io/issues/117#issuecomment-269048813","issue_url":"https://api.github.com/repos/tfausak/tfausak.github.io/issues/117","id":269048813,"user":{"login":"ezyang","id":13564,"avatar_url":"https://avatars.githubusercontent.com/u/13564?v=3","gravatar_id":"","url":"https://api.github.com/users/ezyang","html_url":"https://github.com/ezyang","followers_url":"https://api.github.com/users/ezyang/followers","following_url":"https://api.github.com/users/ezyang/following{/other_user}","gists_url":"https://api.github.com/users/ezyang/gists{/gist_id}","starred_url":"https://api.github.com/users/ezyang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ezyang/subscriptions","organizations_url":"https://api.github.com/users/ezyang/orgs","repos_url":"https://api.github.com/users/ezyang/repos","events_url":"https://api.github.com/users/ezyang/events{/privacy}","received_events_url":"https://api.github.com/users/ezyang/received_events","type":"User","site_admin":false},"created_at":"2016-12-23T21:44:27Z","updated_at":"2016-12-23T21:44:27Z","body":"@tfausak Did you ever end up doing the experiment where you checked how many upper bounds looked like `< 2.3` versus `< 2`?"}}
{"actor":{"display_login":"ezyang"}}