I am working on a release of Polyglot Maven and the only tangible thing 
stopping me is having a plan for POM interoperability between:

1) Different representations of the model for the same version of the model. 
This is what I'd like for the first version of Polyglot Maven where I just want 
to translate the version 4.0.0 model between different representations.

2) Different versions of the model. This is something we will need for Maven 
3.1.

In talking with Benjamin and Brian for 1) I think it would be easiest to deploy 
both versions of the model. The complete model in the native dialect like 
Clojure, and the complete XML translation. Deploying both would be useful 
because in the case of Clojure they are trying to come up with a common model, 
like the POM, for Clojure-based build tools. So if someone built and deployed 
with Polyglot Maven using the Clojure dialect then they want people not using 
Polyglot Maven i.e. a native Clojure tool to read the Clojure. This assumes our 
models are compatible but we'll have to work that out. We need to start 
somewhere so I don't think abbreviating any of the information is good for a 
first pass. Leave it all there for now and we'll figure out if a build-only 
representation of the model will suffice for sending to the repository.

For 2) Benjamin's recommendation was to transform elements in the newer model 
back to the 4.0.0 model. I'm not sure how long this will be possible but if we 
live with our baggage and say we'll only add elements to the model I think this 
will be a lot easier. Having to track removals across versions of the model 
will be a pain in the ass. We translate back for as long as we can and when we 
can't do that anymore maybe we do a build-only transformation.

I'd like to field other thoughts before I write something up. I'm going to do 
all this work in Polyglot Maven because I'm sure I'm going to break things but 
the folks I'm working with will tolerate this for a while. I'm chatting with 
folks in the Clojure community on a Lein-like markup, Dhanji (a  Googler 
working on Guice and Sitebricks) who is working on a format called Atom, and 
Kristian (fellow who makes all the Ruby/Maven tooling) who is working on a Ruby 
DSL. If things break here for a while it's not the end of the world and is a 
good testing ground.

At any rate if anyone has ideas or documents I'll integrate it into the 
proposal I'm writing. I'm moving pretty fast and I plan to release a version of 
the Maven Shell next week, and then a couple weeks later a version with 
Polyglot capabilities. So if you have thoughts I'd appreciate them sooner 
rather then later.

Thanks,

Jason

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

Selfish deeds are the shortest path to self destruction.

 -- The Seven Samuari, Akira Kurosawa



Reply via email to