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/>