Thanks Pasquale, I personally think everything related to Kamelets should be on Camel-Kamelets repository. So I would move it there. Are there any relationship with the website and the CRDs? Do we need to modify something in terms of docs? Thanks. --Andrea Cosentino ----------------------------------Apache Camel PMC ChairApache Karaf CommitterApache Servicemix PMC MemberEmail: ancosen1985@yahoo.comTwitter: @oscerd2Github: oscerd
On Wednesday, September 18, 2024 at 03:17:12 PM GMT+2, Pasquale Congiusti <pasquale.congiu...@gmail.com> wrote: Hello again. Since we did not yet reach an agreement on where to have the CRD spec, I've made a draft PR to show what exactly is the code we'll be required to manage [1]. We can decide to keep it where it is, on Kamelets catalog project or either move to Camel or a brand new subproject. If we keep it where it is, mind that there is a circular dependency reference between Camel-Kamelets and Camel core (mainly due to JBang). Maybe it would make sense to move Camel JBang off the core as Otavio is advocating, in order to have a clean chain of dependencies, ie, Camel > Camel-Kamelets > Camel JBang (but I guess this would be a separate thread and work stream). Cheers, Pasquale. [1] https://github.com/apache/camel-kamelets/pull/2203 On Tue, Sep 10, 2024 at 11:27 AM Pasquale Congiusti < pasquale.congiu...@gmail.com> wrote: > Hello, > replies inline. > > On Tue, Sep 10, 2024 at 9:14 AM Christoph Deppisch > <cfrea...@googlemail.com.invalid> wrote: > >> > 1. Move the spec into another separate project >> I think you wrote that the Java CRD model is not part of this new >> sub-project. Why is this? Can't we just also have this as a Java artifact >> as part of the sub-project, too? On the downside having a sub-project >> creates yet another release lifecycle with yet another versioning that >> users need to keep in sync. But the CRD has been quite stable in the past >> so there is not many breaking changes and releases expected I guess. >> >> > The problem is the release versioning scheme. Kubernetes CRDs have adopted > a different approach from the semantic version which is the one required to > release Maven CRD artifacts. Basically, although we have a v1 in Kubernetes > CRD, we can introduce non breaking compatibility changes in the same > version. However, if we want to release a new Maven artifact we must bump > at least the patch version number (ie, 1.0.1). We may introduce such > dependency in the new module, but it would require to be aligned with the > Camel versioning and be released accordingly at each release as well. If we > have this into the Kamelet Catalog or the core, we will reuse the same > release instead. > > >> > 2. Move the spec into Kamelets >> I think we are also talking about CRDs that are not related to Kamelets >> (e.g. Integration), right? I think for some of the CRDs the Kamelet >> catalog >> is not a natural fit >> >> > No, I was only planning to move Kamelets CRD. > > >> > 3. Move the spec to the core >> If this move includes the CRDs itself (not only the Java model) I think >> this move would not be a good solution because Camel K would need to wait >> for a new Camel release to be able to change its own operator CRDs and >> this >> feels very weird IMO (the same applies for solution #2). Also the >> auto-generation tooling for CRDs is quite operator specific and might not >> fit well into a Java based project like Camel core. >> >> > No, it would not be a problem. The release cadence of CRD specification > must be independent from the core release cadence. This is particularly > valid as we're talking about a stable version and we do expect no breaking > compatibility changes, if any. You may be confused with the release of the > Maven dependency (which is just a tool). Each project can and should use > the CRD according to its own specific requirements. Camel K would copy the > Kamelet CRD specification from the latest stable and it won't depend on the > Maven tool. > > >> Overall I must say there is no solution that just fits altogether but >> solution #1 seems to be the best option IMO. As mentioned I would try to >> also include the Java CRD model into the separate project, too. The >> question is if we gain much of a relief with that compared to #4 that just >> keeps the status quo >> >> >> Am Fr., 6. Sept. 2024 um 14:46 Uhr schrieb Pasquale Congiusti < >> pasquale.congiu...@gmail.com>: >> >> > Thanks Otavio, >> > >> > On Fri, Sep 6, 2024 at 2:17 PM Otavio Rodolfo Piske < >> angusyo...@gmail.com> >> > wrote: >> > >> > > Hi, >> > > >> > > I understand the motivations for the change and, as I have expressed >> in a >> > > few discussions in the past, I am a strong -1 with this change. >> > > >> > > Personally I feel that Camel Core is already far too big ... to the >> point >> > > that affects our ability to have a code base that is clean, well >> > designed, >> > > well performing and elegant. We already suffer with a lot of code >> > > duplication and low cohesion in the core project and already struggle >> to >> > > maintain reasonably decent stability for our tests. >> > > >> > > >> > I understand your concert and I agree about the complex managment of the >> > core, as mentioned in my previous email. That was the reason why I was >> > advocating to have the spec into the Kamelet catalog subproject, which >> is >> > where it seems most natural fit. >> > >> > The real solution should be probably to have yet another subproject >> only to >> > manage the CRDs, because this is an API spec widely used by different >> > components: Camel K (which is the one using its Kubernetes features), >> core >> > Camel, Kamelets, JBang and in theory, any other external tool out there >> > (I'm thinking for instance to UI such as Kaoto, Karavan and other new >> > projects such as Knative which are experimenting directly with >> Kamelets). >> > This project would only maintain the specification, without requiring >> any >> > particular release process (just tag according the supported versions, >> so >> > far v1 and soon to be removed v1Alpha1). The downside with this approach >> > would be that we would not have a java CRD dependency, or, this one >> should >> > be maintained into Kamelet catalog subproject. This is mainly used for >> > tooling in Java (Jbang, UIs, etc). >> > >> > >> > > Although I understand we are talking about CRDs and that is not "code >> per >> > > se", I am particularly concerned with the growth of complexity of the >> > core >> > > project. Specially in terms of build time dependencies between >> modules. I >> > > would *hate* to go back those early 3.x days, when a build of Camel >> would >> > > take several minutes to complete (even though 4.x is much better, we >> > still >> > > have work to do [1] [2]). >> > > >> > > >> > Technically speaking there would be no compilation, as I think we should >> > just maintain some tool to autogenerate the spec as it happens now in >> Camel >> > K. However, it would be yet another little drop into the already complex >> > project management if we add into the core. >> > >> > >> > > Instead, what I truly would like to see is us promoting Camel JBang >> as a >> > > sub-project (either as a sub-project in its own or as a part of a >> > > tooling-focused sub-project) [3] and then moving these CRDs there. >> > > >> > > 1. https://issues.apache.org/jira/browse/CAMEL-18701 >> > > 2. https://issues.apache.org/jira/browse/CAMEL-19504 >> > > 3. https://issues.apache.org/jira/browse/CAMEL-20265 >> > > >> > > >> > It would not make sense either, as written above, the spec is something >> > used among different projects. >> > >> > My preferred solutions at this stage would be the following: >> > >> > 1. Move the spec into another separate project >> > 2. Move the spec into Kamelets >> > 3. Move the spec to the core >> > 4. Keep status quo >> > >> > >> > > Kind regards >> > > >> > > On Tue, Sep 3, 2024 at 10:41 AM Pasquale Congiusti < >> > > pasquale.congiu...@gmail.com> wrote: >> > > >> > > > Thanks Christoph. >> > > > >> > > > From Camel K perspective there won't be any "logical" problem. In >> the >> > > sense >> > > > that it will copy the specification from the new source when it has >> to >> > > > bundle the Kamelets CRDs. As the API versioning model is different >> from >> > > the >> > > > typical semantic versioning I don't expect big issues when it's >> time to >> > > > pick the right version (it's been stable in v1 for a while). >> > > > >> > > > Then as to where such a spec has to end up, I have no particular >> > opinion. >> > > > It felt more natural to stay as near as possible where the Kamelets >> are >> > > > developed (the catalog). However, it is true that the core has some >> > > direct >> > > > usage. My main concern in moving into the core would be to have a >> more >> > > > complex project management and release process. Camel core is >> already >> > > > difficult to handle from that perspective, so adding some more >> > complexity >> > > > may feel intimidating. >> > > > >> > > > I'll wait for some more opinion about this last point. >> > > > >> > > > On Tue, Sep 3, 2024 at 10:07 AM Christoph Deppisch >> > > > <cfrea...@googlemail.com.invalid> wrote: >> > > > >> > > > > Hello Pasquale, >> > > > > >> > > > > +1 on moving the Java CRD model generation as it is a source of >> > > circular >> > > > > dependencies. But what about the pure CRD YAML definitions ( >> > > > > >> > > > >> > > >> > >> https://github.com/apache/camel-k/tree/main/pkg/resources/config/crd/bases >> > > > > )? >> > > > > From a Camel K operator perspective wouldn't it be weird to loose >> the >> > > > > ownership of those resources? >> > > > > >> > > > > When speaking of circular dependencies we should think about >> Kamelets >> > > > > catalog repository, too. The utilities located in the catalog >> > represent >> > > > > another source of circular dependencies. Maybe it makes sense to >> move >> > > the >> > > > > Java CRD model and the Kamelets into Camel: >> > > > > https://issues.apache.org/jira/browse/CAMEL-21049 >> > > > > >> > > > > Cheers, >> > > > > Christoph >> > > > > >> > > > > Am Di., 3. Sept. 2024 um 09:25 Uhr schrieb Pasquale Congiusti < >> > > > > pasquale.congiu...@gmail.com>: >> > > > > >> > > > > > Thanks Andrea, >> > > > > > yes, there will be quite some work to do as we have many >> circular >> > > > > > references and other aspects which we need to move off from >> Camel >> > K. >> > > > The >> > > > > > CRDs project should be partially moved as well, as it contains >> the >> > > > > > dependency used by the tooling. Fortunately Kamelets should not >> > have >> > > > > > references on others API, but we'll discover while working on >> it. >> > > > > > >> > > > > > Cheers, >> > > > > > Pasquale. >> > > > > > >> > > > > > On Tue, Sep 3, 2024 at 8:15 AM Andrea Cosentino < >> anco...@gmail.com >> > > >> > > > > wrote: >> > > > > > >> > > > > > > Hello Pasquale, >> > > > > > > >> > > > > > > I think it makes sense. >> > > > > > > >> > > > > > > This will mean moving the following project and the related >> crds >> > in >> > > > > base, >> > > > > > > right? >> > > > > > > >> > > > > > > https://github.com/apache/camel-k/tree/main/java/crds >> > > > > > > >> > > > > > > >> > > > > > > >> > > > > > > Il giorno lun 2 set 2024 alle ore 17:18 Pasquale Congiusti < >> > > > > > > pasquale.congiu...@gmail.com> ha scritto: >> > > > > > > >> > > > > > > > Hi folks, >> > > > > > > > in the past we've discussed the opportunity to move the >> > > > specification >> > > > > > of >> > > > > > > > Kamelet from Camel K to Camel since Kamelets have been a >> > general >> > > > > > concept >> > > > > > > > for some time. I'd like to set the ground for a shared >> decision >> > > on >> > > > > what >> > > > > > > to >> > > > > > > > achieve. I will create a JIRA, but, before, I'd like to >> > > understand >> > > > if >> > > > > > we >> > > > > > > > all agree with the following points. >> > > > > > > > >> > > > > > > > 1. We should move the CRD from Camel K to the Kamelet >> > catalog >> > > > > > > > repository. It's important we familiarize ourselves with >> the >> > > > > > > Kubernetes >> > > > > > > > API >> > > > > > > > management policy, above all with deprecation policy [1] >> and >> > > > make >> > > > > > sure >> > > > > > > > to >> > > > > > > > avoid any change that would break any public clients >> > > > > compatibility. >> > > > > > > The >> > > > > > > > API >> > > > > > > > may be used by any application/tool outside Apache Camel >> and >> > > it >> > > > is >> > > > > > > > vital to >> > > > > > > > make sure we respect the contract. Kamelets API has been >> GA >> > in >> > > > v1 >> > > > > > > since >> > > > > > > > a >> > > > > > > > while and it's quite stable. I suggest discussing any >> > > > non-trivial >> > > > > > > change >> > > > > > > > publicly in order to always understand the potential >> impact >> > > > > outside >> > > > > > > the >> > > > > > > > Apache Camel ecosystem. >> > > > > > > > 2. We should rethink the bundling process for the >> provided >> > > > Kamelet >> > > > > > > > catalog in Camel K. Above all, we need to align with the >> > > > expected >> > > > > > > > behavior >> > > > > > > > provided by Camel core. The distribution model that it >> seems >> > > > more >> > > > > > > > obvious >> > > > > > > > is to leverage the catalog distributed as a dependency >> with >> > > > Camel >> > > > > > > core. >> > > > > > > > That means that, by default, the Kamelet version used for >> > > > catalog >> > > > > > > > provided >> > > > > > > > Kamelet at runtime will be the one distributed with the >> > given >> > > > core >> > > > > > > > version. >> > > > > > > > >> > > > > > > > Let me know what you people think. >> > > > > > > > >> > > > > > > > Thanks and regards, >> > > > > > > > Pasquale. >> > > > > > > > >> > > > > > > > [1] >> > > > > >> https://kubernetes.io/docs/reference/using-api/deprecation-policy/ >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > > >> > > -- >> > > Otavio R. Piske >> > > http://orpiske.net >> > > >> > >> >