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