snowplow / snowplow-badrows

Apache License 2.0
7 stars 2 forks source link

Exclude iglu-scala-client transitive dependencies #63

Closed istreeter closed 3 years ago

istreeter commented 3 years ago

snowplow-badrows uses iglu-scala-client only for a few simple case classes it defines. Until now, by having a dependency on iglu-scala-client, we have been including the following libraries which are completely unnecessary for what snowplow-badrows should provide:

istreeter commented 3 years ago

We've had some discussion about whether this is a breaking change, according to semver. Transitive dependencies that were previously included via the maven pom file, are now excluded. Users upgrading from 0.7.1 to 0.7.2 might have to also include transitive dependencies if they were using them for something else.

Having read again the semver specification I think this is a valid compatible API change. This does not change the API of our library, and that is the principle concern of semver.

In particular, there is this FAQ:

What should I do if I update my own dependencies without changing the public API?

That would be considered compatible since it does not affect the public API. Software that explicitly depends on the same dependencies as your package should have their own dependency specifications and the author will notice any conflicts. Determining whether the change is a patch level or minor level modification depends on whether you updated your dependencies in order to fix a bug or introduce new functionality. I would usually expect additional code for the latter instance, in which case it's obviously a minor level increment.

There have been discussions in the semver issues on this matter, e.g. this one. Also, this very old PR is a bit more opinionated on the issue, but is as yet unmerged.