Hi Piotrek,

thanks for asking. To be honest, I hope it could be good enough if Flink
could only provide backward compatibility, which is easier than providing
forward compatibility described in the proposal. That is also one of the
reasons why I started this discussion. If, after the discussion, the
community could reach a consensus that backward compatibility is fine
enough, it is also a clear decision for us to avoid any further confusion
and complaints, i.e. make it clear that there is no guarantee for
the downstream vendors to provide backward compatibility of their own
software, they have to maintain implementations with different Flink minor
versions simultaneously. In this case, I would move the proposal about
forward compatibility to the Rejected Alternatives section.

As far as I understood, there are at least three group of users, the first
group is the end users who write Flink job/SQL; the second group is
platform developers who use Flink to build data infrastructure and let
users in the first group submit their jobs; and the third group is
downstream software developers(vendors) who build software (module) that
depends on Flink. Platform developers in the second group will also use the
software provided by the third group in their data infra. The developers
from the second and the third groups play an important role for the
adaption/upgrade of the new Flink version in the industry. There are
compatibility issues between them, afaik, both backward and forward. I was
not able to join the discussion caused by iceberg upgrade issue previously,
after reading the whole story, building the connector with Flink 1.12 will
not solve their problem. It was the forward compatibility issue (built with
1.13 and run on 1.12) that made it difficult for them to upgrade.

Best regards
Jing

On Wed, Dec 29, 2021 at 3:42 PM Piotr Nowojski <pnowoj...@apache.org> wrote:

> Hi Jink,
>
> I haven't yet fully reviewed the FLIP document, but I wanted to clarify
> something.
>
> > Flink Forward Compatibility
> > Based on the previous clarification, Flink forward compatibility should
> mean that Flink jobs or ecosystems like external connectors/formats built
> with newer
> > Flink version Y like 1.15 can be running on an older Flink version X like
> 1.14 with no issue. With this definition, we might realize that the
> original requirement
> > in the thread [1] was asking for Flink forward compatibility, i.e.
> iceberg-flink module compiled with Flink 1.13 wanted to be running on Flink
> 1.12 cluster. And
> > from Flink user perspective, this is a backward compatibility issue. This
> is the same case: Flink forward compatibility equals Flink job/ecosystems
> backward
> > compatibility.
>
> Is it really important to provide this kind of "forward binary"
> compatibility? You are referring to the iceberg example, but the workaround
> there was quite obvious: just build the connector using Flink 1.12. As long
> as the connector is using stable, @Public API, AND assuming we provide
> binary compatibility, it should work fine with Flink 1.13. So to solve this
> user request, we could provide either forward OR backward binary
> compatibility, Right? The question is which one of those is easier to
> provide and explain to the users.
>
> Of course the big missing piece after FLIP-197 is that we haven't agreed on
> any type of binary compatibility.
>
> Best,
> Piotrek
>
> śr., 29 gru 2021 o 14:07 Jing Ge <j...@ververica.com> napisał(a):
>
> > Hi everyone,
> >
> > with great interest I have read all discussions [1][2][3] w.r.t. the
> (API?)
> > compatibility issues. The feedback coming from the Flink user's point of
> > view is very valuable. Many thanks for it. In these discussions, there
> were
> > many explanations that talked about backward and forward compatibility
> and
> > broke down to API and ABI compatibility. Since each time when a developer
> > referred to compatibility, there was an implicit context behind, which
> > might cause confusion, e.g. the forward compatibility mentioned in the
> API
> > compatibility discussion thread[1] was actually the Flink ABI backward
> > compatibility mentioned in FLIP-196. The original requirement posted in
> the
> > API compatibility discussion thread[1] was actually Flink ABI forward
> > compatibility, afaik. I will explain it in the proposal. They were all
> > correct because they talked from different perspectives. But it was hard
> > for audiences to follow it.
> >
> > I’d like to start a discussion about backward/forward compatibility from
> > both users perspective and Flink perspective. I Tried to put myself in
> > users' shoes and then to see whether we could do anything to reduce
> users'
> > effort for upgrading Flink.
> >
> > The proposal contains four parts:
> > - Clarify the definition of API and ABI, backward and forward
> compatibility
> > to make sure everyone is on the same page.
> > - Analyze and classify issues from users' feedback.
> > - Summarize the definition and the gap between the current status and
> what
> > users need.
> > - Proposed changes
> >
> > Please find the details on
> >
> >
> https://cwiki.apache.org/confluence/display/FLINK/FLIP-207%3A+Flink+backward+and+forward+compatibility
> >
> > Looking forward to your feedback. Many thanks.
> >
> > best regards
> > Jing
> >
>

Reply via email to