On Wed, Oct 10, 2018 at 2:56 AM Robert Bradshaw <rober...@google.com> wrote:

> On Wed, Oct 10, 2018 at 9:37 AM Ismaël Mejía <ieme...@gmail.com> wrote:
>
>> The simplest thing we can do is just to pin all the deps of the LTS
>> and not move them in any maintenance release if not a strong reason to
>> do so.
>>
>> The next subject is to make maintainers aware of which release will be
>> the LTS in advance so they decide what to do with the dependencies
>> versions. In my previous mail I mentioned all the possible cases that
>> can happen with dependencies and it is clear that one unified policy
>> won’t satisfy every one. So better let the maintainers (who can also
>> ask for user feedback in the ML) to decide about  versions before the
>> release.
>>
>> Alexey’s question is still a really important issue, and has been so
>> far ignored. What happens with the ‘Experimental’ APIs in the LTS.
>> Options are:
>>
>> (1) We keep consistent with Experimental which means that they are
>> still not guarantees (note that this does not mean that they will be
>> broken arbitrarily).
>> (2) We are consistent with the LTS approach which makes them ‘non
>> experimental’ for the LTS so we will guarantee the functionality/API
>> stable.
>>
>> I personally have conflicted opinions I would like to favor (1) but
>> this is not consistent with the whole idea of LTS so probably (2) is
>> wiser.
>>
>
> Yeah, I think (2) is the only viable option.
>

I think important thing here is that future releases on a  LTS branch will
be patch (bugfix) releases so I don't think we can/should do
API/functionality changes (even if the change is experimental and/or
backwards compatible).

I think same goes for dependency changes. If the change is to fix a known
bug we can do that in a patch release but if it's to add more functionality
probably that should come in a new minor release instead of a patch
release.

This is why I think we should be bit careful about "rushed" changes to
major functionalities of Beam going into LTS releases. Just my 2 cents.

Thanks,
Cham


>
>
>> Finally I also worry about Tim’s remarks on performance and quality,
>> even if some of these things effectively can be fixed in a subsequent
>> LTS release. Users will probably prefer a LTS to start with Beam and
>> if the performance/quality of the LTS, this can hurt perception of the
>> project.
>>
>
> Yes, for this reason I think it's important to consider what goes into an
> LTS as well as what happens after. Almost by definition, using an LTS is
> choosing stability over cutting edge features. I'd rather major feature X
> goes in after LTS, and lives in a couple of releases gaining fixes and
> improvements before being released as part of the next LTS, than quickly
> making it into an LTS while brand new (both due to the time period before
> we refine it, and the extra work of porting refinements back).
>
> Or maybe LTS-users are unlikely to pick up a x.y.0 release anyway, waiting
> for at least x.y.1?
>
> Come to think of it, do we even have to designate releases at LTS at the
> time of release? Perhaps we could instead just keep with our normal release
> cadence, and periodically choose one of them as LTS once we've confirmed
> its stability out in the wild and start backporting to it. (I can think of
> several cons with this approach as well, e.g. generally it's easier to
> backport bugfixes at the time a bugfix is done in master rather than
> swapping in context at a later date, but just thought I'd throw it out
> there.)
>
> On Wed, Oct 10, 2018 at 4:53 AM Kenneth Knowles <k...@apache.org> wrote:
>> >
>> > I've seen two mentions that "rushing" is contrary to the goals of LTS.
>> But I wouldn't worry about this. The fact is there is almost nothing you
>> can do to stabilize *prior* to cutting the LTS branch. Stability comes from
>> the branch being long-lived and having multiple releases.
>> >
>> > (I think this is pretty much my version of what JB is saying)
>> >
>> > What a conservative user will do if 2.8.x is declared LTS is to start
>> using the 2.8.x branch after it has had a couple bugfix releases. I don't
>> think it is useful or possible to try for an "extra stable" 2.x.0.
>> >
>> > The arguments about supporting the most widely used versions of runner
>> backends apply regardless of LTS. We should support them if we have the
>> resources to do so.
>> >
>> > Kenn
>> >
>> > On Tue, Oct 9, 2018 at 4:57 PM Ahmet Altay <al...@google.com> wrote:
>> >>
>> >>
>> >>
>> >> On Fri, Oct 5, 2018 at 4:38 AM, Jean-Baptiste Onofré <j...@nanthrax.net>
>> wrote:
>> >>>
>> >>> Hi,
>> >>>
>> >>> I think we have to remember what it's a LTS. A LTS is clearly a branch
>> >>> that we guarantee to have fixes on it for a long period of time.
>> >>>
>> >>>
>> >>> It doesn't mean that LTS == unique release. We can do a bunch of
>> >>> releases on a LTS branch, the only constraint is to avoid to introduce
>> >>> breaking changes.
>> >>
>> >>
>> >> I agree with this perspective. Thank you for sharing this. However the
>> other commenters also had a good point. Requiring users to upgrade their
>> runner version maybe incompatible with the goals of an LTS branch. Ideally
>> the fixes here should be very minimal and targeted.
>> >>
>> >>>
>> >>>
>> >>> So, IMHO, the key part is not release, it's branch.
>> >>>
>> >>> The first thing to decide is the branch.
>> >>>
>> >>> Instead of talking about 2.8.0 or 2.9.0, I would prepare a 2.8.x LTS
>> >>> branch. It's a branch where we will cherry-pick some important fixes
>> in
>> >>> the future and where we will cut release. It's the approach I use in
>> >>> other Apache projects (especially Karaf) and it works fine.
>> >>
>> >>
>> >> JB, does Karaf has a documented process that we can re-use? If not
>> could you explain a bit more?
>> >>
>> >> Is the proposal here to prepare 2.8.x LTS branch and make a 2.8.0
>> release out of that?
>> >>
>> >>>
>> >>>
>> >>> Just my $0.01
>> >>>
>> >>> Regards
>> >>> JB
>> >>>
>> >>> On 05/10/2018 12:14, Robert Bradshaw wrote:
>> >>> > On Fri, Oct 5, 2018 at 3:59 AM Chamikara Jayalath <
>> chamik...@google.com
>> >>> > <mailto:chamik...@google.com>> wrote:
>> >>> >
>> >>> >
>> >>> >     On Thu, Oct 4, 2018 at 9:39 AM Ahmet Altay <al...@google.com
>> >>> >     <mailto:al...@google.com>> wrote:
>> >>> >
>> >>> >         I agree that LTS releases require more thought. Thank you
>> for
>> >>> >         raising these questions. What other open questions do we
>> have
>> >>> >         related LTS releases?
>> >>> >
>> >>> >         One way to do this would be to add them to a particular
>> tracking
>> >>> >         list (e.g. 2.9.0 blocking list) that way we would be ready
>> for
>> >>> >         an LTS release ahead of time.
>> >>> >
>> >>> >         Related to dependencies, I agree with Thomas. If we block on
>> >>> >         waiting for dependencies, we may end up taking a long time
>> >>> >         before making any LTS release. And the reality of Beam
>> releases
>> >>> >         right now is that there are no supported releases today
>> that and
>> >>> >         in the long term that might hurt user trust. In my opinion,
>> we
>> >>> >         need to fix that sooner rather than later.
>> >>> >
>> >>> >
>> >>> >     Agree on the idea of focussing on stability instead of feature
>> set
>> >>> >     when it comes to LTS releases. Based on the previous discussion
>> on
>> >>> >     this [1] looks like the intended audience is enterprise
>> customers
>> >>> >     that would like to maintain a stable environment and that
>> usually
>> >>> >     have a long testing cycle before deploying a new version. Seems
>> >>> >     like, rushing in features  or dependency upgrades for an LTS
>> release
>> >>> >     will be counterintuitive for such use cases.
>> >>> >
>> >>> >     On the other hand, I think a part of Ismaël point was that all
>> major
>> >>> >     features of Beam (Spark Runner, Flink Runner, Kafka IO, etc ..)
>> >>> >     should be supportable for the duration of the time Beam LTS
>> release
>> >>> >     is supported (1 year based on [1]). If a major dependency is
>> >>> >     expected to become unsupported within an year, it makes sense to
>> >>> >     upgrade that before the LTS release. I suggest we do this at
>> least
>> >>> >     one release before the planned LTS release (so 2.9.0 if we want
>> to
>> >>> >     make 2.10.0 a LTS release) so that we have all major
>> >>> >     dependency/feature updates battle tested before committing to
>> them.
>> >>> >
>> >>> >
>> >>> > Dependencies are a significant concern. What happens if one of our
>> >>> > dependencies has no version they're going to support for a year
>> hence?
>> >>> > It could happen that there's never a time when all our dependencies
>> will
>> >>> > be supported for at least a year as of any given date. And rushing
>> to
>> >>> > get the "latest" version of a dependency in is often contrary to the
>> >>> > goals of an LTS. (Better to have those depend on the battle-hardened
>> >>> > versions.)
>> >>> >
>> >>> > The long-term goal is probably to avoid pinning specific versions as
>> >>> > much as possible. E.g. if we worked with Flink 1.5 or 1.6
>> (whichever the
>> >>> > user provided), and considered backporting support for 1.7 when it
>> came
>> >>> > out, we'd be in much better shape here. How feasible this is
>> depends on
>> >>> > how backwards-compatible the dependency is.
>> >>> >
>> >>> > On the other hand, forcing a user to upgrade a (user-visible, which
>> in
>> >>> > particular includes runners) dependency seems contrary to the goals
>> of
>> >>> > an LTS. Even if that dependency becomes unsupported.
>> >>> >
>> >>> >
>> >>>
>> >>> --
>> >>> Jean-Baptiste Onofré
>> >>> jbono...@apache.org
>> >>> http://blog.nanthrax.net
>> >>> Talend - http://www.talend.com
>> >>
>> >>
>>
>

Reply via email to