On 2009-09-08, at 4:12 AM, Christian Edward Gruber wrote:

On Sep 7, 2009, at 9:52 PM, Ralph Goers wrote:

At one point the pom was going to be "redone" so that it wasn't going to be completely compatible. Later, I think the decision was made to keep it compatible. At one point there was support for having different pom formats but I'm not really sure what the state of that is.

I asked if we could have yaml poms, and some of the committers said "no." ;-)


The flexibility will be in the Maven framework, not what we expose in the Maven CLI. The difference being the onus of support is not the burden of this project but whomever decides to make their variant of the POM. This is not a small change in behaviour or interoperability.

Not exactly that simple, but the usual arguments about standardization vs. flexibility in the tool were levied.

On that point, perhaps one way to handle this is to do something like this: 1. Require all maven poms released in an organization inherit the global metadata.
2. Any pom (of any type) would load this metadata
3. Run would fail because of a restriction in the parent pom on available formats (for organizational standardization).

The argument about maven-wide standardization is, I believe, the developers imposing a style based on a preference. If my whole organization wants to roll yaml poms, I can't see why we shouldn't.

There would be nothing stopping you at all from doing this. The onus of support is on you. This is one of the primary goals of the changes in Maven 3.x is to easily allow extensions. For integrators to provide extensions and to support them, not for us at the project to support.


Having to do a second translation layer outside of maven means that for us to standardize on something that makes us more productive and less prone to error, we have to use a more brittle approach because of an unnecessary design decision of the tool. Pick a canonical format, sure, but for source... Heck, Maven builds that concept into its java lifecycle, with generated code. Imagine if the build tool determined that I could only use JACC, and that ANTLR wasn't part of the "maven" set.


This may very well happen in the future. But there are far more important concerns and mixing in trying to support variants of the POM in the first release cycle of 3.0 would be a complete and total disaster. We would have 198 variations because people think they have something better. Each one of them with a valid arguments as to why they are better. So instead of debating the merits of format we will give you the ability to support your format. It's outside the scope of Maven proper.

I would like people to actually try this as then we'll see what the outcome is without there being serious damage on the Maven side. The fact is we don't actually know what would happen and it's not going to be an experiment in Maven. I don't think people understand the real impact of changing so fundamental as the POM format:

- All examples in books and existing documentation become invalid
- Maven tooling like M2Eclipse, Netbeans and IDEA become immediately useless until the tooling catches up
- Interoperability becomes impossible in the short term

These are not insignificant issues and are _extremely_ costly to support. There is the problem here in the Maven project itself, but allowing arbitrary POM formats then imposes huge support costs on people who have invested in Maven tooling.

For all of these reasons it's not going to happen quickly in Maven itself that we change the format. The extension points will be there and folks can do as they like but it's just not something I think we can feasibly support in Maven.

Go for standardization, pick sane, well documented defaults, but don't bake in design decisions that don't conflict with those principles (if possible).

Anyway - that's just a recap of my position. Focus on standardization and not breaking existing anything came up (though I think spuriously, since a canonical format would take care of that). Heck, we allow maven-antrun-plugin executions for arbitrary crap, so at least if we're going to script, we do it consistently in the lifecycle. Just make this a pre-processing step.

cheers,
Christian.


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org


Thanks,

Jason

----------------------------------------------------------
Jason van Zyl
Founder,  Apache Maven
http://twitter.com/jvanzyl
http://twitter.com/SonatypeNexus
http://twitter.com/SonatypeM2E
----------------------------------------------------------


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org

Reply via email to