Module Naming Strategy for Core Extensions vs. Independent Projects (JPMS) #52111
cescoffier
started this conversation in
Design Discussions
Replies: 1 comment 3 replies
-
Beta Was this translation helpful? Give feedback.
3 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
During the Community Call on Jan 20, 2026, we discussed the ongoing effort to modularize Quarkus to support the Java Platform Module System (JPMS). As @dmlloyd is working through the core extensions, we have hit a conflict between our Extension Structure ADR and "Independent Projects" that live within the Quarkus repository (specifically Arc and Qute).
We need to decide on a naming strategy that satisfies
javacconstraints (you cannot have 2 modules with the same name) while keeping our ecosystem logical.The Problem
The current ADR suggests that extension runtime modules should follow the naming convention
io.quarkus.<name>.However, we have internal projects like Arc that:
io.quarkus.arc.Under JPMS, javac strictly forbids two different artifacts on the module path from claiming the same module name. We cannot have the Arc Library (
io.quarkus.arc) and the Arc Extension Runtime (io.quarkus.arc) coexist if they are separate modules.Currently, we are working around this by naming the extension module
io.quarkus.arc.runtime. However, this results in a module name that does not match the package name (which remainsio.quarkus.arcto avoid breaking changes), which is generally considered a bad practice in the JPMS world.Proposed Solutions
We discussed a few paths forward and would like community feedback:
io.quarkus.ext.<name>orio.quarkus.x.<name>.io.quarkusnamespace.io.quarkus.arc.runtime, despite the package name mismatch, or change the name of the independent project (io.quarkus.arc.liborio.quarkus.arc.mainorio.quarkus.lib.arc)Questions
How important is it that we maintain the ability to use Arc/Qute as standalone libraries separate from the Quarkus extension mechanism?
Is the mismatch between Module Name (...runtime) and Package Name (io.quarkus.arc) acceptable in this context? It's just a few exceptions.
Should we revisit the Extension Structure ADR to mandate a prefix (
ext) for all extensions to prevent namespace pollution?Check the meeting notes for the full context of the discussion.
\CC: @dmlloyd @Sanne @mkouba
Beta Was this translation helpful? Give feedback.
All reactions