semantic versioning & backward compatibility

"Arie van Deursen [email protected] [junit]" <[email protected]> Mon, 11 Aug 2014 20:07:13 +0200
Newsgroups gmane.comp.java.junit.user
Message-ID <[email protected]>
Hi JUniters,

In light of the ongoing discussion about backward compatibility, it may 
be worth considering the adoption of semantic versioning.

http://semver.org/

In semantic versioning, only major releases are allowed to introduce 
breaking changes.

Thus, given the ongoing discussion, if JUnit wants to comply with 
semantic versioning, the new release should be called 5.0 and not 4.12.

In relation to deprecation: Semver requires the addition of deprecation 
tags first (as done correctly by JUnit), followed by the removal of the 
methods or classes in a major release (which now incorrectly is 
scheduled for a minor release).

As another point, semver also typically uses three numbers, 
major.minor.patch.

So far JUnit releases have not been very frequent, but if the junit 
teams wants to increase the frequency of bug fix releases, having an 
explicit version number for that would be useful too.
This would call for naming the new release 5.0.0.

Yet an alternative is to continue with 4.x for now, yet postpone (to 
some point in the future) the introduction of breaking changes to the 
upcoming 5.x. (I think this is what Henrik Kaipe is arguing for).

Cheers,
Arie


------------------------------------
Posted by: Arie van Deursen <[email protected]>
------------------------------------