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 >