Valid points Sergio. I changed my mind and agree that getting rid of
contrib is a better idea.

On Thu, Jul 25, 2019 at 7:39 PM Sergio Kef <sergio...@gmail.com> wrote:

> My 2 cents regarding contrib.
>
> I don't see many benefits of keeping a contrib module. As a user it is
> super confusing that for example we have 2 slack operators. one in main
> operators, another in contrib.
>
> The idea that we add experimental features is fine, but in this case it
> lacks of good implementation (example airflow.operators.S3_hook now uses
> airflow.contrib.hooks.aws_hook). Also, I think feature selection should not
> be based on "maturity" but on project strategy as to what is "core" airflow
> and what it's not.
>
> This opens the space to discuss about whether it makes sense for all those
> operators and hooks to be part of the main airflow project - or would it be
> better to create an "airflow-contrib" project where experimental plugins
> can be added (sets of hooks, operators, views, macros, etc - eg AWS plugin
> can get the whole package of dependencies, hooks and operators). This
> brings some benefits - eg easier deployment, faster testing and also some
> challenges, like what do we do with operators that use totally different
> hooks.
>
> So if something is not well tested, let's test it, if it's not up to our
> standards let's create tickets and improve it. If it's not useful enough,
> lets remove it (and potentially create something like airflow-contrib with
> experimental plugins or similar). Having it in a different folder doesn't
> improve the quality somehow, neither makes development more agile, it just
> sweeps the problems under the carpet and creates an extra problem of
> inconsistency.
>
> S.
>
> On Wed, 17 Jul 2019 at 08:13, Jarek Potiuk <jarek.pot...@polidea.com>
> wrote:
>
> > Since we are just about to release 1.10.4 and my team is gearing up to
> some
> > "summer" cleanup of GCP operators - I would like to revive this thread
> and
> > reach some binding conclusions on this finally
> >
> > Kamil prepared this document:
> >
> >
> https://docs.google.com/document/d/1F8zve5S78DXcjpPttW89HnqT0M0iKjT6fo9jX57Ef6A/edit#
> > describing
> > the ideas around the new structure/naming of operators/hooks (with
> > backwards compatibility mechanisms).
> >
> > Hopefully there are no big contentions and even if there are some
> different
> > opinions, they are not too strong to block us from reaching consensus.
> >
> > From what I saw in this thread this is the preferred solution:
> >
> >    - *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)*
> >
> > Regarding deprecation mechanism - there are some different opinions on
> zope
> > vs. custom deprecation but I think we can leave decision there to the
> first
> > PR time when we see it actually working and how much code it adds.
> >
> > If there are no big "noooooo " within a day, I will convert it into
> > (smaller and official) AIP proposal, run a vote and make JIRA issues out
> of
> > that.
> >
> > J.
> >
> > On Mon, Jun 17, 2019 at 1:37 PM Jarek Potiuk <jarek.pot...@polidea.com>
> > wrote:
> >
> > > Yeah. I think it's worth even if it's a bit of boilerplate code. I
> think
> > > we might be a bit more friendly and welcoming to new/accidental users
> who
> > > just want to make a small PR and are not regular users. Those people
> will
> > > often use IDEs (and Pycharm is by far the most popular in python
> world).
> > > Similarly to AIP-7 I think if those people have lower barrier entry and
> > > better guidance, we will only all benefit from that :).
> > >
> > > J.
> > >
> > > On Tue, Jun 11, 2019 at 8:53 PM Kamil Breguła <
> kamil.breg...@polidea.com
> > >
> > > wrote:
> > >
> > >> If I added a warning in the method that it calls immediately, IDE
> > >> still could not detect everything correctly. The user is not able to
> > >> see the error message in the IDE. The warning appears in the wrong
> > >> place.
> > >> https://i.imgur.com/CSqP1wU.png
> > >>
> > >> Adding a new import allows you to avoid some IDE warnings, but the
> > >> problem remains that this module is not detected as deprecated
> > >> https://i.imgur.com/CSqP1wU.png
> > >> .
> > >>
> > >> On Thu, Jun 6, 2019 at 11:32 AM Ash Berlin-Taylor <a...@apache.org>
> > wrote:
> > >> >
> > >> > I hate IDEs :(
> > >> >
> > >> > What does the IDE show if you package up the deprecation warning in
> > >> some way in your solution (i.e. the warning.warn isn't directly in the
> > >> module source)? Alternatively adding `from solution2.new import *`
> into
> > >> solution2.deprecated may help the IDE?
> > >> >
> > >> > -a
> > >> >
> > >> > > On 5 Jun 2019, at 17:41, Kamil Breguła <kamil.breg...@polidea.com
> >
> > >> wrote:
> > >> > >
> > >> > > I have done a deep investigation of this issue. Please, look at
> the
> > >> > > beginning of chapter "Case #7".
> > >> > >
> > >> > > I prepared a repository with simple demo and also shared a
> > screenshot
> > >> from
> > >> > > my IDE.
> > >> > > Photo: https://imgur.com/a/mRaWpQm
> > >> > > Repo: https://github.com/mik-laj/airflow-deprecation-sample
> > >> > > Today I looked again at this project. I recently updated the IDE
> to
> > >> the
> > >> > > latest version - IntelliJ IDEA 2019.1.2 (Ultimate Edition). The
> > issue
> > >> still
> > >> > > exists.
> > >> > > I made additional photos today: https://imgur.com/a/4fcmkVX
> > >> > >
> > >> > > IDE uses statistical analysis of the code and gets lost in
> external
> > >> > > libraries.
> > >> > >
> > >> > > If you have questions, I will be happy to give you further
> > >> explanations.
> > >> > >
> > >> > > On Wed, Jun 5, 2019 at 4:30 PM Ash Berlin-Taylor <a...@apache.org>
> > >> wrote:
> > >> > >
> > >> > >>> Case 7: Zope deprecation or not
> > >> > >>> *B*: I prefer to use Kamil's in-house hack than zope, but I feel
> > we
> > >> could
> > >> > >>> improve it slightly to remove a bit of boilerplate - it looks
> like
> > >> the
> > >> > >>> warning.warn() message should be very similar in all deprecation
> > >> cases
> > >> > >> and
> > >> > >>> possibly we can define it in one place (providing that
> > >> DepracationWarning
> > >> > >>> will continue to work well with IDEs)
> > >> > >>
> > >> > >> At this point wouldn't or home-rolled solution be very similar to
> > >> > >> zope.deprecation (which is already a dep of Airflow)?
> > >> > >>
> > >> > >> Also are we sure that zope.deprecation isn't supported by an IDE?
> > It
> > >> still
> > >> > >> issues a warning.warn. (The example docs in zope.deprecation show
> > >> messing
> > >> > >> about with sys.modules but that isn't needed.)
> > >> > >>
> > >> > >> https://gist.github.com/ashb/327a79d7c6c1f5a2344cd1812a8ee92d
> > shows
> > >> a
> > >> > >> formatted example:
> > >> > >>
> > >> > >> ```
> > >> > >> #Place this as airflow/foo.py
> > >> > >> import zope.deprecation
> > >> > >> zope.deprecation.moved('airflow.settings', 'version 2')
> > >> > >> ```
> > >> > >>
> > >> > >> And then when you import that module you get:
> > >> > >>
> > >> > >> ```
> > >> > >> /Users/ash/.virtualenvs/airflow/bin/ipython:1:
> DeprecationWarning:
> > >> > >> airflow.foo has moved to airflow.settings. Import of airflow.foo
> > will
> > >> > >> become unsupported in version 2
> > >> > >>  #!/Users/ash/.virtualenvs/airflow/bin/python3.7
> > >> > >>
> > >> > >> ```
> > >> > >>
> > >> > >> That should work fine with IDE?
> > >> > >>
> > >> > >>
> > >> > >>> On 5 Jun 2019, at 14:56, Jarek Potiuk <jarek.pot...@polidea.com
> >
> > >> wrote:
> > >> > >>>
> > >> > >>> I think it's very important to discuss this and choose the right
> > >> approach
> > >> > >>> and follow up quickly. This is very important to introduce some
> > >> sanity in
> > >> > >>> the structure of 2.0.0.
> > >> > >>> I propose that anyone with a strong opinion voices his or her
> > >> concerns
> > >> > >> here
> > >> > >>> and then maybe a week from now we can get to a consensus and
> vote
> > >> on the
> > >> > >>> direction we take?
> > >> > >>>
> > >> > >>> My preferences (but I can be convinced to change some of my
> > >> choices) are:
> > >> > >>>
> > >> > >>> Case 1: (contrib vs not)
> > >> > >>> *B* (move all that are "well" tested): I think having
> "incubator"
> > >> kind of
> > >> > >>> approach for not super tested/documented but still usable code
> is
> > >> useful.
> > >> > >>> Though we would have to establish some objective criteria and
> > >> describe a
> > >> > >>> "growing from incubation" process.
> > >> > >>>
> > >> > >>> Case 2 airflow.operators.foo_operator.FooOperator could become
> > >> > >>> *A:*  airflow.operators.foo.FooOperator
> > >> > >>>
> > >> > >>> Case 3:
> > >> airflow.contrib.operators.gcp_bigtable_operator.BigTableOperator
> > >> > >>> could become
> > >> > >>> *C*: airflow.integration.gcp.operators.bigtable.BigTableOperator
> > >> > >>>
> > >> > >>> Case 4: (separate packages/namesapces)
> > >> > >>> *B:* no namespaces - i think we are very far from modularisation
> > to
> > >> > >> happen
> > >> > >>> (and how) and it might get never implemented so there are no
> real
> > >> > >> benefits
> > >> > >>> I see now.
> > >> > >>>
> > >> > >>> Case 5: "Operator" suffix on class names
> > >> > >>> *B*: I prefer to keep B as this will be much easier when you
> > search
> > >> for
> > >> > >>> class using your IDE.
> > >> > >>>
> > >> > >>> Case 6: "Isolated" renames
> > >> > >>> *Rename*: We should align names of those operators.
> > >> > >>>
> > >> > >>> Case 7: Zope deprecation or not
> > >> > >>> *B*: I prefer to use Kamil's in-house hack than zope, but I feel
> > we
> > >> could
> > >> > >>> improve it slightly to remove a bit of boilerplate - it looks
> like
> > >> the
> > >> > >>> warning.warn() message should be very similar in all deprecation
> > >> cases
> > >> > >> and
> > >> > >>> possibly we can define it in one place (providing that
> > >> DepracationWarning
> > >> > >>> will continue to work well with IDEs)
> > >> > >>>
> > >> > >>> J,
> > >> > >>>
> > >> > >>> On Tue, Jun 4, 2019 at 2:11 PM Kamil Breguła <
> > >> kamil.breg...@polidea.com>
> > >> > >>> wrote:
> > >> > >>>
> > >> > >>>> I created AIP-21
> > >> > >>>>
> > >> > >>>>
> > >> > >>
> > >>
> >
> https://cwiki.apache.org/confluence/display/AIRFLOW/AIP-21%3A+Changes+in+import+paths
> > >> > >>>> This is the same document as above, I just deleted my opinions
> > >> (summary
> > >> > >>>> sections) and work plan.
> > >> > >>>>
> > >> > >>>>
> > >> > >>>> On Fri, Apr 19, 2019 at 2:18 PM Jarek Potiuk <
> > >> jarek.pot...@polidea.com>
> > >> > >>>> wrote:
> > >> > >>>>
> > >> > >>>>> Thanks Kamil! Excellent analysis!
> > >> > >>>>>
> > >> > >>>>> My preferences:
> > >> > >>>>>
> > >> > >>>>> Case 1: (contrib vs not)
> > >> > >>>>> B (move all that are "well" tested): I think having
> "incubator"
> > >> kind of
> > >> > >>>>> approach for not super tested/documented but still usable code
> > is
> > >> > >> useful.
> > >> > >>>>> Though we would have to establish some objective criteria and
> > >> describe
> > >> > >> a
> > >> > >>>>> "growing from incubation" process.
> > >> > >>>>>
> > >> > >>>>> Case 2 airflow.operators.foo_operator.FooOperator could become
> > >> > >>>>> A:  airflow.operators.foo.FooOperator
> > >> > >>>>>
> > >> > >>>>> Case 3:
> > >> > >> airflow.contrib.operators.gcp_bigtable_operator.BigTableOperator
> > >> > >>>>> could become
> > >> > >>>>> C: airflow.integration.gcp.operators.bigtable.BigTableOperator
> > >> > >>>>>
> > >> > >>>>> Case 4: (separate packages/namesapces)
> > >> > >>>>> B: no namespaces - i think we are very far from modularisation
> > to
> > >> > >> happen
> > >> > >>>>> (and how) and it might get never implemented so there are no
> > real
> > >> > >>>> benefits
> > >> > >>>>> I see now.
> > >> > >>>>>
> > >> > >>>>> Case 5: "Operator" suffix on class names
> > >> > >>>>> B: I prefer to keep B as this will be much easier when you
> > search
> > >> for
> > >> > >>>> class
> > >> > >>>>> using your IDE.
> > >> > >>>>>
> > >> > >>>>> Case 7: Zope deprecation or not
> > >> > >>>>> B: I prefer to use Kamil's in-house hack than zope, but I feel
> > we
> > >> could
> > >> > >>>>> improve it slightly to remove a bit of boilerplate - it looks
> > >> like the
> > >> > >>>>> warning.warn() message should be very similar in all
> deprecation
> > >> cases
> > >> > >>>> and
> > >> > >>>>> possibly we can define it in one place (providing that
> > >> > >> DepracationWarning
> > >> > >>>>> will continue to work well with IDEs)
> > >> > >>>>>
> > >> > >>>>>
> > >> > >>>>>
> > >> > >>>>>
> > >> > >>>>> On Fri, Apr 19, 2019 at 12:36 AM Kamil Breguła <
> > >> > >>>> kamil.breg...@polidea.com>
> > >> > >>>>> wrote:
> > >> > >>>>>
> > >> > >>>>>> Inline comment
> > >> > >>>>>>
> > >> > >>>>>> On Fri, Apr 19, 2019 at 12:23 AM Arthur Wiedmer <
> > >> > >>>>> arthur.wied...@gmail.com>
> > >> > >>>>>> wrote:
> > >> > >>>>>>
> > >> > >>>>>>>
> > >> > >>>>>>>>>>> Case #5 Are we talking about the class name or the file
> > >> name?
> > >> > >>>>> The
> > >> > >>>>>>>> class
> > >> > >>>>>>>>>>> name is fine to me, but we could remove _operator from
> the
> > >> > >>>> file
> > >> > >>>>>>> name.
> > >> > >>>>>>>>>>>
> > >> > >>>>>>>>>>
> > >> > >>>>>>>>>> Case #2 describes the change of file names
> > >> > >>>>>>>>>> Case #5 describes the change of class names
> > >> > >>>>>>>>>>
> > >> > >>>>>>>>>> I added examples to two cases to better describe the
> > changes.
> > >> > >>>>>>>>>>
> > >> > >>>>>>>>>
> > >> > >>>>>>>>> Thank you. I guess I see it for file names, but I am
> > wondering
> > >> > >>>>> about
> > >> > >>>>>>> the
> > >> > >>>>>>>>> operators and name collisions.
> > >> > >>>>>>>>> Say I need both the HiveOperator and I inline a custom
> > >> operator
> > >> > >>>> for
> > >> > >>>>>>>> which I
> > >> > >>>>>>>>> need a hive hook.
> > >> > >>>>>>>>> # Would you recommmend the following? Or does case #5 only
> > >> apply
> > >> > >>>> to
> > >> > >>>>>>>>> Operators?
> > >> > >>>>>>>>> from airflow.operators.hive import Hive as HiveOperator
> > >> > >>>>>>>>> from airfow.hooks.hive import Hive as HiveHook
> > >> > >>>>>>>>>
> > >> > >>>>>>>>> I was just thinking it might be nice to be able to import
> > >> what I
> > >> > >>>>> need
> > >> > >>>>>>>>> without renaming and not worry too much about names
> > shadowing
> > >> > >>>>> others.
> > >> > >>>>>>>>> Especially if I am new-ish to Apache Airflow.
> > >> > >>>>>>>>>
> > >> > >>>>>>>>>
> > >> > >>>>>>>> I think that the operator should describe the
> behavior(verb),
> > >> hook
> > >> > >>>>>> should
> > >> > >>>>>>>> describe a service(noun). These are other parts of speech.
> > >> > >>>>>>>> In my opinion, HiveOperator should be named
> HiveExecuteQuery.
> > >> Hook
> > >> > >>>>> will
> > >> > >>>>>>> be
> > >> > >>>>>>>> called Hive. Then there will be no name conflicts.
> > >> > >>>>>>>>
> > >> > >>>>>>>
> > >> > >>>>>>> But we will still provide the backwards compatibility for a
> > >> while
> > >> > >>>> with
> > >> > >>>>>>> aliases to the old names, correct?
> > >> > >>>>>>>
> > >> > >>>>>>
> > >> > >>>>>> Yes. It is possible to provide backward compatibility also in
> > >> this
> > >> > >>>> case.
> > >> > >>>>>>
> > >> > >>>>>>
> > >> > >>>>>> --
> > >> > >>>>>>
> > >> > >>>>>> Kamil Breguła
> > >> > >>>>>> Polidea <https://www.polidea.com/> | Software Engineer
> > >> > >>>>>>
> > >> > >>>>>> M: +48 505 458 451 <+48505458451>
> > >> > >>>>>> E: kamil.breg...@polidea.com
> > >> > >>>>>> [image: Polidea] <https://www.polidea.com/>
> > >> > >>>>>>
> > >> > >>>>>> We create human & business stories through technology.
> > >> > >>>>>> Check out our projects! <https://www.polidea.com/our-work>
> > >> > >>>>>> [image: Github] <https://github.com/Polidea> [image:
> Facebook]
> > >> > >>>>>> <https://www.facebook.com/Polidea.Software> [image: Twitter]
> > >> > >>>>>> <https://twitter.com/polidea> [image: Linkedin]
> > >> > >>>>>> <https://www.linkedin.com/company/polidea> [image:
> Instagram]
> > >> > >>>>>> <https://instagram.com/polidea> [image: Behance]
> > >> > >>>>>> <https://www.behance.net/polidea>
> > >> > >>>>>>
> > >> > >>>>>
> > >> > >>>>>
> > >> > >>>>> --
> > >> > >>>>>
> > >> > >>>>> Jarek Potiuk
> > >> > >>>>> Polidea <https://www.polidea.com/> | Principal Software
> > Engineer
> > >> > >>>>>
> > >> > >>>>> M: +48 660 796 129 <+48660796129>
> > >> > >>>>> E: jarek.pot...@polidea.com
> > >> > >>>>>
> > >> > >>>>
> > >> > >>>>
> > >> > >>>> --
> > >> > >>>>
> > >> > >>>> Kamil Breguła
> > >> > >>>> Polidea <https://www.polidea.com/> | Software Engineer
> > >> > >>>>
> > >> > >>>> M: +48 505 458 451 <+48505458451>
> > >> > >>>> E: kamil.breg...@polidea.com
> > >> > >>>> [image: Polidea] <https://www.polidea.com/>
> > >> > >>>>
> > >> > >>>> We create human & business stories through technology.
> > >> > >>>> Check out our projects! <https://www.polidea.com/our-work>
> > >> > >>>> [image: Github] <https://github.com/Polidea> [image: Facebook]
> > >> > >>>> <https://www.facebook.com/Polidea.Software> [image: Twitter]
> > >> > >>>> <https://twitter.com/polidea> [image: Linkedin]
> > >> > >>>> <https://www.linkedin.com/company/polidea> [image: Instagram]
> > >> > >>>> <https://instagram.com/polidea> [image: Behance]
> > >> > >>>> <https://www.behance.net/polidea>
> > >> > >>>>
> > >> > >>>
> > >> > >>>
> > >> > >>> --
> > >> > >>>
> > >> > >>> Jarek Potiuk
> > >> > >>> Polidea <https://www.polidea.com/> | Principal Software
> Engineer
> > >> > >>>
> > >> > >>> M: +48 660 796 129 <+48660796129>
> > >> > >>> E: jarek.pot...@polidea.com
> > >> > >>
> > >> > >>
> > >> > >
> > >> > > --
> > >> > >
> > >> > > Kamil Breguła
> > >> > > Polidea <https://www.polidea.com/> | Software Engineer
> > >> > >
> > >> > > M: +48 505 458 451 <+48505458451>
> > >> > > E: kamil.breg...@polidea.com
> > >> > > [image: Polidea] <https://www.polidea.com/>
> > >> > >
> > >> > > We create human & business stories through technology.
> > >> > > Check out our projects! <https://www.polidea.com/our-work>
> > >> > > [image: Github] <https://github.com/Polidea> [image: Facebook]
> > >> > > <https://www.facebook.com/Polidea.Software> [image: Twitter]
> > >> > > <https://twitter.com/polidea> [image: Linkedin]
> > >> > > <https://www.linkedin.com/company/polidea> [image: Instagram]
> > >> > > <https://instagram.com/polidea> [image: Behance]
> > >> > > <https://www.behance.net/polidea>
> > >> >
> > >>
> > >
> > >
> > > --
> > >
> > > 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