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]
> >
> >
>

Reply via email to