On Tue, Apr 3, 2012 at 3:38 PM, Chuck Remes <li...@chuckremes.com> wrote:

> If we are following the rules of semantic versioning, this new feature should 
> cause a 2.2.0 release. New features that do not break backward compatibility 
> cause a minor version increase.

You are right that this goes against the policy:
http://www.zeromq.org/docs:policies.

I'm going to argue that the policy is broken and needs fixing.

My argument is that the version numbering should reflect the
*expected* maturity level of the product and not the semantic
versioning of the ABI. Most of us would expect that a small change
like this RCVTIMEO/SNDTIMEO would happen in a patch level, whereas
we'd expect a 2.2 release to come with significant new code. It would
be doubly surprising to release 2.2.0 that is immediately marked
"stable".

This policy has caused frequent pain in the past. It has justified
unnecessary shifts in APIs and protocols, with no incentive for
backwards compatibility. It comingles interoperability levels with
code stability whereas the two operate orthogonally.

Counter example: if someone does a major refactoring of 2.1 code, does
that emerge as a new minor release, or a patch? Neither work.

Policy should work as we expect, rather than come as a shock every time.

I'd like to see two specific changes:

1. backwards compatibility defined by contract, as we've started to do in C4.
2. release numbers reflect expected stability of the codebase, not
ABIs or protocols.

Comments?

-Pieter
_______________________________________________
zeromq-dev mailing list
zeromq-dev@lists.zeromq.org
http://lists.zeromq.org/mailman/listinfo/zeromq-dev

Reply via email to