Hi Hervé,

Agreed, at some point we must make a decision and move forward. Allow me to go through your email point by point.

1. Nothing to comment on.

2. Correct. For what I understand of it: an element in XML is not only defined by its name, but by its name and the namespace it lives in. Put differently, <groupId> in the http://maven.apache.org/POM/4.0.0 namespace is not the same thing as <groupId> in the http://maven.apache.org/POM/4.1.0 namespace, even though they happen to have the same name. XML tools and libraries will consider them different, unrelated things.

3. I think B or C would be best. Maybe I like C oer B, so that we (hopefully) never again confuse a version number in a namespace with an actual version of the schema. As an example, look at the Servlet specification. The namespace is https://jakarta.ee/xml/ns/jakartaee, there is no version number. The location of the schema is versioned, though: https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd.

4. Although A is the least work *for us*, it makes using pom.xml for other consumers/tools probably harder - as there may come a http://maven.apache.org/POM/4.2.0 etc., which means they will always have to catch up. I cannot comment on the complexity of moving Maven 4.0 to http://maven.apache.org/POM - hopefully someone else can comment on that.

Personally, I would not opt for dropping XML. I am happy with what it gives us and I see no reason to get rid of it. We only must take care to use it as it is designed to be used.


Thanks,


Maarten


On 07/03/2026 18:13, Hervé Boutemy wrote:
I'm late to the discussion, but we need to close it

I'll need clarity on this namespace topic, it's too vague to my old XML related 
knowledge,
and define what concrete choices we have, as blocking forever is not an option.

1. the situation:
Maven 3 POM xmlns="http://maven.apache.org/POM/4.0.0";
https://maven.apache.org/ref/3.9.13/maven-model/maven.html

Maven 4 POM build xmlns="http://maven.apache.org/POM/4.1.0";
https://maven.apache.org/ref/4.0.0-rc-5/api/maven-api-model/maven.html


2. analysis:
IIUC, changing the value from Maven 3 to 4 is a problem for XML-level tools, 
that recognize the value to adapt.
And also changing in the future for every Maven 4.x version, as we currently 
implicitely will change again the namespace with a version number in the future

is this analysis correct?
(I'm interested into pointers to concrete problems for XML-level tools, as it 
remains vague to me)


3. options:
A. continue as implemented
B. keep http://maven.apache.org/POM/4.0.0 from Maven 3 for Maven 4.x, 5 etc...
C. change Maven 4.0 to http://maven.apache.org/POM and stay with this value in 
the future
any other option?


4. complexity of implementing options (from a Maven core perspective):
are every option as easy to implement, or is any option complex to do?


Doing a choice for this topic should not be that hard, with a few efforts from 
everybody

or "just for fun", perhaps the only option is to drop XML to close this 
XML-specific complexity...


Regards,

Hervé

On 2026/02/22 11:46:58 Maarten Mulders wrote:
Hi Elliotte,

Thank you for your elaboration! It didn't click together for me earlier
but I think I now better understand your concern; this sentence
summarises it for me: "A group element is still a group element."

As far as I know, being able to change namespaces was never the goal of
separating build and consumer POM. The goal was to be able to evolve the
schema of the POM that a developer uses to build the project, without
affecting those that consume the project. I think we could have done
that without changing XML namespaces. And I fully agree with Elliotte:
if we revert that change before Maven 4.0.0, it will be a lot easier
than trying to repair this after releasing 4.0.0.

I know we aren't voting on this (yet). Nevertheless, I would say it's
better to ship Maven 4.0.0 a bit later but in a good shape, than
shipping it early with a known large defect.

Thanks,


Maarten

On 14/02/2026 23:46, Elliotte Rusty Harold wrote:
On Sat, Feb 14, 2026 at 8:25 PM Romain Manni-Bucau
<[email protected]> wrote:

Hi

My 2cts would be

1. this is the whole goal of the consumer pom work did in maven 3 so the
correct phrasing is "we must come with a new namespace", what is also true
is "we must support maven 4.0.0 model version and older namespace" => we
are good


No, that is the concern and that is not a resolution. The goal is to
be able to use XML tools like XPath and XSLT to process pom files,
both inside and outside Maven itself. By changing the namespace this
becomes immensely more difficult because instead of adding a few new
elements it's like we threw away all the existing elements and
replaced every one with a new element.

But this is not what we have done, or at least not what we should do.
A group element is still a group element. A dependency element is
still a dependency element. And so forth. These elements haven't
changed so their names shouldn't have changed, and that includes the
namespace.

Many developers still confuse namespaces with schema versions, but
that is not how namespaces were designed to work. In general the
namespace should not change simply because a new version of a
vocabulary has been released. In Maven's case that's what modelVersion
is for. Releasing a new version of a vocabulary does not justify
changing the namespace, and there is a large cost associated with
doing so.



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