Howdy, just to throw in my 5 cents for those discussion model namespaces, which was (AFAIK) brought in by this PR: https://github.com/apache/maven/pull/703
And my 5 cents are: you are folks 4 years late. T On Thu, Mar 12, 2026 at 2:55 PM Maarten Mulders <[email protected]> wrote: > > 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] > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
