Unless Ash has still some objections to my answer the vote has passed with
5 "+1" votes.

On Mon, Sep 14, 2020 at 1:23 PM Jarek Potiuk <jarek.pot...@polidea.com>
wrote:

> Thanks Ash.
>
> Some good points Indeed. I am more and more convinced to SEMVER. I do
> agree that consistently following SEMVER has some really nice properties
> and makes user decisions easier. CALVER kind of passes the problem to the
> users rather than solve it by the maintainers. But the problem remains.
>
> * 100% agree, we should use the "min-airflow version for this provider"
> feature of  setiup.py (like we do for cncf.kubernetes) and it is rather
> easy to maintain.
> * I do agree with the point that having flexibility on deciding on
> backwards compatible/incompatible changes is an important one and very
> useful long term rather than assuming "full backwards compatibility" for
> the entire life of the provider package.
> * when I think a bit more about that, I think that it might not be as big
> of an effort as it seems - providing that there is some kind of
> discipline/automation at the time of commit that can be used at release
> time. This way it will be the committer/reviewer responsibility to make
> sure that the information is correct, where release manager will only
> process that information (automatically). That seems sustainable.
> * I am still not sure about the MAJOR version prefix/independence from the
> major Airflow version. The Major release of Airflow will be a MAJOR event,
> so releasing new packages compatible only with that version seems like an
> entirely possible thing to do (we are doing it now with 2.0). Having this
> will allow us to continue releasing providers from hypothetical "2_" branch
> while we are already releasing "3_" (similarly as we agreed now with
> backport packages releasable for 3 months after 2.0 release). Maybe we can
> use the same approach as we used for backport packages where we could
> effectively put the "major" version of airflow in the package name ('
> *apache-airflow-2-providers-google*' for example) to keep the versioning
> of each provider package 100% SEMVER? I think that might allow us to make
> much deeper "breaking" changes between 2/3 versions of airflow - for
> example refactoring the whole interface of BaseOperator. And it will also
> give the provider <> airflow version relation that Vikram was talking about.
>
> I updated the AIP-8
> <https://cwiki.apache.org/confluence/display/AIRFLOW/AIP-8+Split+Providers+into+Separate+Packages+for+Airflow+2.0>
> to reflect that we are undecided about that one:
>
> Versioning proposal is still to be decided closer to the release time (we
>> want to come up with a consistent process proposal to handle it). The
>> options we considered so far:
>>
>>    - CALVER with MAJOR AIRFLOW prefix (2.YYYY.MM.DD) for all 2.* Airflow
>>    releases. In the future 3.YYYY.MM.DD for all 3.* releases. Backwards
>>    incompatibility is only allowed between MAJOR Airflow Versions
>>
>>
>>    - SEMVER separately for each package with a process that allows
>>    marking PRs as introducing features/breaking changes to aid automation of
>>    release process. Dependency to Airflow version is maintained only by
>>    setup.py specification for each package.
>>
>>
>>    - SEMVER for each package but the package name contains major airflow
>>    version (apache-airflow-2-provider-google)
>>
>>
> Anyone's input is welcome here :)
>
> J
>
>
> On Mon, Sep 14, 2020 at 12:48 PM Ash Berlin-Taylor <a...@apache.org> wrote:
>
>>
>>
>> On Sep 14 2020, at 11:01 am, Jarek Potiuk <jarek.pot...@polidea.com>
>> wrote:
>>
>> >>
>> >>
>> >> > We have to make sure that we have no dependencies core -> providers
>> >>
>> >> How do we handle writing logs to S3/GCS/Azure Blob storage, which
>> >> depends on the hook from the provider to work?
>> >>
>> >
>> > Good point. I will make sure that I address it in the PR as well. I
>> think
>> > those should only work when
>> > the corresponding package his installed. And raise a warning otherwise.
>> >
>>
>> An error at startup, I think would be better than an error.
>>
>>
>>
>> >>
>> >> > Versioning proposal is CALVER with MAJOR AIRFLOW prefix
>> (2.YYYY.MM.DD)
>> >> > for all 2.* Airflow releases. In the future 3.YYYY.MM.DD for all 3.*
>> >> > releases. Backwards incompatibility is only allowed between MAJOR
>> >> > Airflow Versions
>> >>
>> >> I'd personally prefer use to use SemVar to allow us to make the freedom
>> >> to make backwards-incompatible changes to a provider (within the same
>> >> major Airflow release). This is what HashiCorp have done with their
>> >> terraform providers modules.
>> >>
>> >
>> > This is detail that we can still decide on independently on voting.
>> > But in
>> > my opinion this
>> > one is super difficult (procedurally and regarding involvement of
>> release
>> > management time
>> > and effort needed) if we want to release each provider separately.
>> >
>> > But I am open to it as well if you help to define how SEMVER
>> implementation
>> > should look like and
>> > if we come up that does not require a heavy overhead of release
>> management
>> > that cannot
>> > be automated.
>> >
>> > What is your proposal for the implementation of SEMVER in this case?
>> >
>> > I can see the following options (but if you have other proposal - I am
>> > happy to hear them):
>> >
>> > a) 2.0.N for all providers released in 2.0. But then according to semver
>> > those
>> > would be just bugfixes and no new features added) so technically it's
>> not
>> > really SEMVER -
>> > it's basically the same as 2 + CALVER but with incrementing number
>> instead
>> > of date.
>> >
>> > b) 2.0.X.Y incrementing X always when new features are added and Y's
>> when
>> > there are bugfixes?
>> >
>> > c) 2.X.Y for all 2.* providers with X increasing when there are new
>> > features and Ys when there are bugfixes.
>> >
>> > I think, if we go for the b) c) who, when (and based on what criteria)
>> will
>> > be deciding
>> > whether X or Y should be increased for those 60+operators? Would that be
>> > contributors committing the code or release manager releasing those
>> > packages?
>> > Note that the latter literally requires to review those all packages and
>> > decide on a
>> > case-by-case basis. I would never want to do it personally on regular
>> basis.
>> >
>> > What do you think Ash? Which option do you propose?
>>
>> I should preface this with my feeling isn't a strong desire, nor
>> blocking on the AIP being accepted.
>>
>> I was thinking just a more strict SemVer (but starting at 2.0.0) -- i.e.
>> the providers version is not tied to the Airflow major version, so we
>> could have a provider at version 5.2.0 and it still works with Airflow
>> -- my thinking here was:
>>
>> 1. We start at 2.x just for the sake of it -- though it could just as
>> easily start every airflow-provider-* at 1.0.0 with the next release
>> 2. We use the existing setup.py/python dep process to show limit what
>> version of apache-airflow a provider works with.
>>
>> My main reason for thinking 2) is that I think it's more likely that the
>> providers will work with a hypotehtical Airflow 3 unchanged than not,
>> and so this avoids having to update/release a new provider version.
>>
>> After all -- one of the goals of provider is to ease upgrades, so by
>> only having to upgrade core, and not upgrade the providers at the same
>> time makes it easier on users.
>>
>> > Note that the latter literally requires to review those all packages and
>> > decide on a
>> > case-by-case basis.
>>
>> Yes, this is a bit more work on the release manager, I accept that, but
>> we can use some automated process where we build up the changelog
>> programatically/from files.
>>
>> For example, we could either use reno -- for example:
>> https://docs.openstack.org/magnum/pike/contributor/reno.html which lets
>> each PR specify the type of the change.
>>
>> Or we could do the same thing but lighter weight -- a bunch of
>> Markdown/RST files in airflow/provider/x/changes/ that marks the type,
>> and then scripting we write ourselves to build up a CHANGELOG for each
>> provider.
>>
>> As I said above, I would _like_ us (the Airflow project) to do the work
>> of deciding SemVer/breaking changes, rather than each of our users
>> having to do this. But In this instance I am willing to be persauded
>> otherwise.
>>
>> -ash
>>
>> >
>> > J.
>> >
>> >
>> >
>> >> -ash
>> >>
>> >> On Sep 13 2020, at 9:28 pm, Jarek Potiuk <jarek.pot...@polidea.com>
>> wrote:
>> >>
>> >> > Hello Everyone,
>> >> >
>> >> > Last week, at the Airflow 2.0 meeting the people involved made a
>> decision
>> >> > that we are releasing Airlow 2.0 as a set of separate "core" and
>> >> > "providers" packages - similarly to the 1.10 "backport providers"
>> >> packages.
>> >> >
>> >> > This decision effectively implements the "spirit" of the AIP-8
>> >> > proposed by
>> >> > Tim Swast in January 2019. It's not an exact implementation - we've
>> >> learned
>> >> > a lot since the original proposal and the final implementation is
>> >> slightly
>> >> > different - rather than "multiple" repositories we stay with the
>> >> mono-repo
>> >> > approach, but we aim to achieve many of the goals targeted by the
>> AIP-8.
>> >> >
>> >> > I updated the original AIP-8
>> >> > <
>> >>
>> https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=100827303
>> >> >
>> >> > to reflect those changes.
>> >> >
>> >> > This is the formal Vote for this proposal. It follows the "vote on
>> code
>> >> > modification" policy of the ASF:
>> >> >
>> https://www.apache.org/foundation/voting.html#votes-on-code-modification
>> >> >
>> >> > We need three +1 votes for the proposal to proceed. All committers
>> >> > have a
>> >> > binding vote.
>> >> >
>> >> > The vote will last 72 hours, which means that it ends on Wed 16th Sep
>> >> 2020,
>> >> > 10:30 PM CEST
>> >> >
>> >> > Consider this my binding +1.
>> >> >
>> >> > J
>> >> >
>> >> > --
>> >> > Jarek Potiuk
>> >> > Polidea | Principal Software Engineer
>> >> >
>> >> > M: +48 660 796 129
>> >> >
>> >>
>> >
>> >
>> > --
>> >
>> > Jarek Potiuk
>> > Polidea <https://www.polidea.com/> | Principal Software Engineer
>> >
>> > M: +48 660 796 129 <+48660796129>
>> > [image: Polidea] <https://www.polidea.com/>
>> >
>>
>
>
> --
>
> Jarek Potiuk
> Polidea <https://www.polidea.com/> | Principal Software Engineer
>
> M: +48 660 796 129 <+48660796129>
> [image: Polidea] <https://www.polidea.com/>
>
>

-- 

Jarek Potiuk
Polidea <https://www.polidea.com/> | Principal Software Engineer

M: +48 660 796 129 <+48660796129>
[image: Polidea] <https://www.polidea.com/>

Reply via email to