+1 for the idea of starting with an existing release branch But I have another question: Are we ready to make LTS releases? Today, do most/all users (that upgrade) move to the latest release because they really need new features or other changes that would be incompatible with an LTS branch or do we see a sizable amount of users that would feel content with the changes an LTS release can provide them? Did we do a poll or have sufficient feedback?
Thanks On Fri, Oct 19, 2018 at 3:24 PM Kenneth Knowles <k...@apache.org> wrote: > Pinging this. I think Beam should have a live LTS branch. > > I want to suggest a different approach: choose something already released > to be LTS. This way it has had some usage and we have some confidence there > are no critical problems. > > So how about we make 2.7 the first LTS branch? > > Kenn > > On Wed, Oct 10, 2018 at 8:18 AM Romain Manni-Bucau <rmannibu...@gmail.com> > wrote: > >> some times Ago JB spoke about Beam roadmap. I tend to think this >> discussion does no make any sense without a clear roadmap. The rational >> here is that a roadmap will give you the future changes >> and the potential future versions (we spoke a few times of Beam 3). This >> does not have to be very factual, a slice of 3 months is ok at that stage. >> However, if you don't have that, >> you can say 2.8 will be LTS and we support 2 versions but if 2.9 and 2.10 >> introduce breaking changes, then >> it leads to a LTS 2.8 no more supported. This is just an example but the >> ratio "cost(project) / gain(user)" 100% depends the plans for the project, >> technically there is no blocker to support all releases >> for life but would any PMC have the will to release beam 0.x now? The >> point of a LTS for an user is to plan investment, if we are in previous >> case it does not help IMHO. >> So maybe grab back the Beam enhancement plans and assign them some fix >> versions before defining what support model of Beam can be. >> >> Just the 2 cts of an outsider. >> >> Romain Manni-Bucau >> @rmannibucau <https://twitter.com/rmannibucau> | Blog >> <https://rmannibucau.metawerx.net/> | Old Blog >> <http://rmannibucau.wordpress.com> | Github >> <https://github.com/rmannibucau> | LinkedIn >> <https://www.linkedin.com/in/rmannibucau> | Book >> <https://www.packtpub.com/application-development/java-ee-8-high-performance> >> >> >> Le mer. 10 oct. 2018 à 17:10, Chamikara Jayalath <chamik...@google.com> >> a écrit : >> >>> >>> >>> 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 >>>>> >> >>>>> >> >>>>> >>>>