ITV / scala-pact

A Scala implementation of CDC using the Pact standard
Other
108 stars 54 forks source link

Remove outdated modules? #168

Closed jbwheatley closed 3 years ago

jbwheatley commented 3 years ago

Should we remove the modules for out-of-date circe and http4s versions? For example http4s <0.21.x are at EOL, so there is little to be gained from offering support for them going forward, and it clutters the repo.

jbwheatley commented 3 years ago

I've been looking at the download statistics, and seeing how many unique IPs have downloaded v2.3.17 of the various http4s and circe modules over the last month. v2.3.17 of scala-pact is the latest version that we have a month's worth of data for, so this seems like an ok heuristic for determining which modules should be supported going forward, as it roughly indicates who is keeping up-to-date with this project.

For http4s, http4s-017 and http4s-020 have near-to-no usage. The others have much heavier usage, which I hypothesise is due to:

For circe, 12 and 13 are the only versions with much traffic, with 13 being much greater.

My proposal for the time being is to keep http4s 16a, 18 and 21, and circe 12 and 13, and for the latest versions of each to be a module that keeps up-to-date with the releases of http4s and circe, i.e. when http4s 1.0 releases, we don't add a new module, we update http4s-021 to be http4s-1

davesmith00000 commented 3 years ago

My proposal for the time being is to keep http4s 16a, 18 and 21, and circe 12 and 13

16a probably also gets a lot of action because it's the go-to in all the example code as well. I'd be tempted to be more ruthless and remove everything pre 21. The old versions aren't going to stop working, they just won't get any improvements, which might be fine for a lot of people. Mostly we kept so many versions because this all started when Scalaz was still a thing, and Http4s releases were dramatic and not entirely trustworthy (back then the x.x.0 release was more like another milestone release and you were better off waiting for the inevitable x.x.1 version).

and for the latest versions of each to be a module that keeps up-to-date with the releases of http4s and circe, i.e. when http4s 1.0 releases, we don't add a new module, we update http4s-021 to be http4s-1

Once Http4s hits v1.x.x it should be in semantic versioning territory when you can just keep pace with the latest major release. I would personally keep adding modules the way we used to but have a policy of only maintaining one or two versions back or something - give people a fighting chance to upgrade but don't maintain forever.

jbwheatley commented 3 years ago

I'd be tempted to be more ruthless and remove everything pre 21

I was also tempted to do this, but didn't to want to blaze too much of a warpath without getting another vote of support 😛 Let the warpath continue, I suppose...