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