Seems that after this months of discussion we got an unanimous voting
result. I summarised it in the AIP-21
<https://cwiki.apache.org/confluence/display/AIRFLOW/AIP-21%3A+Changes+in+import+paths>
and
changed its status to "Accepted". Thanks for all your feedback! We will
start soon moving GCP operators following those rules and we will resolve
any initial problems with those - then we might provide some additional
learnings and see if we can easily (probably semi-automatically) move all
other operators.

Case 1
<https://cwiki.apache.org/confluence/display/AIRFLOW/AIP-21%3A+Changes+in+import+paths#AIP-21:Changesinimportpaths-Case#1airflow.contrib.{resources}>

What to do with the "contrib" folder

Case 2
<https://cwiki.apache.org/confluence/display/AIRFLOW/AIP-21%3A+Changes+in+import+paths#AIP-21:Changesinimportpaths-Case#2git*_{operator/sensor}{/s}.py>

Drop modules *_operator suffix

Case 3
<https://cwiki.apache.org/confluence/display/AIRFLOW/AIP-21%3A+Changes+in+import+paths#AIP-21:Changesinimportpaths-Case#3{aws/azure/gcp}_*>
 + Case 4
<https://cwiki.apache.org/confluence/display/AIRFLOW/AIP-21%3A+Changes+in+import+paths#AIP-21:Changesinimportpaths-Case#4Separatenamespaceforresources>

Grouping Cloud Providers operators/sensors/hooks

Case 5
<https://cwiki.apache.org/confluence/display/AIRFLOW/AIP-21%3A+Changes+in+import+paths#AIP-21:Changesinimportpaths-Case#5*Operator>

*Operator *Sensor *Hook in class name

Case 6
<https://cwiki.apache.org/confluence/display/AIRFLOW/AIP-21%3A+Changes+in+import+paths#AIP-21:Changesinimportpaths-Case#6Otherisolatedcases>

Isolated cases

Case 7
<https://cwiki.apache.org/confluence/display/AIRFLOW/AIP-21%3A+Changes+in+import+paths#AIP-21:Changesinimportpaths-Case#7>

Deprecation method

*A.* Move everything "contrib" → "airflow"

*A.* Drop the suffix.

Example:

   - *airflow.operator.gcp_bigtable_operator.py*
   becomes *airflow.operator.gcp_bigtable.py
   <http://airflow.operator.gcp_bigtable.py>*.

*D. * Group operators/sensors/hooks in *airflow/<PROVIDER>*/operators(sensors,
hooks). Non-cloud provider ones are moved to
airflow/operators(sensors/hooks).
*Drop the prefix.*

   -
*airflow/contrib/operators/sns_publish_operator.py
   becomes airflow/aws/operators/**sns_publish_operator.py*


   - *airflow/contrib/operators/dataproc_operator.py*
  becomes *airflow/gcp/operators/dataproc_operator.py*



   -
*airflow/contrib/operators/gcp_bigtable_operator.py  *becomes *airflow/*
   *gcp/operators/bigtable_operator.py*



   -
*airflow/contrib/operators/ssh_operator.py  *becomes *airflow/*
   *operators/ssh_operator.py*

*B.* No change - keep Operator/Sensor suffix in class name.

*A.* Make individual decisions of renames for operators that do not follow
common conventions used for other operators.

Consistency trumps compatibility.

Examples:

*DataProcHadoopOperator*

renamed to:

*DataprocHadoopOperator*
*A.* Native python method (with better IDE support  and more flexible but a
bit more verbose)

J.

On Wed, Jul 31, 2019 at 10:30 AM Jarek Potiuk <jarek.pot...@polidea.com>
wrote:

> Yep. Agree with Ash on it. There are a number of 'action' operators
> specific for cloud providers and these should be our target. The transfer
> ones require another AIP (A lot of that already discussed in AIP-8
> https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=100827303
> ).
>
> J.
>
> Principal Software Engineer
> Phone: +48660796129
>
> śr., 31 lip 2019, 10:01 użytkownik Ash Berlin-Taylor <a...@apache.org>
> napisał:
>
>> This is a good idea for now. I'm also not overly concerned about these
>> few non-cloud examples - FTPtoS3Operator can stay where it is and doesn't
>> have to move under 'aws.' to my mind.
>>
>> Longer term I'd like to go back to making the "transfer/copy/transform"
>> operators "composable" so that we can have a single DataCopyOperator, and
>> give it a source and destination, and it uses hooks to do the work. This is
>> not a small undertaking though to do well and efficiently though.
>>
>> -ash
>>
>> > On 30 Jul 2019, at 20:54, Tomasz Urbaszek <tomasz.urbas...@polidea.com>
>> wrote:
>> >
>> > Maybe we can put all those AtoB operators under one name like
>> “transfer”,
>> > then it would be easier to look for such operator?
>> >
>> > Best,
>> > Tomek
>> >
>> > On Tue, 30 Jul 2019 at 21:39, Chen Tong <cix...@gmail.com> wrote:
>> >
>> >> Daniel mentioned a good point. Such composed operator may also involves
>> >> both cloud and non-cloud provider saying FTPtoS3Operator. Should it in
>> AWS
>> >> folder?
>> >>
>> >> Also, saying in the future, another cloud provider is growing large
>> enough.
>> >> Will we rename all plugins related to this provider? What's the
>> criteria we
>> >> say it's big enough? And option D gives an impression like these tools
>> may
>> >> be maintained and supported by the Cloud provider. I am not sure if it
>> will
>> >> be a truth or not.
>> >>
>> >> Best,
>> >>
>> >>
>> >> On Tue, Jul 30, 2019 at 11:18 AM Daniel Standish <dpstand...@gmail.com
>> >
>> >> wrote:
>> >>
>> >>> One wrinkle with case 3+4 option D is inter-provider operators.
>> Mainly
>> >>> it's storage I think e.g. XToS3Operator or XToGCSOperator where the X
>> is
>> >> a
>> >>> service some different provider.
>> >>>
>> >>> Maybe the rule should be to locate the operator according to the first
>> >>> provider referenced.  So e.g. s3_to_gcs_transfer_operator.py would go
>> to
>> >>> aws.
>> >>>
>> >>>
>> >>> On Tue, Jul 30, 2019 at 6:21 AM Kamil Breguła <
>> kamil.breg...@polidea.com
>> >>>
>> >>> wrote:
>> >>>
>> >>>> Yes. All changes will be backwards compatible. In the case of using
>> >>>> the old path, a message containing a proposal for change will be
>> >>>> reported to the user.
>> >>>>
>> >>>> I prepared an example of how to change the name of a class in a case
>> >>>> with the use of a native solution.
>> >>>> Source code:
>> >>>>
>> >>
>> https://github.com/mik-laj/airflow-deprecation-sample/tree/master/rename
>> >>>> Preview from IDE: https://imgur.com/a/45NxS5W
>> >>>>
>> >>>> On Tue, Jul 30, 2019 at 2:28 PM Ash Berlin-Taylor <a...@apache.org>
>> >>> wrote:
>> >>>>>
>> >>>>> Just cos I'm not sure it's _explicitly_ stated, but all of the moves
>> >>>> will have a deprecation of the old name right?
>> >>>>>
>> >>>>> 3+4 case D gets my vote too.
>> >>>>>
>> >>>>> -a
>> >>>>>
>> >>>>>> On 30 Jul 2019, at 09:58, Jarek Potiuk <jarek.pot...@polidea.com>
>> >>>> wrote:
>> >>>>>>
>> >>>>>> I went ahead and updated the page (just to speed it up) as I think
>> >> it
>> >>>>>> really makes sense to join those two cases (and I do not see any
>> >>>> drawbacks
>> >>>>>> - I think the options we have cover all possible approaches) and we
>> >>> can
>> >>>>>> always go back if we need to.
>> >>>>>>
>> >>>>>>
>> >>>>
>> >>>
>> >>
>> https://cwiki.apache.org/confluence/display/AIRFLOW/AIP-21%3A+Changes+in+import+paths#AIP-21:Changesinimportpaths-Summaryoftheproposal
>> >>>>>>
>> >>>>>> My vote is *D*.
>> >>>>>>
>> >>>>>>  - airflow/contrib/operators/gcp_bigtable_operator.py  →
>> >>> airflow/gcp
>> >>>>>>  /operators/bigtable_operator.py
>> >>>>>>  - airflow/contrib/operators/ssh_operator.py ->
>> >>>>>>  airflow/operators/ssh_operator.py
>> >>>>>>
>> >>>>>> I updated the page with my vote.
>> >>>>>> I propose that we vote till Friday on that one (all the rest is
>> >>> already
>> >>>>>> agreed).
>> >>>>>>
>> >>>>>> J.
>> >>>>>>
>> >>>>>>
>> >>>>>> On Tue, Jul 30, 2019 at 9:42 AM Jarek Potiuk <
>> >>> jarek.pot...@polidea.com
>> >>>>>
>> >>>>>> wrote:
>> >>>>>>
>> >>>>>>> I think almost everyone voted and we have almost perfect
>> >> consensus.
>> >>>> We all
>> >>>>>>> agree amongst other on moving all operators out of contrib
>> >> (Great!).
>> >>>>>>>
>> >>>>>>> The only doubts are for *Case 3* (Cloud provider prefix) and *Case
>> >>> 4*
>> >>>>>>> (Using Namespaces).
>> >>>>>>> I think there was actually an overlap between those two. Also
>> >> Ash's
>> >>>>>>> comment/veto on that is quite clear.
>> >>>>>>> So I have final (I hope!) proposal to join those two cases and
>> >> have
>> >>>> one
>> >>>>>>> voting (till Friday) only on that.
>> >>>>>>>
>> >>>>>>> I will update the doc if you all agree with me that makes more
>> >> sense
>> >>>> as
>> >>>>>>> single case to vote on:
>> >>>>>>>
>> >>>>>>> *[Case 3 + Case 4]: Grouping Cloud Provider operators.*
>> >>>>>>>
>> >>>>>>> *Option A*. Keep operators/sensors/hooks in
>> >>> airflow/operators(sensors,
>> >>>>>>> hooks) and keep/add prefixes in file names.
>> >>>>>>>
>> >>>>>>>  -
>> >>>>>>> *airflow/contrib/operators/sns_publish_operator.py  becomes
>> >>>>>>>  airflow/operators/**aws_sns_publish_operator.py*
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>  - *airflow/contrib/operators/dataproc_operator.py*
>> >>>>>>> becomes *airflow/operators/gcp_dataproc_operator.py*
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>  -
>> >>>>>>> *airflow/contrib/hooks/gcp_bigtable_hook.py  *becomes *airflow/*
>> >>>>>>>  *hooks/gcp_bigtable_hook.py*
>> >>>>>>>  -
>> >>>>>>> *airflow/contrib/operators/ssh_operator.py  *becomes *airflow/*
>> >>>>>>>  *operators/ssh_operator.py*
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> *Option B*. Group operators/sensors/hooks in
>> >>>> airflow/operators(sensors,
>> >>>>>>> hooks)/*<PROVIDER>.* Non-cloud provider ones are moved to
>> >>>>>>> airflow/operators(sensors/hooks), Drop the prefix.
>> >>>>>>>
>> >>>>>>>  -
>> >>>>>>> *airflow/contrib/operators/sns_publish_operator.py
>> >>>>>>>  becomes airflow/operators/**aws/sns_publish_operator.py*
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>  - *airflow/contrib/operators/dataproc_operator.py*
>> >>>>>>> becomes *airflow/operators/gcp/dataproc_operator.py*
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>  -
>> >>>>>>> *airflow/contrib/operators/gcp_bigtable_operator.py  *becomes
>> >>>> *airflow/*
>> >>>>>>>  *operators/gcp/bigtable_operator.py*
>> >>>>>>>  -
>> >>>>>>> *airflow/contrib/operators/ssh_operator.py  *becomes *airflow/*
>> >>>>>>>  *operators/ssh_operator.py*
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> *Option C*. Group operators/sensors/hooks in
>> >>>> airflow/operators(sensors,
>> >>>>>>> hooks)*/<PROVIDER>.* Non-cloud provider ones are moved to
>> >>>>>>> airflow/operators(sensors/hooks), Keep the prefix.
>> >>>>>>>
>> >>>>>>>  -
>> >>>>>>> *airflow/contrib/operators/sns_publish_operator.py
>> >>>>>>>  becomes airflow/operators/**aws/aws_sns_publish_operator.py*
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>  - *airflow/contrib/operators/dataproc_operator.py*
>> >>>>>>> becomes *airflow/operators/gcp/gcp_dataproc_operator.py*
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>  -
>> >>>>>>> *airflow/contrib/operators/gcp_bigtable_operator.py  *becomes
>> >>>> *airflow/*
>> >>>>>>>  *operators/gcp/gcp_bigtable_operator.py*
>> >>>>>>>  -
>> >>>>>>> *airflow/contrib/operators/ssh_operator.py  *becomes *airflow/*
>> >>>>>>>  *operators/ssh_operator.py*
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> *Option D.* Group operators/sensors/hooks in
>> >>>> *airflow/<PROVIDER>*/operators(sensors,
>> >>>>>>> hooks). Non-cloud provider ones are moved to
>> >>>>>>> airflow/operators(sensors/hooks). Drop the prefix.
>> >>>>>>>
>> >>>>>>>  -
>> >>>>>>> *airflow/contrib/operators/sns_publish_operator.py
>> >>>>>>>  becomes airflow/aws/operators/**sns_publish_operator.py*
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>  - *airflow/contrib/operators/dataproc_operator.py*
>> >>>>>>> becomes *airflow/gcp/operators/dataproc_operator.py*
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>  -
>> >>>>>>> *airflow/contrib/operators/gcp_bigtable_operator.py  *becomes
>> >>>> *airflow/*
>> >>>>>>>  *gcp/operators/bigtable_operator.py*
>> >>>>>>>  -
>> >>>>>>> *airflow/contrib/operators/ssh_operator.py  *becomes *airflow/*
>> >>>>>>>  *operators/ssh_operator.py*
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> *Option E.* Group operators/sensors/hooks in
>> >>>> *airflow/<PROVIDER>*/operators(sensors,
>> >>>>>>> hooks). Non-cloud provider ones are moved to
>> >>>>>>> airflow/operators(sensors/hooks).* Keep the prefix*.
>> >>>>>>>
>> >>>>>>>  -
>> >>>>>>> *airflow/contrib/operators/sns_publish_operator.py
>> >>>>>>>  becomes airflow/aws/operators/aws_**sns_publish_operator.py*
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>  - *airflow/contrib/operators/dataproc_operator.py*
>> >>>>>>> becomes *airflow/gcp/operators/gcp_dataproc_operator.py*
>> >>>>>>>
>> >>>>>>>
>> >>>>>>>  -
>> >>>>>>> *airflow/contrib/operators/gcp_bigtable_operator.py  *becomes
>> >>>> *airflow/*
>> >>>>>>>  *gcp/operators/gcp_bigtable_operator.py*
>> >>>>>>>  -
>> >>>>>>> *airflow/contrib/operators/ssh_operator.py  *becomes *airflow/*
>> >>>>>>>  *operators/ssh_operator.py*
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> Shall I proceed with updating the page ?
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> J.
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> On Mon, Jul 29, 2019 at 11:18 AM Kaxil Naik <kaxiln...@gmail.com>
>> >>>> wrote:
>> >>>>>>>
>> >>>>>>>> Thanks Jarek, adding my vote.
>> >>>>>>>>
>> >>>>>>>> On Mon, Jul 29, 2019 at 2:40 PM Ash Berlin-Taylor <
>> >> a...@apache.org>
>> >>>> wrote:
>> >>>>>>>>
>> >>>>>>>>> Thanks Jarek, much clearer. I have voted there too.
>> >>>>>>>>>
>> >>>>>>>>> -ash
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>>> On 29 Jul 2019, at 08:13, Driesprong, Fokko
>> >> <fo...@driesprong.frl
>> >>>>
>> >>>>>>>>> wrote:
>> >>>>>>>>>>
>> >>>>>>>>>> Thanks Jarek, the Wiki works much better for me. I've added my
>> >>> vote
>> >>>>>>>> there
>> >>>>>>>>>> as well.
>> >>>>>>>>>>
>> >>>>>>>>>> You've convinced me on the second case. I've changed my vote on
>> >>>> Case 2
>> >>>>>>>>> from
>> >>>>>>>>>> A to B :-)
>> >>>>>>>>>>
>> >>>>>>>>>> Maybe we should leave the vote open a bit longer since it
>> >>> involves
>> >>>>>>>> quite
>> >>>>>>>>>> some reading, and I would like to get some proper feedback and
>> >>>>>>>> opinions
>> >>>>>>>>> on
>> >>>>>>>>>> this. Plus I only see two votes right now. If we don't think
>> >> this
>> >>>>>>>>> through,
>> >>>>>>>>>> it might be that we're having this vote again in the near
>> >> future
>> >>>> :-)
>> >>>>>>>>>>
>> >>>>>>>>>> Cheers, Fokko
>> >>>>>>>>>>
>> >>>>>>>>>> Op zo 28 jul. 2019 om 10:49 schreef Jarek Potiuk <
>> >>>>>>>>> jarek.pot...@polidea.com>:
>> >>>>>>>>>>
>> >>>>>>>>>>> I updated the AIP-21 proposal in the way that should answer
>> >> all
>> >>>> the
>> >>>>>>>>>>> concerns in this thread.
>> >>>>>>>>>>>
>> >>>>>>>>>>> NOTE! There is an action for all of those who are interested:
>> >>>> Please
>> >>>>>>>>>>> fill-in your voting in the voting table till Tuesday 30th of
>> >>> July
>> >>>> 6pm
>> >>>>>>>>> CEST
>> >>>>>>>>>>> (5pm BST, 9 am PST).
>> >>>>>>>>>>>
>> >>>>>>>>>>> I created a summary of the proposal
>> >>>>>>>>>>> <
>> >>>>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>
>> >>>>
>> >>>
>> >>
>> https://cwiki.apache.org/confluence/display/AIRFLOW/AIP-21%3A+Changes+in+import+paths#AIP-21:Changesinimportpaths-Summaryoftheproposal
>> >>>>>>>>>>>>
>> >>>>>>>>>>> in table form - which contains also examples for each case.
>> >>>>>>>>>>>
>> >>>>>>>>>>> I added a voting table
>> >>>>>>>>>>> <
>> >>>>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>
>> >>>>
>> >>>
>> >>
>> https://cwiki.apache.org/confluence/display/AIRFLOW/AIP-21%3A+Changes+in+import+paths#AIP-21:Changesinimportpaths-Voting
>> >>>>>>>>>>>>
>> >>>>>>>>>>> where you should add your votes:
>> >>>>>>>>>>>
>> >>>>>>>>>>> I propose this voting mechanism:
>> >>>>>>>>>>>
>> >>>>>>>>>>> Voting will take place till *Tuesday* 30 Jul 2019 6pm CEST  (5
>> >>> pm
>> >>>>>>>> BST,
>> >>>>>>>>> 9am
>> >>>>>>>>>>> PST) .
>> >>>>>>>>>>>
>> >>>>>>>>>>> After the choice, the final consistent set of choices will be
>> >>>>>>>> announced
>> >>>>>>>>>>> (taking into account majority of binding vote, also including
>> >>>>>>>> potential
>> >>>>>>>>>>> vetos and consistency between the choices. Non-binding votes
>> >>> will
>> >>>> be
>> >>>>>>>>> taken
>> >>>>>>>>>>> into account in case there is a draw. The final set of choices
>> >>>> will
>> >>>>>>>> be
>> >>>>>>>>>>> announced at devlist thread
>> >>>>>>>>>>> <
>> >>>>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>
>> >>>>
>> >>>
>> >>
>> https://lists.apache.org/thread.html/4cedc94bee53ad908eee8333a56b58be8b5641881e73f69b97e436a9@%3Cdev.airflow.apache.org%3E
>> >>>>>>>>>>>>
>> >>>>>>>>>>> after
>> >>>>>>>>>>> the voting completes.
>> >>>>>>>>>>>
>> >>>>>>>>>>> Unless there is a veto raised to the final proposal, the final
>> >>>>>>>> proposal
>> >>>>>>>>> is
>> >>>>>>>>>>> accepted by Lazy Consensus
>> >>>>>>>>>>> <https://community.apache.org/committers/lazyConsensus.html>
>> >>> on
>> >>>>>>>>> *Friday*
>> >>>>>>>>>>> 02
>> >>>>>>>>>>> Aug 2019 at 6pm CEST (5 pm BST, 9am PST).
>> >>>>>>>>>>>
>> >>>>>>>>>>> Please let me know if what I proposed can be further improved
>> >> to
>> >>>>>>>> avoid
>> >>>>>>>>>>> chaos.
>> >>>>>>>>>>>
>> >>>>>>>>>>> J.
>> >>>>>>>>>>>
>> >>>>>>>>>>> On Sat, Jul 27, 2019 at 11:41 AM Jarek Potiuk <
>> >>>>>>>> jarek.pot...@polidea.com
>> >>>>>>>>>>
>> >>>>>>>>>>> wrote:
>> >>>>>>>>>>>
>> >>>>>>>>>>>> Ok. I see that indeed voting could have been organised a bit
>> >>>> better
>> >>>>>>>> -
>> >>>>>>>>> dev
>> >>>>>>>>>>>> list does not seem to cope well with such a complex case :).
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> As Kamil noticed - we already have a formal AIP-21
>> >>>>>>>>>>>> <
>> >>>>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>
>> >>>>
>> >>>
>> >>
>> https://cwiki.apache.org/confluence/display/AIRFLOW/AIP-21%3A+Changes+in+import+paths
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> in the Wiki - which I should have mentioned before. I have
>> >> not
>> >>>> much
>> >>>>>>>>> time
>> >>>>>>>>>>>> today - but tomorrow I will try to summarise the options -
>> >>> based
>> >>>> on
>> >>>>>>>>> some
>> >>>>>>>>>>>> real code examples (to make it easier to digest). I think the
>> >>>> best
>> >>>>>>>>>>> approach
>> >>>>>>>>>>>> will be to make a voting matrix in the AIP-21 Wiki page where
>> >>>> people
>> >>>>>>>>> will
>> >>>>>>>>>>>> be able to state their preferences for each case (by adding a
>> >>>> row to
>> >>>>>>>>> the
>> >>>>>>>>>>>> table). I think that might provide much better clarity and a
>> >>>> single
>> >>>>>>>>> place
>> >>>>>>>>>>>> which will show the current aggregated state of voting.
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> However - as Ash also stated - some of the options are
>> >>>>>>>> inter-dependent
>> >>>>>>>>> so
>> >>>>>>>>>>>> at the end we will have to adjust the results in case they
>> >> are
>> >>>> not
>> >>>>>>>>>>>> consistent  - and make final voting on aggregated set of
>> >> cases
>> >>> -
>> >>>>>>>> but I
>> >>>>>>>>>>>> think in this case following "lasy consensus" - i,e. if noone
>> >>>>>>>> objects
>> >>>>>>>>> to
>> >>>>>>>>>>>> final set of cases, we will proceed with it..
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> Do you think that will work better ?
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> J.
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> Principal Software Engineer
>> >>>>>>>>>>>> Phone: +48660796129
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> sob., 27 lip 2019, 09:26 użytkownik Kamil Breguła <
>> >>>>>>>>>>>> kamil.breg...@polidea.com> napisał:
>> >>>>>>>>>>>>
>> >>>>>>>>>>>>> Document is also available as AIP on wiki:
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>
>> >>>>
>> >>>
>> >>
>> https://cwiki.apache.org/confluence/display/AIRFLOW/AIP-21%3A+Changes+in+import+paths
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>> On Sat, Jul 27, 2019, 9:07 AM Driesprong, Fokko
>> >>>>>>>> <fo...@driesprong.frl
>> >>>>>>>>>>
>> >>>>>>>>>>>>> wrote:
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>>> I agree with all, this is a bit chaotic. For the sake of
>> >>>> clarity,
>> >>>>>>>> I
>> >>>>>>>>>>>>> would
>> >>>>>>>>>>>>>> suggest moving the Google Doc to the Wiki as an AIP.
>> >> Create a
>> >>>>>>>>>>> structural
>> >>>>>>>>>>>>>> code improvement AIP and then and add a matrix of
>> >> users/cases
>> >>>>>>>> where
>> >>>>>>>>>>>>>> everybody can add his vote per case. This gives also the
>> >>>>>>>> opportunity
>> >>>>>>>>>>> for
>> >>>>>>>>>>>>>> changing your vote on a specific case. WDYT?
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>> Cheers, Fokko
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>> Op vr 26 jul. 2019 om 22:28 schreef Chen Tong <
>> >>>> cix...@gmail.com>:
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>> I agree with Ash. It is clear to vote on each case rather
>> >>> than
>> >>>>>>>> all
>> >>>>>>>>>>>>>>> together.
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>> On Fri, Jul 26, 2019 at 3:54 PM Ash Berlin-Taylor <
>> >>>>>>>> a...@apache.org>
>> >>>>>>>>>>>>>> wrote:
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>> A number of proposals overlap or add on to each other,
>> >> so I
>> >>>>>>>> think
>> >>>>>>>>>>>>> (?) a
>> >>>>>>>>>>>>>>>> single vote makes sense.
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>> To be clear, my vote is -1 until it's clear exactly what
>> >> we
>> >>>> are
>> >>>>>>>>>>>>> voting
>> >>>>>>>>>>>>>> on.
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>> On 26 July 2019 20:39:56 BST, Kaxil Naik <
>> >>>> kaxiln...@gmail.com>
>> >>>>>>>>>>>>> wrote:
>> >>>>>>>>>>>>>>>>> I agree with Ash and instead of voting on all 7 Cases
>> >>>> together,
>> >>>>>>>>>>> how
>> >>>>>>>>>>>>>>>>> about
>> >>>>>>>>>>>>>>>>> separate vote emails for all the cases? Each email can
>> >>> have
>> >>>> the
>> >>>>>>>>>>>>>>>>> description
>> >>>>>>>>>>>>>>>>> copied over from the doc.
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>> It would probably be a bit easier to track a decision in
>> >>> the
>> >>>>>>>>>>> future
>> >>>>>>>>>>>>> as
>> >>>>>>>>>>>>>>>>> well.
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>> What do you guys think? @Jarek Potiuk <
>> >>>>>>>> jarek.pot...@polidea.com>
>> >>>>>>>>>>>>>>>>> @Driesprong,
>> >>>>>>>>>>>>>>>>> Fokko <fo...@driesprong.frl>
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>> On Sat, Jul 27, 2019 at 1:03 AM Kaxil Naik <
>> >>>>>>>> kaxiln...@gmail.com>
>> >>>>>>>>>>>>>> wrote:
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>> *Case #1* airflow.contrib.{resources} : *Solution A *
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>> *Case #2* git *_{operator/sensor}{/s}.py : *Solution A
>> >> *
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>> *Case #3* {aws/azure/gcp}_* : *Solution C*
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>> *Case #4* Separate namespace for resources :
>> >>>>>>>>>>>>>>>>>> *Solution A*
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>> *Case #5* *Operator : *Solution A*
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>> *Case #7* : *Solution A*
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>> On Fri, Jul 26, 2019 at 11:09 PM Daniel Standish
>> >>>>>>>>>>>>>>>>> <dpstand...@gmail.com>
>> >>>>>>>>>>>>>>>>>> wrote:
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>> I have tried to add some clarification to Jarek's
>> >>> summary,
>> >>>>>>>> but
>> >>>>>>>>>>> I
>> >>>>>>>>>>>>> am
>> >>>>>>>>>>>>>>>>> a
>> >>>>>>>>>>>>>>>>>>> little fuzzy on exact proposal for case 3 so hopefully
>> >>>> Jarek
>> >>>>>>>>>>> can
>> >>>>>>>>>>>>>>>>> further
>> >>>>>>>>>>>>>>>>>>> clarify.
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>> According to my reading, in this motion cases 4,5,6
>> >> are
>> >>>> all
>> >>>>>>>>>>>>> either
>> >>>>>>>>>>>>>>>>>>> proposal
>> >>>>>>>>>>>>>>>>>>> *rejections* or otherwise have no effect, so attention
>> >>>> can be
>> >>>>>>>>>>>>>>>>> focused on
>> >>>>>>>>>>>>>>>>>>> cases 1,2,3 and 7.
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>> *Motion is to adopt the following:*
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>> Case 1 - Solution A - Get rid of contrib
>> >>>>>>>>>>>>>>>>>>> All objects will be moved out of contrib folder and
>> >> into
>> >>>>>>>>>>>>> respective
>> >>>>>>>>>>>>>>>>>>> non-contrib folder.
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>> Case 2 - Solution A - Remove object type suffix from
>> >>>> modules
>> >>>>>>>>>>>>>>>>>>> Example:
>> >>>>>>>>>>>>>>>>>>> Airflow.operators.foo_operator.FooOperator becomes
>> >>>>>>>>>>>>>>>>>>> airflow.operators.foo.FooOperator
>> >>>>>>>>>>>>>>>>>>> Example:
>> >>>>>>>>>>>>>>>>>>> Airflow.hooks.foo_hook.FooOperator becomes
>> >>>>>>>>>>>>> airflow.hooks.foo.FooHook
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>> Case 3 - conventions for cloud provider etc prefixes
>> >>>>>>>>>>>>>>>>>>> *I am not sure exactly what the proposal is.*
>> >>>>>>>>>>>>>>>>>>> Example case is
>> >>>>>>>>>>>>> airflow/contrib/operators/gcp_bigtable_operator.py
>> >>>>>>>>>>>>>>>>>>> Since motion adopts case 1 solution A, we can assume
>> >> it
>> >>> is
>> >>>>>>>> now
>> >>>>>>>>>>>>> named
>> >>>>>>>>>>>>>>>>> like
>> >>>>>>>>>>>>>>>>>>> so: airflow/operators/gcp_bigtable_operator.py
>> >>>>>>>>>>>>>>>>>>> So what is proposed for this case?
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>> Case 4 - Solution B - *no change*
>> >>>>>>>>>>>>>>>>>>> This proposal was about namespaces but the motion is
>> >> to
>> >>>>>>>> reject
>> >>>>>>>>>>>>> the
>> >>>>>>>>>>>>>>>>>>> proposal.
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>> Case 5 - Solution B - *no change*
>> >>>>>>>>>>>>>>>>>>> The proposal was to remove class type suffix e.g.
>> >> remove
>> >>>> the
>> >>>>>>>>>>>>>>>>> Operator in
>> >>>>>>>>>>>>>>>>>>> FooOperator, but the motion is to reject this proposal
>> >>> --
>> >>>>>>>> i.e.
>> >>>>>>>>>>>>>>>>> motion is
>> >>>>>>>>>>>>>>>>>>> no
>> >>>>>>>>>>>>>>>>>>> change on this case, i.e. we resolve to keep
>> >> "Operator"
>> >>>> (and
>> >>>>>>>>>>>>>>>>> "Sensor")
>> >>>>>>>>>>>>>>>>>>> suffixes on class names
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>> Case 6 - *No change*
>> >>>>>>>>>>>>>>>>>>> This case concerns object naming inconsistencies, but
>> >>>> motion
>> >>>>>>>>>>> does
>> >>>>>>>>>>>>>>>>> not
>> >>>>>>>>>>>>>>>>>>> enact
>> >>>>>>>>>>>>>>>>>>> any specific proposal.
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>> Case 7 - Solution A - use warnings.warn template for
>> >>>>>>>>>>> deprecation
>> >>>>>>>>>>>>>>>>> warnings
>> >>>>>>>>>>>>>>>>>>> (instead of zope)
>> >>>>>>>>>>>>>>>>>>> Example:
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>> # in old_package/old_mod.py
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>> import warnings
>> >>>>>>>>>>>>>>>>>>> from new_package.new_mod import *
>> >>>>>>>>>>>>>>>>>>> warnings.warn("old_package.old_mod has moved to
>> >>>>>>>>>>>>> new_package.new_mod.
>> >>>>>>>>>>>>>>>>>>> Import
>> >>>>>>>>>>>>>>>>>>> of "
>> >>>>>>>>>>>>>>>>>>> "old_package.old_mod will become unsupported in
>> >> version
>> >>>> 2",
>> >>>>>>>>>>>>>>>>>>> DeprecationWarning, 2)
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>> Reference implementation here:
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>
>> >>>>
>> >>>
>> >>
>> https://github.com/mik-laj/airflow-deprecation-sample/tree/master/solution1
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>> FWIW +1 (non-binding) on 1,2,7 -- unsure on 3.
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>> I am very happy that this motion now gets rid of
>> >>> contrib.
>> >>>>>>>>>>> Thank
>> >>>>>>>>>>>>> you
>> >>>>>>>>>>>>>>>>>>> Sergio
>> >>>>>>>>>>>>>>>>>>> for turning the tide with your effective argumentation
>> >>> ;)
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>> On Fri, Jul 26, 2019 at 3:16 AM Ash Berlin-Taylor <
>> >>>>>>>>>>>>> a...@apache.org>
>> >>>>>>>>>>>>>>>>> wrote:
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>> Could someone summarise what the proposed name
>> >> changes
>> >>>> are,
>> >>>>>>>>>>>>> here,
>> >>>>>>>>>>>>>>>>> in
>> >>>>>>>>>>>>>>>>>>> this
>> >>>>>>>>>>>>>>>>>>>> thread? Pointing at a google doc and only giving
>> >>> partial
>> >>>>>>>>>>>>> examples
>> >>>>>>>>>>>>>>>>> is 1)
>> >>>>>>>>>>>>>>>>>>> a
>> >>>>>>>>>>>>>>>>>>>> bit difficult to quickly work out what we are voting
>> >>> on,
>> >>>> and
>> >>>>>>>>>>> 2)
>> >>>>>>>>>>>>>>>>> using a
>> >>>>>>>>>>>>>>>>>>>> google doc isn't great for a longer term record.
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>> Thanks,
>> >>>>>>>>>>>>>>>>>>>> Ash
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>> On 26 Jul 2019, at 09:14, Jarek Potiuk
>> >>>>>>>>>>>>>>>>> <jarek.pot...@polidea.com>
>> >>>>>>>>>>>>>>>>>>> wrote:
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>> I would like to recast the vote. Let's start from 0
>> >> :)
>> >>>> . I
>> >>>>>>>>>>>>> would
>> >>>>>>>>>>>>>>>>> like
>> >>>>>>>>>>>>>>>>>>> to
>> >>>>>>>>>>>>>>>>>>>>> keep the July 30th 6pm CEST date, and at least three
>> >>> +1
>> >>>>>>>>>>>>>>>>> (binding)
>> >>>>>>>>>>>>>>>>>>> votes
>> >>>>>>>>>>>>>>>>>>>> are
>> >>>>>>>>>>>>>>>>>>>>> needed to pass. I marked in red the modifications to
>> >>> the
>> >>>>>>>>>>>>>>>>> previous
>> >>>>>>>>>>>>>>>>>>>> proposal.
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>> Here is the proposal (details here
>> >>>>>>>>>>>>>>>>>>>>> <
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>
>> >>>>
>> >>>
>> >>
>> https://docs.google.com/document/d/1F8zve5S78DXcjpPttW89HnqT0M0iKjT6fo9jX57Ef6A/edit#heading=h.j4jc3i70qszo
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>> )
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>> - *Case 1: A: Get rid of contrib,*
>> >>>>>>>>>>>>>>>>>>>>> - *Case 2: A:
>> >>> Airflow.operators.foo_operator.FooOperator
>> >>>>>>>>>>>>> could
>> >>>>>>>>>>>>>>>>>>>>> become airflow.operators.foo.FooOperator*
>> >>>>>>>>>>>>>>>>>>>>> - *Case 3: C:
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>> airflow.contrib.operators.gcp_bigtable_operator.BigTableOperator
>> >>>>>>>>>>>>>>>>>>> could
>> >>>>>>>>>>>>>>>>>>>>> become
>> >>> airflow.gcp.operators.bigtable.BigTableOperator*
>> >>>>>>>>>>>>>>>>>>>>> - *Case 4: B: no namespace introduction*
>> >>>>>>>>>>>>>>>>>>>>> - *Case 5: B: Keep "Operator" (and "Sensor")
>> >> suffixes
>> >>> on
>> >>>>>>>>>>>>> class
>> >>>>>>>>>>>>>>>>>>> names*
>> >>>>>>>>>>>>>>>>>>>>> - *Case 6: We will treat isolated cases on
>> >>> case-by-case
>> >>>>>>>>>>>>> (and
>> >>>>>>>>>>>>>>>>> my team
>> >>>>>>>>>>>>>>>>>>>> can
>> >>>>>>>>>>>>>>>>>>>>> do the job of GCP-related operators)*
>> >>>>>>>>>>>>>>>>>>>>> - *Case 7: Native python solution (with better IDE
>> >>>>>>>>>>>>>>>>> integration)*
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>> This is my binding (+1) vote.
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>> On Fri, Jul 26, 2019 at 10:08 AM Jarek Potiuk <
>> >>>>>>>>>>>>>>>>>>> jarek.pot...@polidea.com>
>> >>>>>>>>>>>>>>>>>>>>> wrote:
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> Hey Felix,
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> For 7* -> I am in favour of trying the native one
>> >> as
>> >>>> well
>> >>>>>>>>>>> (I
>> >>>>>>>>>>>>>>>>> use IDE
>> >>>>>>>>>>>>>>>>>>>> quite
>> >>>>>>>>>>>>>>>>>>>>>> often ;) )
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> J.
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> On Wed, Jul 24, 2019 at 9:34 AM Driesprong, Fokko
>> >>>>>>>>>>>>>>>>>>> <fo...@driesprong.frl
>> >>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> wrote:
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>> Thanks Kamil for putting the document together. I
>> >>>> wasn't
>> >>>>>>>>>>>>> able
>> >>>>>>>>>>>>>>>>> to
>> >>>>>>>>>>>>>>>>>>>> respond
>> >>>>>>>>>>>>>>>>>>>>>>> earlier since I was giving Airflow workshops
>> >>>> throughout
>> >>>>>>>>>>>>> Europe
>> >>>>>>>>>>>>>>>>> :-)
>> >>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>> *Case 1: *Solution A → Remove everything from
>> >>> contrib
>> >>>>>>>>>>> into
>> >>>>>>>>>>>>> a
>> >>>>>>>>>>>>>>>>> single
>> >>>>>>>>>>>>>>>>>>>>>>> package.
>> >>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>> To make it easier to the end-user, my preference
>> >>>> would be
>> >>>>>>>>>>>>> to
>> >>>>>>>>>>>>>>>>> get
>> >>>>>>>>>>>>>>>>>>> rid of
>> >>>>>>>>>>>>>>>>>>>>>>> the
>> >>>>>>>>>>>>>>>>>>>>>>> contrib package altogether. What's in contrib or
>> >> not
>> >>>> is a
>> >>>>>>>>>>>>>>>>> tricky
>> >>>>>>>>>>>>>>>>>>>> question,
>> >>>>>>>>>>>>>>>>>>>>>>> I think this is already reflected in the document
>> >>>> since
>> >>>>>>>>>>>>>>>>> "maturity"
>> >>>>>>>>>>>>>>>>>>> is
>> >>>>>>>>>>>>>>>>>>>> in
>> >>>>>>>>>>>>>>>>>>>>>>> quotes. What would be the moment to transfer the
>> >>>> operator
>> >>>>>>>>>>>>> to
>> >>>>>>>>>>>>>>>>> the
>> >>>>>>>>>>>>>>>>>>> core
>> >>>>>>>>>>>>>>>>>>>> or
>> >>>>>>>>>>>>>>>>>>>>>>> vice versa? I'm afraid that renaming contrib to
>> >>>>>>>>>>> incubating
>> >>>>>>>>>>>>>>>>> will
>> >>>>>>>>>>>>>>>>>>> confuse
>> >>>>>>>>>>>>>>>>>>>>>>> the
>> >>>>>>>>>>>>>>>>>>>>>>> user even more. For people who aren't as known
>> >> with
>> >>>>>>>>>>>>> Airflow it
>> >>>>>>>>>>>>>>>>> isn't
>> >>>>>>>>>>>>>>>>>>>> that
>> >>>>>>>>>>>>>>>>>>>>>>> transparent which operator lives where, especially
>> >>> if
>> >>>> you
>> >>>>>>>>>>>>>>>>> don't use
>> >>>>>>>>>>>>>>>>>>> an
>> >>>>>>>>>>>>>>>>>>>> IDE
>> >>>>>>>>>>>>>>>>>>>>>>> such as Ash ;) Besides that I don't think it is
>> >>> worth
>> >>>>>>>>>>>>> changing
>> >>>>>>>>>>>>>>>>> the
>> >>>>>>>>>>>>>>>>>>>> public
>> >>>>>>>>>>>>>>>>>>>>>>> API just for a different name.
>> >>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> Ok. I am convinced. I will re-cast the vote with
>> >>> this.
>> >>>> It
>> >>>>>>>>>>>>> will
>> >>>>>>>>>>>>>>>>> make
>> >>>>>>>>>>>>>>>>>>>> easier
>> >>>>>>>>>>>>>>>>>>>>>> as we will not have to define other rules as those
>> >>>> that we
>> >>>>>>>>>>>>>>>>> already
>> >>>>>>>>>>>>>>>>>>> have.
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>> *Case 2:* Slight preference to Solution B (let's
>> >>> say a
>> >>>>>>>>>>> +0)
>> >>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>> I like to search on Github with t, and then search
>> >>> for
>> >>>>>>>>>>>>>>>>> BashOperator.
>> >>>>>>>>>>>>>>>>>>>> After
>> >>>>>>>>>>>>>>>>>>>>>>> the change, you should search for Operator/Bash.
>> >>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>> Jarek, I'm confused with your vote on this, from
>> >>> your
>> >>>>>>>>>>> mail
>> >>>>>>>>>>>>> you
>> >>>>>>>>>>>>>>>>>>> state: -
>> >>>>>>>>>>>>>>>>>>>>>>> *Case 2: B:
>> >>> Airflow.operators.foo_operator.FooOperator
>> >>>>>>>>>>>>> could
>> >>>>>>>>>>>>>>>>> become
>> >>>>>>>>>>>>>>>>>>>>>>> airflow.operators.foo.FooOperator*. But the B
>> >>>> solution is
>> >>>>>>>>>>>>>>>>> keeping it
>> >>>>>>>>>>>>>>>>>>>> the
>> >>>>>>>>>>>>>>>>>>>>>>> same, so that would mean - *Case 2: B:
>> >>>>>>>>>>>>>>>>>>>>>>> Airflow.operators.foo_operator.FooOperator *would
>> >>> stay
>> >>>>>>>>>>>>>>>>>>>>>>> airflow.operators.foo_operator*.FooOperator*
>> >>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>> My mistake. It was of course A. I think there is a
>> >>>> little
>> >>>>>>>>>>>>>>>>> confusion
>> >>>>>>>>>>>>>>>>>>>> here.
>> >>>>>>>>>>>>>>>>>>>>>> This case is not for changing BashOperator into
>> >> Bash
>> >>>> but
>> >>>>>>>>>>> for
>> >>>>>>>>>>>>>>>>> changing
>> >>>>>>>>>>>>>>>>>>>> the
>> >>>>>>>>>>>>>>>>>>>>>> *module* name not the *class* name. So
>> >>>>>>>>>>>>>>>>> bash_operator.BashOperator ->
>> >>>>>>>>>>>>>>>>>>>>>> bash.BashOperator :) . you will still search for
>> >>>>>>>>>>>>> BashOperator
>> >>>>>>>>>>>>>>>>> in this
>> >>>>>>>>>>>>>>>>>>>> case.
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>> *Case 3:* I'm leaning towards B
>> >>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>> Mostly because it isn't as trivial to decide when
>> >> it
>> >>>> gets
>> >>>>>>>>>>>>> its
>> >>>>>>>>>>>>>>>>> own
>> >>>>>>>>>>>>>>>>>>>> package
>> >>>>>>>>>>>>>>>>>>>>>>> or not. Besides the cloud providers, there are
>> >>>> companies
>> >>>>>>>>>>>>> like
>> >>>>>>>>>>>>>>>>>>>> Databricks
>> >>>>>>>>>>>>>>>>>>>>>>> and Qubole which might also end up with their own
>> >>>> package
>> >>>>>>>>>>>>>>>>> because
>> >>>>>>>>>>>>>>>>>>> their
>> >>>>>>>>>>>>>>>>>>>>>>> integration is getting richer over time. Moving
>> >> this
>> >>>> is a
>> >>>>>>>>>>>>> bit
>> >>>>>>>>>>>>>>>>>>> painful
>> >>>>>>>>>>>>>>>>>>>>>>> because we need to deprecate the old path and move
>> >>>>>>>>>>>>> everything
>> >>>>>>>>>>>>>>>>> which
>> >>>>>>>>>>>>>>>>>>>>>>> introduces noise into version control etc.
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> I'd say, we should go for C. As I proposed. It's
>> >> not
>> >>> as
>> >>>>>>>>>>>>>>>>> difficult as
>> >>>>>>>>>>>>>>>>>>> it
>> >>>>>>>>>>>>>>>>>>>>>> seems to group operators in packages and it has
>> >>>> numerous
>> >>>>>>>>>>>>>>>>> advantages.
>> >>>>>>>>>>>>>>>>>>> The
>> >>>>>>>>>>>>>>>>>>>>>> nice thing about deprecations - we can do them in
>> >> the
>> >>>>>>>>>>>>>>>>> __init__.py of
>> >>>>>>>>>>>>>>>>>>> the
>> >>>>>>>>>>>>>>>>>>>>>> packages which causes the noise fairly small (Git
>> >>> will
>> >>>>>>>>>>>>> actually
>> >>>>>>>>>>>>>>>>>>> realise
>> >>>>>>>>>>>>>>>>>>>>>> that the file has been moved and you can follow
>> >> that.
>> >>>>>>>>>>> Maybe
>> >>>>>>>>>>>>> not
>> >>>>>>>>>>>>>>>>> as
>> >>>>>>>>>>>>>>>>>>> super
>> >>>>>>>>>>>>>>>>>>>>>> easy to merge changes later to 1.10.4  but it's
>> >> not a
>> >>>>>>>>>>> rocket
>> >>>>>>>>>>>>>>>>> science
>> >>>>>>>>>>>>>>>>>>>> either.
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>> *Case 7:* Python native solution
>> >>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>> Yes.
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>> ---
>> >>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>> Apart from all, great work!
>> >>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>> Cheers, Fokko
>> >>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>> Op di 23 jul. 2019 om 21:27 schreef Felix
>> >> Uellendall
>> >>>>>>>>>>>>>>>>>>>>>>> <felue...@pm.me.invalid
>> >>>>>>>>>>>>>>>>>>>>>>>> :
>> >>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>> I have no strong "No" against any proposed change
>> >>> of
>> >>>>>>>>>>> these
>> >>>>>>>>>>>>>>>>> cases.
>> >>>>>>>>>>>>>>>>>>> So I
>> >>>>>>>>>>>>>>>>>>>>>>> go
>> >>>>>>>>>>>>>>>>>>>>>>>> with +1 (non-binding).
>> >>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>> P.S. Thanks Jarek for bringing this up again and
>> >>> your
>> >>>>>>>>>>>>> intense
>> >>>>>>>>>>>>>>>>> work
>> >>>>>>>>>>>>>>>>>>>>>>> towards
>> >>>>>>>>>>>>>>>>>>>>>>>> airflow currently :) and thanks to Kamil for even
>> >>>>>>>>>>> creating
>> >>>>>>>>>>>>>>>>> this
>> >>>>>>>>>>>>>>>>>>>>>>> document. I
>> >>>>>>>>>>>>>>>>>>>>>>>> like how the code is getting more and more
>> >>> consistent
>> >>>>>>>>>>> and
>> >>>>>>>>>>>>>>>>> clean :)
>> >>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>> Kind regards,
>> >>>>>>>>>>>>>>>>>>>>>>>> Felix
>> >>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>> Sent from ProtonMail mobile
>> >>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>> -------- Original Message --------
>> >>>>>>>>>>>>>>>>>>>>>>>> On Jul 23, 2019, 18:34, Jarek Potiuk wrote:
>> >>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>>> Hello everyone,
>> >>>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>>> This email is calling a vote on the changes in
>> >>>> import
>> >>>>>>>>>>>>> paths.
>> >>>>>>>>>>>>>>>>> It's
>> >>>>>>>>>>>>>>>>>>>> been
>> >>>>>>>>>>>>>>>>>>>>>>>>> discussed in
>> >>>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>
>> >>>>
>> >>>
>> >>
>> https://lists.apache.org/thread.html/4e648d9421c792d4537f5ac66f1a16dce468f816fc5221a9f9db9433@%3Cdev.airflow.apache.org%3E
>> >>>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>>> The vote will last for at least 1 week (July
>> >> 30th
>> >>>> 6pm
>> >>>>>>>>>>>>> CEST),
>> >>>>>>>>>>>>>>>>> and
>> >>>>>>>>>>>>>>>>>>> at
>> >>>>>>>>>>>>>>>>>>>>>>> least
>> >>>>>>>>>>>>>>>>>>>>>>>>> three +1 (binding) votes have been cast.
>> >>>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>>> The proposal to vote is based on the document
>> >> from
>> >>>>>>>>>>> Kamil
>> >>>>>>>>>>>>>>>>>>>>>>>>> <
>> >>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>
>> >>>>
>> >>>
>> >>
>> https://docs.google.com/document/d/1F8zve5S78DXcjpPttW89HnqT0M0iKjT6fo9jX57Ef6A/edit#
>> >>>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>>> The proposed solution is:
>> >>>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>>> - *Case 1: B: Contrib vs not: we move all that
>> >> are
>> >>>>>>>>>>> "well"
>> >>>>>>>>>>>>>>>>> tested
>> >>>>>>>>>>>>>>>>>>> and
>> >>>>>>>>>>>>>>>>>>>>>>>>> rename contrib to "incubating" or similar.*
>> >>>>>>>>>>>>>>>>>>>>>>>>> - *Case 2: B:
>> >>>>>>>>>>> Airflow.operators.foo_operator.FooOperator
>> >>>>>>>>>>>>>>>>> could
>> >>>>>>>>>>>>>>>>>>>>>>>>> become airflow.operators.foo.FooOperator*
>> >>>>>>>>>>>>>>>>>>>>>>>>> - *Case 3: C:
>> >>>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>> airflow.contrib.operators.gcp_bigtable_operator.BigTableOperator
>> >>>>>>>>>>>>>>>>>>>> could
>> >>>>>>>>>>>>>>>>>>>>>>>>> become
>> >>>> airflow.gcp.operators.bigtable.BigTableOperator*
>> >>>>>>>>>>>>>>>>>>>>>>>>> - *Case 4: B: no namespace introduction*
>> >>>>>>>>>>>>>>>>>>>>>>>>> - *Case 5: B: Keep "Operator" (and "Sensor")
>> >>>> suffixes
>> >>>>>>>>>>> on
>> >>>>>>>>>>>>>>>>> class
>> >>>>>>>>>>>>>>>>>>> names*
>> >>>>>>>>>>>>>>>>>>>>>>>>> - *Case 6: We will treat isolated cases on
>> >>>> case-by-case
>> >>>>>>>>>>>>> (and
>> >>>>>>>>>>>>>>>>> my
>> >>>>>>>>>>>>>>>>>>> team
>> >>>>>>>>>>>>>>>>>>>>>>> can
>> >>>>>>>>>>>>>>>>>>>>>>>>> do the job of GCP-related operators)*
>> >>>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>>> This is my (binding) +1 vote.
>> >>>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>>> Best regards,
>> >>>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>>> J.
>> >>>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>>> --
>> >>>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>>> Jarek Potiuk
>> >>>>>>>>>>>>>>>>>>>>>>>>> Polidea <https://www.polidea.com/> | Principal
>> >>>>>>>>>>> Software
>> >>>>>>>>>>>>>>>>> Engineer
>> >>>>>>>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>>>>>> M: [+48 660 796 129](tel:+48660796129)
>> >>>>>>>>>>>>>>>>>>>>>>> <[+48660796129](tel:+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/>
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>> --
>> >>>>>>>>>>>>>>>>>> *Kaxil Naik*
>> >>>>>>>>>>>>>>>>>> *Big Data Consultant | DevOps Data Engineer*
>> >>>>>>>>>>>>>>>>>> *Certified *Google Cloud Data Engineer | *Certified*
>> >>> Apache
>> >>>>>>>>>>> Spark
>> >>>>>>>>>>>>> &
>> >>>>>>>>>>>>>>>>> Neo4j
>> >>>>>>>>>>>>>>>>>> Developer
>> >>>>>>>>>>>>>>>>>> *LinkedIn*: https://www.linkedin.com/in/kaxil
>> >>>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>>> --
>> >>>>>>>>>>>>>>>>> *Kaxil Naik*
>> >>>>>>>>>>>>>>>>> *Big Data Consultant | DevOps Data Engineer*
>> >>>>>>>>>>>>>>>>> *Certified *Google Cloud Data Engineer | *Certified*
>> >>> Apache
>> >>>>>>>> Spark
>> >>>>>>>>>>> &
>> >>>>>>>>>>>>>>>>> Neo4j
>> >>>>>>>>>>>>>>>>> Developer
>> >>>>>>>>>>>>>>>>> *LinkedIn*: https://www.linkedin.com/in/kaxil
>> >>>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>>
>> >>>>>>>>>>>>>>
>> >>>>>>>>>>>>>
>> >>>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>>> --
>> >>>>>>>>>>>
>> >>>>>>>>>>> Jarek Potiuk
>> >>>>>>>>>>> Polidea <https://www.polidea.com/> | Principal Software
>> >>> Engineer
>> >>>>>>>>>>>
>> >>>>>>>>>>> M: +48 660 796 129 <+48660796129>
>> >>>>>>>>>>> [image: Polidea] <https://www.polidea.com/>
>> >>>>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>
>> >>>>>>>> --
>> >>>>>>>> *Kaxil Naik*
>> >>>>>>>> *Big Data Consultant | DevOps Data Engineer*
>> >>>>>>>> *Certified *Google Cloud Data Engineer | *Certified* Apache
>> >> Spark &
>> >>>> Neo4j
>> >>>>>>>> Developer
>> >>>>>>>> *LinkedIn*: https://www.linkedin.com/in/kaxil
>> >>>>>>>>
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> --
>> >>>>>>>
>> >>>>>>> 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