Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 4.4.0: November 16, 2015 #400

Closed
GerardPaligot opened this issue Nov 4, 2015 · 8 comments
Closed

Release 4.4.0: November 16, 2015 #400

GerardPaligot opened this issue Nov 4, 2015 · 8 comments

Comments

@GerardPaligot
Copy link
Contributor

Hi all,

The next release 4.4.0 is planned for Monday 16th November.

You can find the temporary changelog below:

Minor API Changes

Documentation

Fixes

CI

@swolf91
Copy link
Contributor

swolf91 commented Nov 4, 2015

Correct me if I'm wrong, but you removed deprecated api 894a2e7. so shouldn't it be version 5.0.0 according to the conversation in #203 ?

@GerardPaligot
Copy link
Contributor Author

Not exactly. A major version means incompatible API changes and a minor version means minor API changes but between each version (major or minor), we remove all deprecated methods (see Checklist).

@pschichtel
Copy link
Contributor

Well removing deprecated API is an API breaking change, which conflicts with the minor update convention of staying API compatible. Minor version can change API in non-breaking ways (adding API, deprecating API, but removing methods is definitly breaking. So either stick with the convention or prominently document that minor updates can break things. You could document the removal version in the javadoc of the depreceted method/class.

Addition: A release process checklist is not a good place to document this

@swolf91
Copy link
Contributor

swolf91 commented Nov 4, 2015

@GerardPaligot I see it like @pschichtel.
Also you wrote about it in issue #203.
@pschichtel wrote:

The important part about the minor version (Y): API compatibility. So adding new APIs and changing implementations is fine, but the existing API should stay compatible. You can however deprecate APIs and schedule them for removal.

and @monperrus answered:

Yes, this is what we do.

@monperrus
Copy link
Collaborator

I see your point.

API compatibility is both syntactic (does it compile?) and behavioral (does it execute as before?).

To this extent, even a bug fix may "break" existing code, this is the classical story of code exploiting a bug (it's not a bug, it's a feature).

So my view is that "API breaking" is not binary (it's not only syntactic, it's not only bug fix vs removal), and the difference between a major and minor is the result of a qualified, well thought decision.

that said, let's be very concrete: the removed methods seem to be secondary to us and only deserve a minor version.

Are there any removed method on which you rely on, for which the deprecation period was too short?

@pschichtel
Copy link
Contributor

My point was: stick to the convention (minor will not break API consumers) or make it explicit through prominent documentation.
"Changes in API" doesn't even mention that API was removed

@monperrus
Copy link
Collaborator

You're right, we will improve the doc.

--Martin

@GerardPaligot
Copy link
Contributor Author

Spoon 4.4.0 is published and on the way for Maven Central!

I close this issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants