Python (again a language) has a slower release cycle, fairly strict
backwards compatibility stance (with the ability to opt-in before changes
become the default) and clear ownership for maintenance of each minor
version until end-of-life (so each could be considered an LTS release).
https://devguide.python.org/devcycle/

Cython is more similar to Beam: best-effort compatibility, no LTS, but as a
code-generater rather than a runtime library a developer is mostly free to
upgrade at their own cadence regardless of the surrounding
ecosystem (including downstream projects that take them on as a
dependency).

IIRC, Flink supports the latest N (3?) releases, which are infrequent
enough to cover about 12-18 months.

My take is that Beam should be supportive of LTS releases, but we're not in
a position to commit to it (to the same level we commit to the 6-week
cut-from-head release cycle). But certain users of Beam (which have a large
overlap with the Beam community) could make such commitments as it helps
them (directly or indirectly). Let's give it a try.


On Thu, Apr 8, 2021 at 1:00 PM Robert Burke <rob...@frantil.com> wrote:

> I don't know about other Apache projects but the Go Programming Language
> uses a slower release cadence, two releases a year. Only the last two
> releases are maintained with backports, except for significant security
> issues, which are backported as far back as possible.
>
> Further they divide each release period into clear 3 month "commit" and "
> fix" periods, with the main tree only open to new features in the commit
> phase with the fix phase largely frozen outside of discovered issues.
>
> Beam isn't entirely the same thing as a Programming Language, and
> certainly hasn't had such a rigorous commitment to forward compatibility as
> Go has. There's been a very strong expectation that Go programs must
> continue to compile, and function as expected through new versions of Go,
> and it's standard libraries (and to a lesser extent, arbitrary Go
> packages). But these tenets allow the Go maintainers and contributors to
> avoid LTS as a concept to worry about.
>
> The way I see it, it's not necessarily the number of releases that's the
> problem exactly, but the overall stability of the system. More frequent
> releases "feels" less stable than fewer, even if most of them are
> compatible ona code level. This will vary on the way language ecosystems
> handle dependencies though.
>
> Beam is also multi language, which adjusts concerns. How does GRPC handle
> that? Or protos? (I'm sure there are other examples we can pull from...)
>
>
> On Thu, Apr 8, 2021, 9:31 AM Kenneth Knowles <k...@apache.org> wrote:
>
>> The other obvious question, which I often ask and very rarely research:
>> what do other similar projects do? Does anyone know?
>>
>> On Thu, Apr 8, 2021 at 9:30 AM Kenneth Knowles <k...@apache.org> wrote:
>>
>>> I want to send a short summary of my views. There is a
>>> tension/contradiction that I think is OK:
>>>
>>>  - An LTS series becomes more valuable when more stakeholders care for
>>> it. For those who don't care about LTS, the main thing would be to
>>> highlight major issues that are worth backporting. So having it part of how
>>> we think about things is helpful, even for the people who are not using it
>>> or supporting users of it. And cherrypicks are very easy to open. So I
>>> support building consensus around this.
>>>
>>>  - Anyone can volunteer and perform a point release for any past branch.
>>> IMO if a stakeholder proposed to do the work, we (the Beam community)
>>> should welcome it. Certainly we have no ability to make anyone else do the
>>> point releases or directly fund any work. So I support welcoming such a
>>> contribution but not making unfunded commitments.
>>>
>>> In practice: I think if CompanyX has a customer who wants LTS support,
>>> CompanyX commits to the customer that they will perform LTS support and
>>> CompanyX can be sure that the Beam community welcomes such a contribution,
>>> and their customer can easily confirm Beam community's public position on
>>> it.
>>>
>>> Kenn
>>>
>>> On Thu, Apr 8, 2021 at 1:05 AM Jan Lukavský <je...@seznam.cz> wrote:
>>>
>>>> Understand that, my point was just that we cannot care about API
>>>> changes
>>>> only. What an LTS has to maintain is binary compatibility of state or
>>>> have any kind of upgrade process without the running Pipeline being
>>>> terminated and completely replaced with another one. Bootstrapping the
>>>> state is what is - from my point of view - the most expensive part of
>>>> upgrade with state-incompatibility. If an update to LTS breaks the
>>>> state
>>>> compatibility, then upgrading to the new (bugfixed) LTS version seems
>>>> to
>>>> be (about) the same pain as upgrading to the newest version of Beam.
>>>> That is what somewhat breaks the "LTS" expectations users might have.
>>>> But yes, fixes which break state might not be that frequent, but are
>>>> possible, that's for sure. In that case, we essentially could not
>>>> release a fix, even if it was critical security fix. My question was
>>>> then if these concerns will be somehow part of the proposed LTS support
>>>> process.
>>>>
>>>>   Jan
>>>>
>>>> On 4/7/21 4:23 PM, Elliotte Rusty Harold wrote:
>>>> > On Tue, Apr 6, 2021 at 9:43 PM Jan Lukavský <je...@seznam.cz> wrote:
>>>> >> Hi,
>>>> >> do we know what is the reason users stay on an older version of
>>>> Beam? My guess would be that it is not related to API changes, but more
>>>> likely to state incompatibility. Maybe if we could figure out a way which
>>>> would enable a smooth migration of state (and timers) between Beam
>>>> versions, that might help? The migration would probably have to be
>>>> runner-dependent, but Beam might offer some tooling to make this easier.
>>>> One example would be coder evolution, where we currently do not have the
>>>> option of "reading old way, writing new way" with some
>>>> "coder-version-registry". I suppose there might have been a discussion
>>>> about this in the past, does anyone know of any conclusion?
>>>> >>
>>>> > Different customers have different requirements. The projects and
>>>> > teams I'm talking to simply don't want to invest engineering time in
>>>> > migrating as often as they have to now. They want to be able to ship a
>>>> > working product and not worry about it for a year or more. They
>>>> > recognize the possibility of unforeseen bugs and security issues that
>>>> > might require an update. However they'd like that update to be minimal
>>>> > and not require them to update their own code. Nor do they want to run
>>>> > the risk of performance regressions and newly introduced bugs and
>>>> > security issues.
>>>> >
>>>>
>>>

Reply via email to