Description
This epic is to track the migration from Vert.x 4 to Vert.x 5 in Quarkus and across its wider ecosystem. Switching to Netty 4.2 is also part of this effort as Vert.x 5 depends on it, and this Netty branch has substantial changes compared to Netty 4.1.
Analysis
Switching to Vert.x 5 and Netty 4.2 is not a simple dependency bump, there are modules, APIs and runtime breaking changes.
The migration effort will require a multi-step approach to migrate the direct dependency components first (likely with beta releases for downstream consumption), then Quarkus itself, then "major" projects in the Quarkiverse ecosystem.
Vert.x 5 and Netty 4.2 migration guides
See:
Roadmap
The initial roadmap is the following.
1. Smallrye Mutiny Vert.x Bindings
Many drivers and user-facing APIs consume Vert.x 5 through the Mutiny bindings, so it has to be migrated first (tracked by smallrye/smallrye-mutiny-vertx-bindings#1045)
2. Direct Quarkus dependencies ecosystem
Each project will need to publish beta releases when it has performed its migration.
3. Quarkus "independent projects"
At this stage we will be able to create a long-running branch to prepare https://github.com/quarkusio/quarkus itself to migrate.
There are 2 projects to migrate under the independent-projects/ folder of the Quarkus repository:
4. Quarkus initial migration (JVM)
At this stage we will migrate https://github.com/quarkusio/quarkus itself to Vert.x 5 and Netty 4.2 in the vertx-5-migration branch.
We focus on correctness, not technical debt reduction. We don't focus on performance either.
5. Quarkus full migration (JVM + native + 4.0 features)
Notable attention points once we have a vertx-5-migration branch "migrated" as a baseline:
Finalization:
6. Quarkiverse
7. The big merge
Initial stakeholders
Stakeholders related to the components and steps above: @jponge @anavarr @vietj @tsegismont @ozangunalp @franz1981 @DavideD @lucamolteni @geoand @gsmet @cescoffier @aureamunoz @radcortez @dmlloyd @brunobat @Ladicek @mkouba
Migrated artifacts version tracking
These projects have Vert.x 5 artifacts available from Maven Central starting from these releases:
org.hibernate.reactive:hibernate-reactive: 4.2.1.Final
io.fabric8:kubernetes-httpclient-vertx-5: 7.6.1
io.smallrye.reactive:smallrye-mutiny-*: 4.0.0-beta0
io.smallrye.common:smallrye-common-vertx5-context: 2.17.0
io.smallrye:smallrye-fault-tolerance (and related): 7.0.0-RC1
io.quarkus.http:quarkus-http: 6.0.0.Alpha3
io.smallrye.reactive:smallrye-reactive-messaging-*: 5.0.0-beta0
io.smallrye.opentelemetry:smallrye-opentelemetry-*: 2.12.0
io.smallrye:smallrye-graphql: 3.0.0.Beta1
io.smallrye.reactive:smallrye-reactive-messaging: 5.0.0-beta1
Description
This epic is to track the migration from Vert.x 4 to Vert.x 5 in Quarkus and across its wider ecosystem. Switching to Netty 4.2 is also part of this effort as Vert.x 5 depends on it, and this Netty branch has substantial changes compared to Netty 4.1.
Analysis
Switching to Vert.x 5 and Netty 4.2 is not a simple dependency bump, there are modules, APIs and runtime breaking changes.
The migration effort will require a multi-step approach to migrate the direct dependency components first (likely with beta releases for downstream consumption), then Quarkus itself, then "major" projects in the Quarkiverse ecosystem.
Vert.x 5 and Netty 4.2 migration guides
See:
Roadmap
The initial roadmap is the following.
1. Smallrye Mutiny Vert.x Bindings
Many drivers and user-facing APIs consume Vert.x 5 through the Mutiny bindings, so it has to be migrated first (tracked by smallrye/smallrye-mutiny-vertx-bindings#1045)
2. Direct Quarkus dependencies ecosystem
Each project will need to publish beta releases when it has performed its migration.
3. Quarkus "independent projects"
At this stage we will be able to create a long-running branch to prepare https://github.com/quarkusio/quarkus itself to migrate.
There are 2 projects to migrate under the
independent-projects/folder of the Quarkus repository:4. Quarkus initial migration (JVM)
At this stage we will migrate https://github.com/quarkusio/quarkus itself to Vert.x 5 and Netty 4.2 in the
vertx-5-migrationbranch.We focus on correctness, not technical debt reduction. We don't focus on performance either.
resteasytoreactive-routesin the interimContextLocalregistration hack to make progress)smallrye-commonbeyond 2.17.1 for fixedContextLocalregistration5. Quarkus full migration (JVM + native + 4.0 features)
Notable attention points once we have a
vertx-5-migrationbranch "migrated" as a baseline:UserContextInternalto set user context in Vert.x routing contexts (see [4.0] Websocket migrations #53717 (comment))io_uring(see Support native transports in native executables #35799)ContextLocal(see Switch to Vert.x 5 API for ContextLocal storage hibernate/hibernate-reactive#3793)Vertx{Input,Output}Streamimplementation and usage (see Unify and rework the Vertx{Input,Output}Stream code #53618)UserContextInternalto set user context in Vert.x routing contextsLocalContextAPI across all the code base (see Need to integrate with the new Vert.x Local Data SPI #39710)Finalization:
6. Quarkiverse
7. The big merge
mainInitial stakeholders
Stakeholders related to the components and steps above: @jponge @anavarr @vietj @tsegismont @ozangunalp @franz1981 @DavideD @lucamolteni @geoand @gsmet @cescoffier @aureamunoz @radcortez @dmlloyd @brunobat @Ladicek @mkouba
Migrated artifacts version tracking
These projects have Vert.x 5 artifacts available from Maven Central starting from these releases:
org.hibernate.reactive:hibernate-reactive:4.2.1.Finalio.fabric8:kubernetes-httpclient-vertx-5:7.6.1io.smallrye.reactive:smallrye-mutiny-*:4.0.0-beta0io.smallrye.common:smallrye-common-vertx5-context:2.17.0io.smallrye:smallrye-fault-tolerance(and related):7.0.0-RC1io.quarkus.http:quarkus-http:6.0.0.Alpha3io.smallrye.reactive:smallrye-reactive-messaging-*:5.0.0-beta0io.smallrye.opentelemetry:smallrye-opentelemetry-*:2.12.0io.smallrye:smallrye-graphql:3.0.0.Beta1io.smallrye.reactive:smallrye-reactive-messaging:5.0.0-beta1