I reviewed the PRs, and although I understand the intention behind them, in practice, I could only see shuffling things around and a bit of scope creep (some cleanup being done).
Don't get me wrong, I can see the benefits of deduplication in kogito-dependencies-bom, but this is a large change, and I still struggle to see how it will help with upgrades. Please provide a couple of practical examples on how this will help with the upgrades. On Tue, May 5, 2026 at 6:50 AM Pere Fernandez (apache) <[email protected]> wrote: > > Thank you very much for this effort Gabriele and Yeser! I had to deal with > some Quarkus and Spring upgrades in the past and aligning versions between > both frameworks can be a nightmare and I think this initiative will > definitely help there. > > I'll give an eye to the PRs and will try to provide some feedback ASAP. > > Cheers! > > Pere > > > > On Fri, 1 May 2026 at 07:52, Gabriele Cardosi <[email protected]> > wrote: > > > Yes, Alex, the issue you mention is clear and we considered it. > > But that issue depends on the overall architecture and already exists, > > nevertheless. > > The scope of this proposal is not to fix that, but to simplify and reduce > > the burden of maintenance. Currently, de facto, the "common" versions get > > aligned with quarkus, and if by chance there is some incompability with > > springboot, we have to identify lot of multiple places to make overrides, > > sometime at unexpected level. Any framework update requires long and hard > > work to be done in all the different poms in the codebase, and the same > > goes true for CVEs. There is a big chance of version clashing, and it is > > not even clear, in the final kogito application, why and how some version > > gets inherited. I've helped recently with the quarkus migration, and I saw > > multiple of those strange side-effects. > > This proposal try to address all the above issues, and in case you did not > > already, I would suggest you to take a deeper look at the enforcers > > introduced, at the seamless pom navigation, and at the straightforward > > maintenance tasks that this approach lead to. > > > > Cheers! > > > > Il Ven 1 Mag 2026, 00:23 Alex Porcelli <[email protected]> ha scritto: > > > > > Thank you for the clarification, Gabriele. > > > > > > I love the idea, but I'm struggling with how this would work in > > > practice. Let's be pragmatic: > > > > > > Jackson: > > > - Quarkus is 2.19.x > > > - SpringBoot 4 uses 3.x > > > > > > What do we select for common? How to make 2.19 and 3.x work in the > > > same codebase? > > > > > > > > > On Thu, Apr 30, 2026 at 4:37 PM Gabriele Cardosi > > > <[email protected]> wrote: > > > > > > > > Hi Alex, > > > > with this proposal the hierarchy of the framework-specific modules is > > > > completely separated. > > > > There is (in abstract terms) > > > > one bom for all external/common libraries > > > > one bom for quarkus modules > > > > one bom for springboot modules > > > > Framework-specific boms *inherit* (*not import!*) the common one: i.e. > > > the > > > > "common bom" is the parent of the framework-specific ones. > > > > So, at framework-specific bom level, it is possible to override the > > > version > > > > inherited from the parent. > > > > At the same time, for a given library, it is possible to have one > > version > > > > for the quarkus hierarchy and a different version for the springboot > > one. > > > > > > > > Please note that I wrote "one bom" only to simplify and make clear the > > > > concept behind. > > > > > > > > I hope this would make sense and clarify your doubts. > > > > > > > > > > > > > > > > > > > > On Thu, Apr 30, 2026 at 7:38 PM Alex Porcelli <[email protected]> > > > wrote: > > > > > > > > > I might have gotten lost in the length of the proposal, so apologies > > > > > if I missed it. I am still not sure how the isolation actually helps > > > > > with the Spring Boot 4 upgrade case you mentioned. There are several > > > > > shared libraries used in common implementations (Jackson being the > > > > > obvious one), where the conflict between frameworks does not seem to > > > > > go away. > > > > > > > > > > Could you walk through, in simplified terms, how the proposal > > > > > addresses this in both the common and framework-specific codebases? > > > > > > > > > > On Thu, Apr 30, 2026 at 12:45 PM Yeser Amer <[email protected]> > > wrote: > > > > > > > > > > > > Hi Alex, thank you for your feedback. > > > > > > > > > > > > Thank you for raising this important point about independent > > > framework > > > > > upgrades. Let me clarify how this proposal addresses exactly this > > > concern. > > > > > > > > > > > > The ability to perform independent framework upgrades is one of the > > > main > > > > > problems this proposal solves. We're currently experiencing this > > > challenge > > > > > firsthand with the Spring Boot 4 upgrade ( > > > > > https://github.com/apache/incubator-kie-issues/issues/2288), where > > > we're > > > > > struggling to find versions of Jackson and Netty that are compatible > > > with > > > > > both Quarkus 3.27.2 and Spring Boot 4. > > > > > > > > > > > > With this proposal, while most dependency versions will be declared > > > in > > > > > kie-parent, the framework-specific BOMs (kogito-quarkus-bom and > > > > > kogito-spring-boot-bom) will be able to override these versions when > > > > > necessary. This means: > > > > > > > > > > > > - Shared dependencies (like Jackson, Netty, Reactor) will have a > > > > > baseline version in kie-parent > > > > > > - Framework-specific overrides can be declared in > > kogito-quarkus-bom > > > or > > > > > kogito-spring-boot-bom when the framework requires a different > > version > > > > > > - Modules depending on a specific framework will inherit the > > > appropriate > > > > > version through their framework-specific BOM parent > > > > > > This approach eliminates the current situation where we must find a > > > > > single version that satisfies both frameworks simultaneously—a > > > constraint > > > > > that often blocks upgrades entirely. Instead, each framework can use > > > the > > > > > version it requires, and only the framework-agnostic modules in > > > kie-parent > > > > > need to work with a common baseline. > > > > > > > > > > > > I realize that this key aspect was not properly highlighted in the > > > > > proposal; hopefully, it is clearer now. > > > > > > > > > > > > Thanks, > > > > > > > > > > > > Yeser > > > > > > > > > > > > On 2026/04/30 16:03:18 Alex Porcelli wrote: > > > > > > > Thanks, Yeser, Gabriele, and Chinchu, for taking this on. The > > > > > > > diagnosis is mostly right: the duplication, the empty framework > > > BOMs, > > > > > > > and the convergence issues are real. > > > > > > > > > > > > > > A few concerns, though: > > > > > > > > > > > > > > Timing. We are mid-consolidation for 10.3.x under Tiago's plan, > > > across > > > > > > > the same repos. Running a structural BOM rework in parallel will > > > fight > > > > > > > for review bandwidth and make regressions hard to bisect. Strong > > > > > > > preference to finish 10.3.x first. > > > > > > > > > > > > > > Scope. This bundles at least four independent changes (dedup, > > empty > > > > > > > BOMs, kie-parent split + enforcer rules, kogito-apps reorg). Each > > > has > > > > > > > a different risk and reviewers. Could we split into separate > > > > > > > proposals? I can get behind some of them on their own, but not as > > > one > > > > > > > package. > > > > > > > > > > > > > > Independent framework upgrades. Not convinced this holds up. > > Shared > > > > > > > deps like Jackson, Netty, and Reactor are pulled by both Quarkus > > > and > > > > > > > Spring Boot at different versions. If they live in kie-parent, > > BOM > > > > > > > import ordering decides who wins, and the proposal does not > > specify > > > > > > > it. Most CVEs hit shared transitive deps anyway, so > > cross-framework > > > > > > > coordination does not really go away. A worked example through a > > > > > > > recent CVE would help. > > > > > > > > > > > > > > Happy to support smaller, focused proposals after 10.3.x lands. > > > > > > > > > > > > > > - > > > > > > > Alex > > > > > > > > > > > > > > On Thu, Apr 30, 2026 at 10:12 AM Yeser Amer <[email protected]> > > > wrote: > > > > > > > > > > > > > > > > Hi Apache KIE community, > > > > > > > > > > > > > > > > Long-time contributors know how time‑consuming it can be to > > > upgrade > > > > > > > > Kogito's required frameworks, such as Quarkus and Spring Boot. > > > This > > > > > > > > activity is both critical and recurring, yet based on our > > > experience > > > > > it > > > > > > > > often requires a significant and unpredictable amount of > > effort. > > > > > > > > > > > > > > > > Given how frequently we need to perform these upgrades, we > > > believe > > > > > it's > > > > > > > > time to improve the process. We would like to propose a set of > > > > > changes to > > > > > > > > the current BOM management approach, based on lessons learned > > > from > > > > > past > > > > > > > > upgrades across the KIE ecosystem. > > > > > > > > > > > > > > > > We welcome any opinions and feedback from the community. To > > > better > > > > > > > > understand the proposed changes, please review the draft PRs > > that > > > > > > > > demonstrate the implementation. We encourage discussion and > > > > > collaboration > > > > > > > > on these PRs to refine the approach. For tracking and > > > coordination, > > > > > please > > > > > > > > refer to the main issue: > > > > > > > > https://github.com/apache/incubator-kie-issues/issues/2029. > > > Here, > > > > > you can > > > > > > > > find the open PRs ready to be reviewed. > > > > > > > > > > > > > > > > The goal of this initiative is to: > > > > > > > > > > > > > > > > - reduce the overall time spent on framework upgrades, > > > > > > > > - make the process more predictable and consistent, > > > > > > > > - enable both current and future maintainers to complete > > these > > > > > tasks in > > > > > > > > days rather than weeks, > > > > > > > > - allow each framework to be upgraded independently, without > > > > > worrying > > > > > > > > about transitive dependency conflicts, > > > > > > > > - apply CVE fixes faster without cross-framework > > coordination. > > > > > > > > > > > > > > > > The proposed changes will impact the following repos: > > > > > > > > > > > > > > > > - drools > > > > > > > > - kogito-runtimes > > > > > > > > - kogito-apps > > > > > > > > - kogito-examples > > > > > > > > - kie-tools > > > > > > > > > > > > > > > > Current Status of BOM Management > > > > > > > > > > > > > > > > drools: > > > > > > > > > > > > > > > > - build-parent/pom.xml: This module currently acts as the > > main > > > > > BOM, > > > > > > > > managing both the third-party dependencies and the internal > > > > > dependency > > > > > > > > declarations. It also defines Quarkus (and likely several > > > > > Quarkus‑related > > > > > > > > dependencies). Three main issues have been identified: > > > > > > > > 1. Framework coupling: The drools repo should be > > > "cloud-native > > > > > > > > framework agnostic"; Quarkus and related specific > > > dependencies > > > > > should not > > > > > > > > be declared here. > > > > > > > > 2. Mixed responsibility inside the BOM: Internal project > > > > > dependencies > > > > > > > > and external third‑party dependencies are currently > > managed > > > > > > > > within the same > > > > > > > > BOM. This makes version alignment, troubleshooting, and > > > > > > > > framework upgrades > > > > > > > > harder to reason about, and increases the risk of > > > unintended > > > > > side effects > > > > > > > > during dependency updates. > > > > > > > > 3. Scattered dependency declarations across submodules: > > > Not all > > > > > > > > third‑party dependencies are declared in the main BOM; > > some > > > > > are managed > > > > > > > > directly within individual submodules. This fragmentation > > > > > makes it more > > > > > > > > difficult to track, align, and update dependencies > > > consistently > > > > > > > > across the > > > > > > > > codebase. > > > > > > > > > > > > > > > > kogito-runtimes: > > > > > > > > > > > > > > > > - kogito-dependencies-bom/pom.xml: Acts as the main BOM for > > > Kogito > > > > > > > > runtime projects, declaring third‑party dependencies > > required > > > for > > > > > > > > cloud‑native applications (e.g. Quarkus, Spring Boot, and > > > related > > > > > > > > libraries). > > > > > > > > - kogito-quarkus-bom/pom.xml: Intended to manage third‑party > > > > > > > > dependencies specific to Quarkus‑based Kogito applications. > > > > > > > > - kogito-spring-boot-bom/pom.xml: Intended to manage > > > third‑party > > > > > > > > dependencies specific to Spring Boot‑based Kogito > > > applications. > > > > > > > > > > > > > > > > Main issues identified: > > > > > > > > > > > > > > > > 1. Unused framework‑specific BOMs: Despite the presence of > > > both > > > > > > > > kogito-quarkus-bom and kogito-spring-boot-bom, which are > > > intended > > > > > to > > > > > > > > manage Quarkus and Spring Boot dependencies respectively, > > > these > > > > > BOMs are > > > > > > > > effectively empty and not used for their intended scope. As > > a > > > > > result, > > > > > > > > framework‑specific dependencies are still being managed > > > elsewhere, > > > > > > > > defeating the purpose of having dedicated BOMs. > > > > > > > > 2. Duplication of third‑party dependency declarations: A > > > > > significant > > > > > > > > portion of the third‑party dependencies declared in > > > > > kogito-dependencies-bom > > > > > > > > duplicates dependencies already declared in > > > > > drools/build-parent/pom.xml. > > > > > > > > This duplication is unnecessary and increases the risk of: > > > version > > > > > > > > misalignment, dependency conflicts, higher maintenance costs > > > > > (e.g. CVE > > > > > > > > fixes and coordinated upgrades). > > > > > > > > > > > > > > > > kogito-apps: The kogito-apps repository does not currently > > define > > > > > its own > > > > > > > > BOM to manage third-party dependencies. However, the existing > > > project > > > > > > > > structure limits the ability to take advantage of the > > > > > framework‑specific > > > > > > > > BOM split already present in the kogito-runtimes repository. > > > > > > > > > > > > > > > > The applications are organized by feature rather than by > > > framework, > > > > > using > > > > > > > > the following structure: > > > > > > > > > > > > > > > > kogito-apps/feature+ common-impl+ quarkus-impl+ > > spring-boot-impl > > > > > > > > > > > > > > > > kie-tools: This repository has a Maven module acting as a BOM, > > > > > maven-base. > > > > > > > > It already imports kogito-apps-bom, together with additional > > > > > unnecessary > > > > > > > > KIE BOMs. As a result, Quarkus-specific dependencies are mixed > > > into a > > > > > > > > shared dependency management layer. > > > > > > > > Problems to Solve > > > > > > > > > > > > > > > > - The same dependency is declared with different versions in > > > > > "parent" > > > > > > > > and "children" modules > > > > > > > > - The same dependency is inherited transitively in some > > > modules > > > > > but > > > > > > > > explicitly declared in others > > > > > > > > - At the bottom of the stack (final applications/examples) > > > there > > > > > are > > > > > > > > multiple convergence issues > > > > > > > > - Wrong behavior often appears at runtime rather than > > compile > > > > > time, > > > > > > > > making it hard to detect > > > > > > > > > > > > > > > > Proposed Changes > > > > > > > > > > > > > > > > drools: > > > > > > > > > > > > > > > > - Introduce a new kie-parent/pom.xml BOM: A new kie-parent > > > module > > > > > will > > > > > > > > be introduced as the only place where third-party > > > dependencies are > > > > > > > > declared. This BOM will be used throughout the KIE > > ecosystem. > > > All > > > > > > > > identified Quarkus‑related dependencies will be excluded > > from > > > > > this BOM, > > > > > > > > keeping it framework agnostic. > > > > > > > > - Introduce a new kie-parent-drools/pom.xml BOM: A new > > > > > > > > kie-parent-drools module > > > > > > > > will be introduced as a BOM aggregator for first-party > > Drools > > > > > dependencies > > > > > > > > (internal Drools modules). This separates first-party > > > dependency > > > > > management > > > > > > > > from third-party dependencies in kie-parent. > > > > > > > > - Refocus drools-build-parent/pom.xml responsibilities: The > > > > > existing > > > > > > > > drools-build-parent/pom.xml will be refocused to keep build > > > > > > > > configuration and plugin management only. It will no longer > > > manage > > > > > > > > first-party dependencies (moved to kie-parent-drools) and > > > will no > > > > > longer > > > > > > > > declare third-party dependencies directly. It will inherit > > > from > > > > > > > > kie-parent-drools. > > > > > > > > - Remove all <dependencyManagement> from submodules: All > > > > > submodules will > > > > > > > > inherit dependency versions from kie-parent, with no local > > > > > overrides > > > > > > > > allowed. > > > > > > > > - Enforce centralized dependency management: Two new > > enforcer > > > rule > > > > > > > > modules will be introduced: > > > > > > > > - kie-no-dependency-management-enforcer-rule: Enforces a > > > "no > > > > > > > > dependencyManagement" rule within Drools submodules. > > > > > Submodules will > > > > > > > > no longer be allowed to declare their own > > > > > <dependencyManagement> > > > > > > > > sections, > > > > > > > > not even inside profiles. This prevents the anti‑pattern > > of > > > > > declaring > > > > > > > > dependency versions outside the main BOM. Exceptions will > > > be > > > > > allowed only > > > > > > > > for well‑justified and explicitly approved cases via the > > > > > > > > <allowedPomsList> property. > > > > > > > > - kie-no-external-managed-dependency-enforcer-rule: > > Blocks > > > > > dependency > > > > > > > > management entries for external artifacts not part of the > > > > > current > > > > > > > > multi-module project. This keeps managed dependencies > > > limited > > > > > to the > > > > > > > > project's own modules and prevents accidentally pulling > > in > > > or > > > > > controlling > > > > > > > > versions of unrelated external libraries. > > > > > > > > - Isolate Quarkus‑specific build logic: A new module, > > > > > > > > kie-quarkus-build-parent, will be introduced to extend > > > kie-parent > > > > > for > > > > > > > > the only allowed Quarkus‑related module within Drools ( > > > > > > > > drools-quarkus-extension). This exception is retained for > > > > > historical > > > > > > > > reasons (Drools has a dependency on Quarkus). It extends > > > rather > > > > > than > > > > > > > > imports to also inherit pluginManagement. > > > > > > > > > > > > > > > > See diagram: > > > > > > > > > > > > > > > > > > https://github.com/user-attachments/assets/7db5e9be-213d-4d86-804f-e1f1cffb50d3 > > > > > > > > > > > > > > > > kogito-runtimes: > > > > > > > > > > > > > > > > - Remove kogito-dependencies-bom: Deleted as it's no longer > > > > > needed; > > > > > > > > functionality replaced by inheriting directly from > > > > > drools/kie-parent through > > > > > > > > the parent hierarchy, eliminating duplication of third-party > > > > > dependency > > > > > > > > declarations. > > > > > > > > - Modify kogito-bom: Existing BOM module, now inherits from > > > > > > > > drools/kie-parent-drools, aggregating kogito-specific > > > dependency > > > > > > > > management. > > > > > > > > - Modify kogito-runtime-bom: Existing runtime BOM, now > > > inherits > > > > > from > > > > > > > > drools-build-parent for configuration build setting import. > > > > > > > > - Modify kie-kogito-bom: Existing KIE-Kogito integration > > BOM, > > > now > > > > > > > > inherits from drools-build-parent. > > > > > > > > - Populate kogito-quarkus-bom: Existing but previously > > unused > > > BOM > > > > > now > > > > > > > > populated with all Quarkus-specific dependencies; inherits > > > from > > > > > > > > kogito-build-no-bom-parent; inherited by > > kogito-apps-quarkus. > > > > > > > > - Populate kogito-spring-boot-bom: Existing but previously > > > unused > > > > > BOM > > > > > > > > now populated with all Spring Boot-specific dependencies; > > > > > inherits from > > > > > > > > kogito-build-no-bom-parent; inherited by > > > kogito-apps-spring-boot. > > > > > > > > - Remove all <dependencyManagement> from submodules: All > > > > > submodules > > > > > > > > inherit dependency versions from their parent BOMs. > > > > > > > > - Uniform checks with drools repository: Apply the same > > > enforcer > > > > > rules > > > > > > > > and patterns used in drools. > > > > > > > > > > > > > > > > See diagram: > > > > > > > > > > > > > > > > > > https://github.com/user-attachments/assets/90f80d70-2300-4d8a-901a-330807039440 > > > > > > > > > > > > > > > > kogito-apps: > > > > > > > > > > > > > > > > - Regroup applications by framework instead of by feature: > > The > > > > > current > > > > > > > > feature‑centric structure will be reorganized to be > > > > > framework‑centric. > > > > > > > > Specifically, two top‑level, framework‑specific modules will > > > be > > > > > introduced: > > > > > > > > kogito-apps-quarkus and kogito-apps-spring-boot. All > > > > > framework‑specific > > > > > > > > application modules will be moved under their respective > > > top‑level > > > > > > > > framework module. > > > > > > > > > > > > > > > > See diagram: > > > > > > > > > > > > > > > > > > https://github.com/apache/incubator-kie-issues/issues/2029#kogito-apps-diagram > > > > > > > > > > > > > > > > kogito-examples: The kogito-examples repository will receive > > only > > > > > minimal > > > > > > > > changes required to work with the main changes applied in > > > upstream > > > > > > > > repositories. The main changes are: the POM file of the Quarkus > > > > > examples > > > > > > > > module will import the kogito-apps-quarkus-bom BOM and the > > Spring > > > > > Boot > > > > > > > > examples module will import the kogito-apps-spring-boot-bom > > BOM. > > > > > > > > > > > > > > > > kie-tools: > > > > > > > > > > > > > > > > - Keep maven-base as the shared base BOM, but clean it up by > > > > > removing > > > > > > > > unnecessary dependencies and BOM imports already covered by > > > > > kie-parent > > > > > > > > (drools). > > > > > > > > - Create maven-quarkus-bom and maven-spring-boot-bom to > > manage > > > > > Quarkus > > > > > > > > and Spring Boot dependencies separately. > > > > > > > > - Make leaf modules inherit from the appropriate > > > > > framework-specific BOM > > > > > > > > according to their runtime framework. > > > > > > > > > > > > > > > > See diagram: > > > > > > > > > > > > > > > > > > https://github.com/user-attachments/assets/06f8362a-092d-40bb-8a01-3560c41a4a8e > > > > > > > > Kudos to Gabriele Cardosi, who is driving this important > > > initiative > > > > > > > > and to Chinchu > > > > > > > > P Shaji for her support. > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > > > > To unsubscribe, e-mail: [email protected] > > > > > > > For additional commands, e-mail: [email protected] > > > > > > > > > > > > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > > > To unsubscribe, e-mail: [email protected] > > > > > > For additional commands, e-mail: [email protected] > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > > To unsubscribe, e-mail: [email protected] > > > > > For additional commands, e-mail: [email protected] > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: [email protected] > > > For additional commands, e-mail: [email protected] > > > > > > > > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
