Brondahl
Brondahl

Reputation: 8557

Does this constitute a breaking change to the API for semantic versioning

Apologies if this question is being posted into the wrong space - it doesn't feel quite right for SO, but I don't know of a better place.

I have a public nuget Package (EnumStringValues ... plug, plug plug) which I'm making a change to.

The change doesn't change the API signatures - the old code will still compile.But it does change behaviour in an edge case - mostly the result is that a usage that would previously have generated an exception now performs a different default behaviour. There's also a TryParse() call, which will (in this edge case) change a (non-exception) fail case into a success case.

The edge cases are "you've used this library in a way that it wasn't really intended to be used". i.e. I've slightly increased the intended use-scope of the library.

Is that a breaking change? and does it thus demand a new MAJOR version? Or is it merely a minor change that is "backwards compatible".

My first instinct is to say it's a change to the behaviour of existing calls and therefore a breaking change. Thoughts?

Upvotes: 1

Views: 167

Answers (1)

Joseph Devlin
Joseph Devlin

Reputation: 1800

Given the following

  1. MAJOR version when you make incompatible API changes
  2. MINOR version when you add functionality in a backwards-compatible manner
  3. PATCH version when you make backwards-compatible bug fixes.

I would say that your change is not backwards compatible. People who belong to your edge case group will have their expected functionality changed by your new package. In light of this I would say it is a new major version

Upvotes: 1

Related Questions