+1 having an option storing every version of a connector in one repo Also, it would be good to have the major(.minor) version of the connected system in the name of the connector jar, depending of the compatibility. I think this compatibility is mostly system dependent.
Thanks, Peter On Fri, Sep 30, 2022, 09:32 Martijn Visser <martijnvis...@apache.org> wrote: > Hi Peter, > > I think this also depends on the support SLA that the technology that you > connect to provides. For example, with Flink and Elasticsearch, we choose > to follow Elasticsearch supported versions. So that means that when support > for Elasticsearch 8 is introduced, support for Elasticsearch 6 should be > dropped (since Elastic only support the last major version and the latest > minor version prior to that) > > I don't see value in having different connectors for Iceberg 0.14 and 0.15 > in separate repositories. I think that will confuse the user. I would > expect that with modules you should be able to have support for multiple > versions in one repository. > > Best regards, > > Martijn > > On Fri, Sep 30, 2022 at 7:44 AM Péter Váry <peter.vary.apa...@gmail.com> > wrote: > > > Thanks for the quick response! > > > > Would this mean, that we have different connectors for Iceberg 0.14, and > > Iceberg 0.15. Would these different versions kept in different > repository? > > > > My feeling is that this model is fine for the stable/slow moving systems > > like Hive/HBase. For other systems, which are evolving faster, this is > less > > than ideal. > > > > For those, who have more knowledge about the Flink ecosystem: How do you > > feel? What is the distribution of the connectors between the slow moving > > and the fast moving systems? > > > > Thanks, Peter > > > > > > On Thu, Sep 29, 2022, 16:46 Danny Cranmer <dannycran...@apache.org> > wrote: > > > > > If you look at ElasticSearch [1] as an example there are different > > variants > > > of the connector depending on the "connected" system: > > > - flink-connector-elasticsearch6 > > > - flink-connector-elasticsearch7 > > > > > > Looks like Hive and HBase follow a similar pattern in the main Flink > > repo/ > > > > > > [1] https://github.com/apache/flink-connector-elasticsearch > > > > > > On Thu, Sep 29, 2022 at 3:17 PM Péter Váry < > peter.vary.apa...@gmail.com> > > > wrote: > > > > > > > Hi Team, > > > > > > > > Just joining the conversation for the first time, so pardon me if I > > > repeat > > > > already answered questions. > > > > > > > > It might be already discussed, but I think the version for the > > > "connected" > > > > system could be important as well. > > > > > > > > There might be some API changes between Iceberg 0.14.2, and 1.0.0, > > which > > > > would require as to rewrite part of the code for the Flink-Iceberg > > > > connector. > > > > It would be important for the users: > > > > - Which Flink version(s) are this connector working with? > > > > - Which Iceberg version(s) are this connector working with? > > > > - Which code version we have for this connector? > > > > > > > > Does this make sense? What is the community's experience with the > > > connected > > > > systems? Are they stable enough for omitting their version number > from > > > the > > > > naming of the connectors? Would this worth the proliferation of the > > > > versions? > > > > > > > > Thanks, > > > > Peter > > > > > > > > Chesnay Schepler <ches...@apache.org> ezt írta (időpont: 2022. > szept. > > > 29., > > > > Cs, 14:11): > > > > > > > > > 2) No; the branch names would not have a Flink version in them; > > v1.0.0, > > > > > v1.0.1 etc. > > > > > > > > > > On 29/09/2022 14:03, Martijn Visser wrote: > > > > > > If I summarize it correctly, that means that: > > > > > > > > > > > > 1. The versioning scheme would be <major.minor.patch connector > > > > > > version>-<major.minor supported Flink version>, where there will > > > never > > > > > be a > > > > > > patch release for a minor version if a newer minor version > already > > > > > exists. > > > > > > E.g., 1.0.0-1.15; 1.0.1-1.15; 1.1.0-1.15; 1.2.0-1.15; > > > > > > > > > > > > 2. The branch naming scheme would be > > > > vmajor.minor-flink-major.flink-minor > > > > > > E.g., v1.0.0-1.15; v1.0.1-1.15; v1.1.0-1.15; v1.2.0-1.15; > > > > > > > > > > > > I would +1 that. > > > > > > > > > > > > Best regards, > > > > > > > > > > > > Martijn > > > > > > > > > > > > On Tue, Sep 20, 2022 at 2:21 PM Chesnay Schepler < > > ches...@apache.org > > > > > > > > > wrote: > > > > > > > > > > > >> > After 1.16, only patches are accepted for 1.2.0-1.15. > > > > > >> > > > > > >> I feel like this is a misunderstanding that both you and Danny > ran > > > > into. > > > > > >> > > > > > >> What I meant in the original proposal is that the last 2 _major_ > > > > > >> /connector /versions are supported, with the latest receiving > > > > additional > > > > > >> features. > > > > > >> (Provided that the previous major version still works against a > > > > > >> currently supported Flink version!) > > > > > >> There will never be patch releases for a minor version if a > newer > > > > minor > > > > > >> version exists. > > > > > >> > > > > > >> IOW, the minor/patch releases within a major version do not > form a > > > > tree > > > > > >> (like in Flink), but a line. > > > > > >> > > > > > >> 1.0.0 -> 1.0.1 -> 1.1.0 -> 1.2.0 -> ... > > > > > >> NOT > > > > > >> 1.0.0 -> 1.0.1 -> 1.0.2 > > > > > >> |-----> 1.1.0 -> 1.1.1 > > > > > >> > > > > > >> If we actually follow semantic versioning then it's just not > > > necessary > > > > > >> to publish a patch for a previous version. > > > > > >> > > > > > >> So if 2.x exists, then (the latest) 2.x gets features and > patches, > > > and > > > > > >> the latest 1.x gets patches. > > > > > >> > > > > > >> I hope that clears things up. > > > > > >> > > > > > >> On 20/09/2022 14:00, Jing Ge wrote: > > > > > >>> Hi, > > > > > >>> > > > > > >>> Thanks for starting this discussion. It is an interesting one > and > > > > yeah, > > > > > >> it > > > > > >>> is a tough topic. It seems like a centralized release version > > > schema > > > > > >>> control for decentralized connector development ;-) > > > > > >>> > > > > > >>> In general, I like this idea, not because it is a good one but > > > > because > > > > > >>> there might be no better one(That's life!). The solution gives > > > users > > > > an > > > > > >>> easy life with the price of extra effort on the developer's > part. > > > But > > > > > it > > > > > >> is > > > > > >>> a chicken and egg situation, i.e. developer friendly vs. user > > > > friendly. > > > > > >> If > > > > > >>> it is hard for developers to move forward, it will also be > > > difficult > > > > > for > > > > > >>> users to get a new release, even if the version schema is user > > > > > friendly. > > > > > >>> > > > > > >>> I'd like to raise some questions/concerns to make sure we are > on > > > the > > > > > same > > > > > >>> page. > > > > > >>> > > > > > >>> @Chesnay > > > > > >>> > > > > > >>> c1) Imagine we have 2.0.0 for 1.15: > > > > > >>> > > > > > >>> - 2.0.0-1.14 (patches) > > > > > >>> - 2.0.0-1.15 (feature and patches) > > > > > >>> ===> new major release targeting 1.16 and we need to change > code > > > for > > > > > new > > > > > >> API > > > > > >>> - 2.0.0-1.14 (no support) > > > > > >>> - 2.0.0-1.15 (patches) > > > > > >>> - 2.0.1-1.15 (new patches) > > > > > >>> - 2.1.0-1.16 (feature and patches) > > > > > >>> > > > > > >>> There is no more 2.1.0-1.15 because only the latest version is > > > > > receiving > > > > > >>> new features. > > > > > >>> > > > > > >>> b1) Even if in some special cases that we need to break the > rule, > > > we > > > > > >> should > > > > > >>> avoid confusing users: > > > > > >>> > > > > > >>> ===> new major release targeting 1.16 and we need to change > code > > > for > > > > > new > > > > > >> API > > > > > >>> - 2.0.0-1.14 (no support) > > > > > >>> - 2.0.0-1.15 (patches) > > > > > >>> - 2.1.0-1.16 (feature and patches) > > > > > >>> ===> now we want to break the rule to add features to the > > > penultimate > > > > > >>> version > > > > > >>> - 2.0.0-1.14 (no support) > > > > > >>> - 2.0.0-1.15 (patches) > > > > > >>> - 2.2.0-1.15 (patches, new features) // 2.1.0-1.15 vs. > > > > > 2.2.0-1.15, > > > > > >>> have to choose 2.2.0-1.15 to avoid conflict > > > > > >>> - 2.1.0-1.16 (feature and patches) > > > > > >>> > > > > > >>> we have two options: 2.1.0-1.15 vs. 2.2.0-1.15, both will > confuse > > > > > users: > > > > > >>> - Using 2.1.0-1.15 will conflict with the existing 2.1.0-1.16. > > The > > > > > >>> connector version of "2.1.0-1.16" is actually 2.1.0 which means > > it > > > > has > > > > > >> the > > > > > >>> same code as 2.1.0-1.15 but in this case, it contains upgraded > > > code. > > > > > >>> - Using 2.2.0-1.15 will skip 2.1.0-1.15. Actually, it needs to > > skip > > > > all > > > > > >>> occupied minor-1.16 versions, heads-up release manager! > > > > > >>> > > > > > >>> c2) Allow me using your example: > > > > > >>> > > > > > >>> ===> new major release targeting 1.16 > > > > > >>> - 1.2.0-1.14 (no support; unsupported Flink version) > > > > > >>> - 1.2.0-1.15 (patches; supported until either 3.0 of 1.17, > > > whichever > > > > > >>> happens first) > > > > > >>> - 2.0.0-1.15 (feature and patches) > > > > > >>> - 2.0.0-1.16 (feature and patches) > > > > > >>> > > > > > >>> I didn't understand the part of "2.0.0-1.15 (features and > > > patches)". > > > > > >> After > > > > > >>> 1.16, only patches are accepted for 1.2.0-1.15. > > > > > >>> It should be clearly defined how to bump up the connector's > > version > > > > > >> number > > > > > >>> for the new Flink version. If the connector major number would > > > always > > > > > >> bump > > > > > >>> up, it would make less sense to use the Flink version as > postfix. > > > > With > > > > > >> the > > > > > >>> same example, it should be: > > > > > >>> > > > > > >>> ===> new major release targeting 1.16 > > > > > >>> - 1.2.0-1.14 (no support; unsupported Flink version) > > > > > >>> - 1.2.0-1.15 (patches; supported until either 3.0 of 1.17, > > > whichever > > > > > >>> happens first) > > > > > >>> - 1.2.1-1.15 (new patches) > > > > > >>> - 1.3.0-1.16 (feature and patches) > > > > > >>> - 1.4.0-1.16 (feature and patches, new features) > > > > > >>> - 2.0.0-1.16 (feature and patches, major upgrade of > > connector > > > > > >> itself) > > > > > >>> or > > > > > >>> > > > > > >>> - 1.2.0-1.14 (patches) > > > > > >>> - 1.2.0-1.15 (feature and patches) > > > > > >>> - 2.0.0 -1.15 (feature and patches, major upgrade of > > > connector > > > > > >> itself) > > > > > >>> ===> new major release targeting 1.16 > > > > > >>> - 1.2.0-1.14 (no support; unsupported Flink version) > > > > > >>> - 2.0.0-1.15 (patches) > > > > > >>> - 2.0.1-1.15 (new patches) > > > > > >>> - 2.1.0-1.16 (feature and patches) > > > > > >>> - 2.2.0-1.16 (feature and patches, new features) > > > > > >>> > > > > > >>> i.e. commonly, there should be no connector major version > change > > > when > > > > > >> using > > > > > >>> the Flink version postfix as the version schema. Special > > > cases(rarely > > > > > >>> happens) are obviously allowed. > > > > > >>> > > > > > >>> Best regards, > > > > > >>> Jing > > > > > >>> > > > > > >>> On Tue, Sep 20, 2022 at 10:57 AM Martijn Visser< > > > > > martijnvis...@apache.org > > > > > >>> > > > > > >>> wrote: > > > > > >>> > > > > > >>>> Hi all, > > > > > >>>> > > > > > >>>> This is a tough topic, I also had to write things down a > couple > > of > > > > > >> times. > > > > > >>>> To summarize and add my thoughts: > > > > > >>>> > > > > > >>>> a) I think everyone is agreeing that "Only the last 2 versions > > of > > > a > > > > > >>>> connector are supported per supported Flink version, with only > > the > > > > > >> latest > > > > > >>>> version receiving new features". In the current situation, > that > > > > means > > > > > >> that > > > > > >>>> Flink 1.14 and Flink 1.15 would be supported for connectors. > > This > > > > > >> results > > > > > >>>> in a maximum of 4 supported connector versions. > > > > > >>>> > > > > > >>>> b1) In an ideal world, I would have liked Flink's APIs that > are > > > used > > > > > by > > > > > >>>> connectors to be versioned (that's why there's now a Sink V1 > > and a > > > > > Sink > > > > > >>>> V2). However, we're not there yet. > > > > > >>>> > > > > > >>>> b2) With regards to the remark of using @Interal APIs, one > thing > > > > that > > > > > we > > > > > >>>> agreed to in previous discussions is that connectors shouldn't > > > need > > > > to > > > > > >> rely > > > > > >>>> on @Interal APIs so that the connector surface also > stabilizes. > > > > > >>>> > > > > > >>>> b3) In the end, I think what matters the most is the user's > > > > perception > > > > > >> on > > > > > >>>> versioning. So the first thing to establish would be the > > > versioning > > > > > for > > > > > >>>> connectors itself. So you would indeed have a > > <major.minor.patch> > > > > > >> scheme. > > > > > >>>> Next is the compatibility of that scheme with a version of > > Flink. > > > I > > > > do > > > > > >> like > > > > > >>>> Chesnay's approach for using the Scala suffixes idea. So you > > would > > > > > have > > > > > >>>> <major.minor.patch connector>_<major.minor Flink version>. In > > the > > > > > >> currently > > > > > >>>> externalized Elasticsearch connector, we would end up with > > > > 3.0.0_1.14 > > > > > >> and > > > > > >>>> 3.0.0_1.15 as first released versions. If a new Flink version > > > would > > > > be > > > > > >>>> released that doesn't require code changes to the connector, > the > > > > > >> released > > > > > >>>> version would be 3.0.0_1.16. That means that there have been > no > > > > > >> connector > > > > > >>>> code changes (no patches, no new features) when comparing this > > > > across > > > > > >>>> different Flink versions. > > > > > >>>> > > > > > >>>> b4) Now using the example that Chesnay provided (yet slightly > > > > modified > > > > > >> to > > > > > >>>> match it with the Elasticsearch example I've used above), > there > > > > exists > > > > > >> an > > > > > >>>> Elasticsearch connector 3.0.0_1.15. Now in Flink 1.16, > there's a > > > new > > > > > API > > > > > >>>> that we want to use, which is a test util. It would result in > > > > version > > > > > >>>> 3.1.0_1.16 for the new Flink version. Like Chesnay said, for > the > > > > sake > > > > > of > > > > > >>>> argument, at the same time we also had some pending changes > for > > > the > > > > > 1.15 > > > > > >>>> connector (let's say exclusive to 1.15; some workaround for a > > bug > > > or > > > > > >> smth), > > > > > >>>> so we would also end up with 3.1.0-1.15. I agree with Danny > that > > > we > > > > > >> should > > > > > >>>> avoid this situation: the perception of the user would be that > > > > there's > > > > > >> no > > > > > >>>> divergence between the 3.1.0 version, except the compatible > > Flink > > > > > >> version. > > > > > >>>> I really am wondering how often we will run in that situation. > > > From > > > > > what > > > > > >>>> I've seen so far with connectors is that bug fixes always end > up > > > in > > > > > both > > > > > >>>> the release branch and the master branch. The only exceptions > > are > > > > test > > > > > >>>> stabilities or documentation fixes, but if we only resolve > > these, > > > > they > > > > > >>>> wouldn't need to be released. If such a special occasion would > > > > occur, > > > > > I > > > > > >>>> would be inclined to go for a hotfix approach, where you would > > end > > > > up > > > > > >> with > > > > > >>>> 3.0.0.1_1.15. > > > > > >>>> > > > > > >>>> c) Branch wise, I think we should end up with > <major.minor.patch > > > > > >>>> connector>_<major.minor Flink version>. So again the > > Elasticsearch > > > > > >> example, > > > > > >>>> at this moment there would be 3.0.0_1.14 and 3.0.0_1.15 > > branches. > > > > > >>>> > > > > > >>>> Best regards, > > > > > >>>> > > > > > >>>> Martijn > > > > > >>>> > > > > > > > > > > > > > > > > > > > >