And to clarify, when I talk about putting pressure on major releases, what
I mean is that there's this notion that a major release has to have some
very special or big feature change.  One reason offered is marketing.
Major release is an opportunity to market airflow, so take advantage of
that.  Another offered is, "well folks won't upgrade if there's not some
special carrots in it", especially given that major releases are where we
introduce a bunch of breaking changes all at once.

Well, if we had a different policy that allowed for introducing behavior
changes on a regular basis, then we would not have to save them all up for
the major release, and unleash them on the users all at once.  So then you
would not have that big painful major release upgrade to deal with -- you'd
have done it a little bit at a time.  So the "carrots" become less
important perhaps.  Perhaps the fact that behavior changes would come out
in dribs and drabs over time would make it more likely for users to upgrade
sooner, because staying current would be less painful than getting too far
behind -- though that's just a thought.

But anyway, the way it is now, the major release seems to be too many
things: big marketing push, tons of new features, *and* the only
opportunity to make breaking changes.  A policy like snowflake's seems so
much healthier, methodical, and relaxed, allowing us to be selective about
when and how to release behavior changes, without it having to be anything
more than that.

CalVer <https://calver.org/> may be a good option.


On Sat, Aug 26, 2023 at 11:22 PM Daniel Standish <
daniel.stand...@astronomer.io> wrote:

> For whatever reason, I was reminded recently of snowflake's "behavior
> change" policy
>
> See here:
> https://docs.snowflake.com/en/release-notes/behavior-change-policy
>
> I think semver is problematic for core because basically you cannot
> implement behavior changes until the "mythical" major release.  The next
> major always seems very far off.  Indeed some have suggested that 3.0 might
> never happen (looking at you @potiuk :) ).
>
> Given the fact that it is so incredibly uncertain when exactly 3.0 will
> happen (and after that, subsequent major releases), it really makes the
> developer's job a lot harder.  Because you feel like you may never (or
> practically never) be able to make a change, or fix something, etc.
>
> What snowflake does is they release "behavior changes" (a.k.a. breaks with
> backward compatibility) in phases.  First is testing phase (users can
> enable optionally). Next is opt-out period (enabled by default but you can
> disable).  Final phase is general availability, when it's enabled and you
> can't disable it.
>
> Moving to something like this would give us a little more flexibility to
> evolve airflow incrementally over time, without putting so much pressure on
> those mythical major releases.  And it would not put so much pressure on
> individual feature development, because you would know that there's a
> reasonable path to changing things down the road.
>
> Because of the infrequency of our major releases, I really think for core,
> semver is just not working for us.  That's perhaps a bold claim, but that's
> how I feel.
>
> Discuss!
>
>
>
>
>

Reply via email to