Thanks for starting this discussion Kaxil, I have been wanting to find time to finish drafting that release doc and then bring this to the list.

So yeah, both a and b are compatible with SemVer, which is only concerned with breaking changes - if you make breaking changes you MUST increment the major version. You can also add other changes in that release (and this is what most projects too, and what we did with 2.0) or you can just make breaking changes/remove things but include no other changes.

I think from a user wanting to upgrade perspective a) is easier because you can go to (for example) 2.8, the last in the 2.8 series, ensure you have no warnings/run upgrade check and then know that you can upgrade to 3.0 without anything else changing on you.

If we wanted to go with approach a the way it would have to work (to avoid adding more new features) is that we'd have to release 2.8 (in this example) then almost immediately remove the features we have deprecated and then release 3.0. If there is any kind of meaningful gap between these releases (say more than a few days) then there is a high likelyhood that new features would be added.

I proposed this idea, but I don't have strong feelings which way we go - both have pros and cons.

-ash

On Tue, 9 Mar, 2021 at 22:29, Vikram Koka <[email protected]> wrote:
I love the thoughtful discussion.

I am in favour of (b), because that is the "general understanding" of Semantic Versioning.


On Tue, Mar 9, 2021 at 6:14 PM Kaxil Naik <[email protected] <mailto:[email protected]>> wrote:
Interesting points, reminds me of this thread: <https://github.com/semver/semver/issues/411#issuecomment-347050750> 😄


Some comments / suggestions from the commenters on that post which I find interesting (both of which support one or the other option we are discussing).

1)
Use BREAKING.FEATURE.PATCH instead of MAJOR.MINOR.PATCH.

2)
To me, a MAJOR version bump means "either I broke something or I really want you to pay attention."

Regards,
Kaxil



On Wed, Mar 10, 2021, 01:51 Jarek Potiuk <[email protected] <mailto:[email protected]>> wrote:
Very slight preference for b) for the marketing value but a) has some nice properties too and if we have enough support for a) I would also follow "remove deprecated features only".

I do not think we break semver with a) : <https://semver.org/>. Major version MAY (but not MUST) include minor and patch level changes. So it is up to us what we decide.

Major version X (X.y.z | X > 0) MUST be incremented if any backwards incompatible changes are introduced to the public API. It *MAY* also include minor and patch level changes. Patch and minor version MUST be reset to 0 when major version is incremented.

J.


On Tue, Mar 9, 2021 at 7:41 PM Tomasz Urbaszek <[email protected] <mailto:[email protected]>> wrote:
I'm also in favor of *b)*.

If we expect that new features may confuse users then maybe we should adopt a rule that when a feature is introduced it is protected by the feature flag and is not enabled by default. Of course this may not always be possible or may create even more confusion.

Cheers,
Tomek


On Tue, 9 Mar 2021 at 09:22, Deng Xiaodong <[email protected] <mailto:[email protected]>> wrote:
To me it should be *(b)*, especially given we intend to follow SemVar.

People would have specific expectations on MAJOR/MINOR/PATCH <https://semver.org/#summary> if we claim SemVar is followed. *(a)* would cause confusion in such context.


XD

On Tue, Mar 9, 2021 at 12:43 AM Kaxil Naik <[email protected] <mailto:[email protected]>> wrote:
I personally would vote for *(b) Contain new features as well as the removal of deprecated features*as otherwise, it does not feel like it is a major release to me.

A major release to me is where we add new features of significant values as we did with Airflow 2.0.0. This is also good in terms of marketing where blog posts and video posts (talks in conferences) can talk about *what's new in 3.0.0?*instead of 3.1 or 3.2

Regards,
Kaxil

On Mon, Mar 8, 2021 at 11:41 PM Kaxil Naik <[email protected] <mailto:[email protected]>> wrote:
Hi all,

As part of documenting all the guidelines including (PR here <https://github.com/apache/airflow/pull/14674>) but not limited to Release, I would like to start the discussion on one of the things that was recently discussed:

*What should the major version like 3.0.0 / 4.0.0 contain?*
a) Only removal of deprecated features to ease the migration for users b) Contain new features as well as removal of deprecated features

Also Note: from Airflow 2.0.0, we intend to follow SemVer (<https://semver.org/>)

Looking forward to hearing everyone's thoughts.

Regards,
Kaxil




--
+48 660 796 129

Reply via email to