I am not against the Idea of using @Stable instead of marking every new
@Evolving. I agree that, it would convenient to have @Stable.

Just raised the point which needs further discussion, so that we get
suggestions from the mentors and community.

~ Yogi

On 14 December 2015 at 11:23, Chandni Singh <[email protected]> wrote:

> Can we define some criteria for deciding when to consider operator as
> @Stable?
> Yes, we should follow Hadoop's example and formalize some criteria.
>
> [It would be difficult for an open source project to track which user is
> using which operators. So, above strategy may not work. ]
> Hadoop is an open source project which actually created these annotations
> and it's widely used. I think any new development takes time to  become
> stable.
> If the operators are NOT marked as @Stable, users will know that when they
> upgrade backward compatibility may be broken.
> I think it has the same affect of marking every new operator/class as
> @Evolving. The benefit of checking semantic versioning of "Stable"
> operators is that they are currently fewer in number and IMO easy to manage
> and new development will be implicitly "Evolving".
>
> Chandni
>
>
>
> On Sun, Dec 13, 2015 at 9:11 PM, Yogi Devendra <[email protected]>
> wrote:
>
> > When to mark certain operator as @Stable is not clearly defined.
> >
> > Can we define some criteria for deciding when to consider operator as
> > @Stable?
> >
> > For example one criteria could be, if operator is running for >1 year in
> > production environment for some user. Can we come with some strategy like
> > this?
> > [It would be difficult for an open source project to track which user is
> > using which operators. So, above strategy may not work. ]
> >
> > ~ Yogi
> >
> > On 14 December 2015 at 05:42, Timothy Farkas <[email protected]>
> wrote:
> >
> > > +1
> > > On Dec 13, 2015 4:08 PM, "Chandni Singh" <[email protected]>
> > wrote:
> > >
> > > > Hi,
> > > >
> > > > In Malhar there are  relatively smaller number of  operators that we
> > use
> > > in
> > > > our demo applications, customer applications, POCs etc that are
> mature.
> > > >
> > > > The library is cluttered with operators especially in lib/util,
> > lib/algo,
> > > > lib/math packages which can be cleaned up by either removing them or
> > > > improving them but that breaks semantic versioning.
> > > >
> > > > When we add new operators/utilities it takes certain time for them to
> > > > mature. Japicmp doesn't help because it doesn't honor @Evolving
> > @Unstable
> > > > annotations for now.
> > > >
> > > > I wanted to propose that we add an annotation, let's say, re-use
> > hadoop's
> > > > @Stable and mark the operators which are stable with it and perform
> > > semver
> > > > check on just these operators.
> > > >
> > > > The 0.7.0 version of japi cmp has the support for inclusions (as well
> > as
> > > > exclusions) based on annotations.
> > > >
> > > > Here is the info:
> > > > https://github.com/siom79/japicmp/issues/88
> > > >
> > > > The reason I am inclined to the inclusion approach is that there are
> > > > relatively smaller number of operators which IMO are stable. A lot of
> > > them
> > > > aren't.
> > > > So instead of going and marking so many as Evolving, we will mark
> > > > relatively few of them as stable.
> > > >
> > > > Also new development can be facilitated by this. We wouldn't have to
> > add
> > > > @Evolving to everything which is new. Instead we will mark it @Stable
> > > when
> > > > it is.
> > > >
> > > > Please let me know what you think?
> > > >
> > > > Thanks,
> > > > Chandni
> > > >
> > >
> >
>

Reply via email to