>Hence, the written spec "Use 1.0 if no other version appears earlier in the dependency tree" is fine.
It is not fine for "selectionStrategy=highest skipper=versioned" The specification should provide users with clear ways to interpret the meanings. Please suggest what would you spell out exactly. "if no other version appears earlier in the dependency tree" is wrong since the version could be superseded by a version declared somewhere in the sibling. In other words, the reproducer project has NO "other version appears earlier in the dependency tree" yet it selects a newer version instead. That is why I say the definition should be reworded. >The beauty is that with this in mind Consider the test project: https://github.com/vlsi/mvn-mediation/blob/dd5f3a484634c04fb36da22e931cd51be2a68e6c/lib-a/pom.xml#L21 How could lib-a enforce guava to be 30.1-jre exactly? Apparently, lib-a is not a root pom, so do you mean "version enforcement" could be done in a root pom only? >The beauty is that with this in mind One more note: the same pom could be both root and non-root depending on the way you launch Maven. For instance, in the mvn-mediation project I can execute lib-a both as a root project, and as a part of the composite. I don't think it looks beautiful if the meaning of lib-a/pom.xml versions changes depending on the way I execute it. >I don't know how Human Interfaces and "modes" came into play Hey Tamás, I've quoted a book. Here's a simplified description: https://en.wikipedia.org/wiki/The_Humane_Interface >Wikipedia: a mode is a state in which the computer produces a different output for the same input than it would have if it were another state Then I quoted the reason I connect "root vs non-root" vs mode: >Vladimir: If we consider "root POM" to be special, then the same input (==same POM) > would have different meaning depending on the state (if the POM is root or not). Frankly, I do not see how Arborescence_(graph_theory) explains the benefits of having different interpretations for the same <version>1.0</version> depending if the version is placed in a root pom or not. If a user wants to enforce a specific version, it would be way easier to get it done with [1.0] or an alternative _explicit_ way. Then everybody would understand there was explicit intention to enforce the version. Vladimir
