Why is there a urgency, why cant this go into 4.0 Malhar with possibly
other breaking changes?
On Sat, Jul 15, 2017 at 7:57 AM Thomas Weise <t...@apache.org> wrote:

> Discussing what in the future might become stable needs to be a separate
> thread, it will be a much bigger discussion.
>
> The topic here is to relocate the packages. With a few exceptions
> relocation won't affect the semantic versioning. Semantic versioning is
> essentially not effective for Malhar because almost everything is @Evolving
> (and there are reasons for that.. -> separate topic)
>
> I don't really like the idea of creating bw compatibility stubs for the
> follow up PR. It creates even more clutter in the source tree than there
> already is and so here is an alternative suggestion:
>
>
> https://github.com/tweise/apex-malhar/blob/malhar37-compat/shaded-malhar37/pom.xml
>
> Create a shaded artifact that provides the old com.datatorrent.* classes as
> of release 3.7. Users can include that artifact if they don't want to
> change import statements. At the same time they have an incentive to switch
> to the relocated classes to take advantage of bug fixes and new
> functionality.
>
> I will work on the first PR that does the relocate. In the meantime, we can
> finalize what backward compatibility support we want to provide and how.
>
> Thanks,
> Thomas
>
>
>
>
> On Fri, Jul 14, 2017 at 11:33 AM, Pramod Immaneni <pra...@datatorrent.com>
> wrote:
>
> > How about coming up with a list of @Evolving operators that we would like
> > to see in the eventual stable list and move those along with the not
> > @Evolving ones in org.apache.apex with b/w stubs and leave the rest as
> they
> > are. Then have a follow up JIRA for the rest to be moved over to contrib
> > and be deprecated.
> >
> > Thanks
> >
> > On Fri, Jul 14, 2017 at 10:37 AM, Thomas Weise <thomas.we...@gmail.com>
> > wrote:
> >
> > > We need to keep the discussion here on topic, if other things are piled
> > on
> > > top then nothing gets done.
> > >
> > > Most operators today are not stable, they are @Evolving. So perhaps it
> is
> > > necessary to have a separate discussion about that, outside of this
> > thread.
> > > My guess is that there are only a few operators that we could declare
> > > stable. Specifically, under contrib the closest one might have been
> > Kafka,
> > > but that is already superseded by the newer versions.
> > >
> > > Thomas
> > >
> > >
> > > On Fri, Jul 14, 2017 at 10:21 AM, Pramod Immaneni <
> > pra...@datatorrent.com>
> > > wrote:
> > >
> > > > We had a discussion a while back, agreed to relegate non-stable and
> > > > experimental operators to contrib and also added this to contribution
> > > > guidelines. We aexecuted on this and cleaned up the repo by moving
> > > > operators deemed non-suitable for production use at that time to
> > contrib.
> > > > So I wouldn't say the operators that are at the top level today or
> the
> > > ones
> > > > in library are 0.x.x quality. Granted, we may need to do one more
> pass
> > as
> > > > some of the operators may no longer be considered the right
> > > implementations
> > > > with the advent of the windowed operator.
> > > >
> > > > Since contrib used to be the place that housed operators that
> required
> > > > third party libraries, there are some production quality operators in
> > > there
> > > > that need to be pulled out into top level modules.
> > > >
> > > > I think we are in agreement that for operators that we consider
> stable,
> > > we
> > > > should provide a b/w stub. I would add that we strongly consider
> > creating
> > > > the org.apache.apex counterparts of any stable operators that are in
> > > > contrib out in top level modules and have the com.datatorrent stubs
> in
> > > > contrib.
> > > >
> > > > For the operators not considered stable, I would prefer we either
> leave
> > > the
> > > > current package path as is or if we change the package path then
> create
> > > the
> > > > b/w stub as I am not sure how widely they are in use (so, in essence,
> > > > preserve semantic versioning). It would be good if there is a
> followup
> > > JIRA
> > > > that takes a look at what other operators can be moved to contrib
> with
> > > the
> > > > advent of the newer frameworks and understanding.
> > > >
> > > > Thanks
> > > >
> > > > On Fri, Jul 14, 2017 at 9:44 AM, Thomas Weise <t...@apache.org>
> wrote:
> > > >
> > > > > Most of the operators evolve, as is quite clearly indicated by
> > > @Evolving
> > > > > annotations. So while perhaps 0.x.x would be a more appropriate
> > version
> > > > > number, I don't think you can change that.
> > > > >
> > > > > Thomas
> > > > >
> > > > > On Fri, Jul 14, 2017 at 9:35 AM, Vlad Rozov <
> v.ro...@datatorrent.com
> > >
> > > > > wrote:
> > > > >
> > > > > > If entire library is not stable, its version should be 0.x.x and
> > > there
> > > > > > should not be any semantic versioning enabled or implied. It
> > evolves.
> > > > If
> > > > > > some operators are stable as 3.8.x version suggests, the library
> > > should
> > > > > > follow semantic versioning and it is not OK to make a major
> change
> > > that
> > > > > > breaks semantic versioning across the entire library. It is not a
> > > > finding
> > > > > > an excuse not to make a change. For me semantic versioning and
> > > backward
> > > > > > compatibility is more important than a proper package name.
> > > > > >
> > > > > > Thank you,
> > > > > >
> > > > > > Vlad
> > > > > >
> > > > > >
> > > > > > On 7/14/17 09:11, Thomas Weise wrote:
> > > > > >
> > > > > >> Semantic versioning makes sense when you have a stable baseline.
> > As
> > > > long
> > > > > >> as
> > > > > >> frequent fixes need to be made to address basic issues, it makes
> > no
> > > > > sense
> > > > > >> to declare operators stable, which is why they are marked
> > evolving.
> > > > > >>
> > > > > >> Instead of finding reasons to avoid changes that should have
> been
> > > > made a
> > > > > >> long time ago, why not discuss what a "stable operator" is and
> > which
> > > > > ones
> > > > > >> deserve to be in that category. Those are the ones that will get
> > the
> > > > > >> backward compatibility stub.
> > > > > >>
> > > > > >> Thanks,
> > > > > >> Thomas
> > > > > >>
> > > > > >>
> > > > > >> On Fri, Jul 14, 2017 at 8:34 AM, Vlad Rozov <
> > > v.ro...@datatorrent.com>
> > > > > >> wrote:
> > > > > >>
> > > > > >> My preference is to agree that the next Malhar release is 4.0.0
> > and
> > > > make
> > > > > >>> the proposed changes when 3.8.0 goes out. Otherwise why to keep
> > > > > semantic
> > > > > >>> versioning checks on Malhar in case there is no version
> > > > compatibility.
> > > > > >>>
> > > > > >>> Thank you,
> > > > > >>>
> > > > > >>> Vlad
> > > > > >>>
> > > > > >>>
> > > > > >>> On 7/14/17 08:11, Thomas Weise wrote:
> > > > > >>>
> > > > > >>> next release is 3.8.0
> > > > > >>>>
> > > > > >>>> On Fri, Jul 14, 2017 at 7:55 AM, Vlad Rozov <
> > > > v.ro...@datatorrent.com>
> > > > > >>>> wrote:
> > > > > >>>>
> > > > > >>>> next release - 3.9.0 or 4.0.0?
> > > > > >>>>
> > > > > >>>>> Thank you,
> > > > > >>>>>
> > > > > >>>>> Vlad
> > > > > >>>>>
> > > > > >>>>> On 7/13/17 22:25, Thomas Weise wrote:
> > > > > >>>>>
> > > > > >>>>> It is time to resurrect this thread and get going with the
> > work.
> > > > > >>>>>
> > > > > >>>>>> For the next release, I will sign up to do the package move
> in
> > > > > Malhar:
> > > > > >>>>>>
> > > > > >>>>>> https://issues.apache.org/jira/browse/APEXMALHAR-2517
> > > > > >>>>>>
> > > > > >>>>>> In general this will be straightforward; most classes in
> > Malhar
> > > > are
> > > > > >>>>>> marked
> > > > > >>>>>> evolving and it is trivial for users to change import
> > > statements.
> > > > > >>>>>> However,
> > > > > >>>>>> I would suggest to discuss if there are selected operators
> > that
> > > > are
> > > > > >>>>>> worth
> > > > > >>>>>> keeping a backward compatibility stub in the old location.
> > > > > >>>>>>
> > > > > >>>>>> Here is my plan:
> > > > > >>>>>>
> > > > > >>>>>> 1. Relocate all classes in *lib* and *contrib* within one
> PR -
> > > > this
> > > > > is
> > > > > >>>>>> all
> > > > > >>>>>>
> > > > > >>>>>> IDE automated work
> > > > > >>>>>> 2. Add backward compatibility classes, if, any in separate
> PR
> > > > > >>>>>> 3. Create PR for Megh library to reflect moved classes
> > > > > >>>>>>
> > > > > >>>>>> Thanks,
> > > > > >>>>>> Thomas
> > > > > >>>>>>
> > > > > >>>>>>
> > > > > >>>>>>
> > > > > >>>>>> On Wed, Mar 1, 2017 at 2:24 PM, Pramod Immaneni <
> > > > > >>>>>> pra...@datatorrent.com
> > > > > >>>>>> wrote:
> > > > > >>>>>>
> > > > > >>>>>> Inline
> > > > > >>>>>>
> > > > > >>>>>> On Mon, Feb 27, 2017 at 11:03 PM, Thomas Weise <
> > t...@apache.org>
> > > > > >>>>>>> wrote:
> > > > > >>>>>>>
> > > > > >>>>>>> -->
> > > > > >>>>>>>
> > > > > >>>>>>> On Mon, Feb 27, 2017 at 1:27 PM, Pramod Immaneni <
> > > > > >>>>>>>> pra...@datatorrent.com
> > > > > >>>>>>>>
> > > > > >>>>>>>> wrote:
> > > > > >>>>>>>>
> > > > > >>>>>>>> For malhar, for existing operators, I prefer we do this as
> > > part
> > > > of
> > > > > >>>>>>>> the
> > > > > >>>>>>>>
> > > > > >>>>>>>> planned refactoring for breaking the monolith modules into
> > > baby
> > > > > >>>>>>>>>
> > > > > >>>>>>>>> packages
> > > > > >>>>>>>>>
> > > > > >>>>>>>> and would also prefer deprecating the existing operators
> in
> > > > place.
> > > > > >>>>>>>> Refactor into smaller modules was discussed for
> > malhar-contrib
> > > > and
> > > > > >>>>>>>> given
> > > > > >>>>>>>> the overall state of that module I think it is OK to defer
> > > > package
> > > > > >>>>>>>>
> > > > > >>>>>>>> renaming
> > > > > >>>>>>>>
> > > > > >>>>>>> there. I do however prefer to see the package rename
> > addressed
> > > > for
> > > > > >>>>>>>
> > > > > >>>>>>>> other
> > > > > >>>>>>>> modules, especially for the main library module.
> > > > > >>>>>>>>
> > > > > >>>>>>>> Should we consider breaking the library into smaller
> modules
> > > as
> > > > > >>>>>>>> well,
> > > > > >>>>>>>>
> > > > > >>>>>>>> the
> > > > > >>>>>>> file/block operators for example probably can be in their
> own
> > > > > module
> > > > > >>>>>>> from
> > > > > >>>>>>> just an organizational perspective.
> > > > > >>>>>>>
> > > > > >>>>>>>
> > > > > >>>>>>>
> > > > > >>>>>>> This
> > > > > >>>>>>>
> > > > > >>>>>>>> will help us achieve two things. First, the user will see
> > all
> > > > the
> > > > > >>>>>>>>> new
> > > > > >>>>>>>>> changes at once as opposed to dealing with it twice (with
> > > > package
> > > > > >>>>>>>>>
> > > > > >>>>>>>>> rename
> > > > > >>>>>>>>>
> > > > > >>>>>>>> and dependency changes) and second it will allow for a
> > > smoother
> > > > > >>>>>>>> transition
> > > > > >>>>>>>>
> > > > > >>>>>>>> as the existing code will still work in a deprecated
> state.
> > It
> > > > > will
> > > > > >>>>>>>>
> > > > > >>>>>>>>> also
> > > > > >>>>>>>>>
> > > > > >>>>>>>> give a more consistent structure to malhar. For new
> > operators,
> > > > we
> > > > > >>>>>>>> can
> > > > > >>>>>>>> go
> > > > > >>>>>>>> with the new package path but we need to ensure they will
> > get
> > > > > moved
> > > > > >>>>>>>> into
> > > > > >>>>>>>> the baby packages as well.
> > > > > >>>>>>>>
> > > > > >>>>>>>> I think existing operators should be renamed so that git
> > > history
> > > > > >>>>>>>>>
> > > > > >>>>>>>>> remains. A
> > > > > >>>>>>>>
> > > > > >>>>>>> possible solution for backward compatibility could be to
> > > > > subsequently
> > > > > >>>>>>>
> > > > > >>>>>>>> add
> > > > > >>>>>>>> empty subclasses in the previous location (for existing
> > > concrete
> > > > > >>>>>>>>
> > > > > >>>>>>>> operators
> > > > > >>>>>>>>
> > > > > >>>>>>> that we know are actually in use) to simplify migration for
> > > > users.
> > > > > >>>>>>>
> > > > > >>>>>>>>
> > > > > >>>>>>>> Yes we can do that.
> > > > > >>>>>>>>
> > > > > >>>>>>>> For demos, we can modify the paths as the apps are
> typically
> > > > used
> > > > > >>>>>>>
> > > > > >>>>>>> wholesale
> > > > > >>>>>>>>
> > > > > >>>>>>>> and the interface is typically manual interaction.
> > > > > >>>>>>>>
> > > > > >>>>>>>>> For core, if we are adding new api subsystems, like the
> > > > launcher
> > > > > >>>>>>>>> api
> > > > > >>>>>>>>> we
> > > > > >>>>>>>>> added recently for example, we can go with new package
> path
> > > but
> > > > > if
> > > > > >>>>>>>>> we
> > > > > >>>>>>>>>
> > > > > >>>>>>>>> are
> > > > > >>>>>>>>>
> > > > > >>>>>>>> making incremental additions to existing functionality, I
> > feel
> > > > it
> > > > > is
> > > > > >>>>>>>> better
> > > > > >>>>>>>>
> > > > > >>>>>>>> to keep it in the same package. I also prefer we keep the
> > > > package
> > > > > of
> > > > > >>>>>>>>
> > > > > >>>>>>>>> the
> > > > > >>>>>>>>>
> > > > > >>>>>>>> implementation classes consistent with api, for
> > > > understandability
> > > > > >>>>>>>> and
> > > > > >>>>>>>>
> > > > > >>>>>>>> readability of the code. So, for example, we don't change
> > > > package
> > > > > >>>>>>>>> path
> > > > > >>>>>>>>>
> > > > > >>>>>>>>> of
> > > > > >>>>>>>>>
> > > > > >>>>>>>> LogicalPlan as it is an implementation of DAG. It is
> > > subjective,
> > > > > but
> > > > > >>>>>>>> it
> > > > > >>>>>>>>
> > > > > >>>>>>>> will be good if we can also do the same with classes
> closely
> > > > > related
> > > > > >>>>>>>>> to
> > > > > >>>>>>>>>
> > > > > >>>>>>>>> the
> > > > > >>>>>>>>>
> > > > > >>>>>>>> implementation classes as well. Maybe we can moving these
> > on a
> > > > > >>>>>>>> package
> > > > > >>>>>>>>
> > > > > >>>>>>>>> by
> > > > > >>>>>>>>>
> > > > > >>>>>>>> package basis, like everything in
> > com.datatorrent.stram.engine
> > > > > could
> > > > > >>>>>>>> be
> > > > > >>>>>>>>
> > > > > >>>>>>>> moved. For completely internal components like buffer
> > server,
> > > we
> > > > > can
> > > > > >>>>>>>>>
> > > > > >>>>>>>>> move
> > > > > >>>>>>>>>
> > > > > >>>>>>>> them wholesale. We can consider moving all api and
> classes,
> > > when
> > > > > we
> > > > > >>>>>>>> go
> > > > > >>>>>>>> to
> > > > > >>>>>>>> next major release but would like to see if we can find a
> > way
> > > to
> > > > > >>>>>>>> support
> > > > > >>>>>>>> existing api for one more major release in deprecated
> mode.
> > > > > >>>>>>>>
> > > > > >>>>>>>> The point of the major release is to enable backward
> > > > incompatible
> > > > > >>>>>>>>>
> > > > > >>>>>>>>> changes
> > > > > >>>>>>>> and I don't think it is realistic to support the existing
> > API
> > > > for
> > > > > >>>>>>>> another
> > > > > >>>>>>>> major release. IMO it is also not necessary as most
> existing
> > > > > >>>>>>>> application
> > > > > >>>>>>>> code refers to operators, attributes and the application
> > > > > interface.
> > > > > >>>>>>>>
> > > > > >>>>>>>> Perhaps
> > > > > >>>>>>>>
> > > > > >>>>>>> it is possible to keep those around as interface extensions
> > to
> > > > help
> > > > > >>>>>>>
> > > > > >>>>>>>> migration. Custom operators may need to be migrated to
> > reflect
> > > > API
> > > > > >>>>>>>>
> > > > > >>>>>>>> changes,
> > > > > >>>>>>>>
> > > > > >>>>>>> and I would consider that a reasonable task for operator
> > > > developers
> > > > > >>>>>>> as
> > > > > >>>>>>>
> > > > > >>>>>>>> part
> > > > > >>>>>>>>
> > > > > >>>>>>> of a major upgrade.
> > > > > >>>>>>>
> > > > > >>>>>>>> It would be good if we can keep them as deprecated
> interface
> > > > > >>>>>>>> extensions
> > > > > >>>>>>>>
> > > > > >>>>>>>> for
> > > > > >>>>>>> one release to provide a smoother transition.
> > > > > >>>>>>>
> > > > > >>>>>>>
> > > > > >>>>>>> API and implementation in engine are kept separate
> > > intentionally.
> > > > > >>>>>>> They
> > > > > >>>>>>>
> > > > > >>>>>>> reside in different packages today, so I don't see a
> problem
> > > > > renaming
> > > > > >>>>>>>> com.datatorrent.stram.engine as you say, even when the API
> > > > cannot
> > > > > be
> > > > > >>>>>>>> touched right away.
> > > > > >>>>>>>>
> > > > > >>>>>>>> They are different packages but sharing a common prefix
> with
> > > api
> > > > > >>>>>>>> will
> > > > > >>>>>>>> be
> > > > > >>>>>>>>
> > > > > >>>>>>>> helpful to someone new to codebase in terms of
> readability.
> > > Not
> > > > a
> > > > > >>>>>>> big
> > > > > >>>>>>> deal
> > > > > >>>>>>> and can be changed.
> > > > > >>>>>>>
> > > > > >>>>>>>
> > > > > >>>>>>> Thanks
> > > > > >>>>>>>
> > > > > >>>>>>> On Mon, Feb 27, 2017 at 7:39 AM, Thomas Weise <
> > t...@apache.org>
> > > > > >>>>>>>> wrote:
> > > > > >>>>>>>>
> > > > > >>>>>>>>> Hi,
> > > > > >>>>>>>>>
> > > > > >>>>>>>>> This topic has come up on several PRs and I think it
> > > warrants a
> > > > > >>>>>>>>>>
> > > > > >>>>>>>>>> broader
> > > > > >>>>>>>>>>
> > > > > >>>>>>>>> discussion.
> > > > > >>>>>>>>
> > > > > >>>>>>>> At the time of incubation, the decision was to defer
> change
> > of
> > > > > Java
> > > > > >>>>>>>>>
> > > > > >>>>>>>>>> packages from com.datatorrent to org.apache.apex till
> next
> > > > major
> > > > > >>>>>>>>>>
> > > > > >>>>>>>>>> release
> > > > > >>>>>>>>>>
> > > > > >>>>>>>>> to
> > > > > >>>>>>>>>
> > > > > >>>>>>>>> ensure backward compatibility for users.
> > > > > >>>>>>>>>
> > > > > >>>>>>>>>> Unfortunately that has lead to some confusion, as
> > > contributors
> > > > > >>>>>>>>>>
> > > > > >>>>>>>>>> continue
> > > > > >>>>>>>>>>
> > > > > >>>>>>>>> to
> > > > > >>>>>>>>
> > > > > >>>>>>>> add new code under legacy packages.
> > > > > >>>>>>>>>
> > > > > >>>>>>>>>> It is also a wider issue that examples for using Apex
> > > continue
> > > > > to
> > > > > >>>>>>>>>>
> > > > > >>>>>>>>>> refer
> > > > > >>>>>>>>>>
> > > > > >>>>>>>>> to
> > > > > >>>>>>>>
> > > > > >>>>>>>> com.datatorrent packages, nearly one year after
> graduation.
> > > More
> > > > > and
> > > > > >>>>>>>>>
> > > > > >>>>>>>>>> more
> > > > > >>>>>>>>>>
> > > > > >>>>>>>>> user code is being built on top of something that needs
> to
> > > > > change,
> > > > > >>>>>>>>> the
> > > > > >>>>>>>>>
> > > > > >>>>>>>>> can
> > > > > >>>>>>>>
> > > > > >>>>>>>> is being kicked down the road and users will face more
> > changes
> > > > > >>>>>>>>> later.
> > > > > >>>>>>>>>
> > > > > >>>>>>>>>> I would like to propose the following:
> > > > > >>>>>>>>>>
> > > > > >>>>>>>>>> 1. All new code has to be submitted under
> org.apache.apex
> > > > > packages
> > > > > >>>>>>>>>>
> > > > > >>>>>>>>>> 2. Not all code is under backward compatibility
> > restriction
> > > > and
> > > > > in
> > > > > >>>>>>>>>>
> > > > > >>>>>>>>>> those
> > > > > >>>>>>>>>>
> > > > > >>>>>>>>> cases we can rename the packages right away. Examples:
> > buffer
> > > > > >>>>>>>>> server,
> > > > > >>>>>>>>>
> > > > > >>>>>>>>> engine, demos/examples, benchmarks
> > > > > >>>>>>>>>>
> > > > > >>>>>>>>>> 3. Discuss when the core API and operators can be
> changed.
> > > For
> > > > > >>>>>>>>>>
> > > > > >>>>>>>>>> operators
> > > > > >>>>>>>>>>
> > > > > >>>>>>>>> we
> > > > > >>>>>>>>>
> > > > > >>>>>>>>> have a bit more freedom to do changes before a major
> > release
> > > as
> > > > > >>>>>>>>> most
> > > > > >>>>>>>>>
> > > > > >>>>>>>>>> of
> > > > > >>>>>>>>>>
> > > > > >>>>>>>>> them are marked @Evolving and users have the ability to
> > > > continue
> > > > > >>>>>>>>
> > > > > >>>>>>>> using
> > > > > >>>>>>>>>
> > > > > >>>>>>>>> prior version of Malhar with newer engine due to engine
> > > > backward
> > > > > >>>>>>>>
> > > > > >>>>>>>> compatibility guarantee.
> > > > > >>>>>>>>>
> > > > > >>>>>>>>>> Thanks,
> > > > > >>>>>>>>>> Thomas
> > > > > >>>>>>>>>>
> > > > > >>>>>>>>>>
> > > > > >>>>>>>>>>
> > > > > >>>>>>>>>>
> > > > > >
> > > > >
> > > >
> > >
> >
>

Reply via email to