You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by John Casey <jd...@commonjava.org> on 2009/04/28 21:33:24 UTC

Revisiting: Maven 2.1.1 or Maven 2.2?

Hi everyone,

We've spent a little time talking about whether the next release should 
be 2.1.1 or 2.2. This has mainly played out around the issue of MNG-4140 
and whether or not to require JDK 1.5 for the next release. We had 
settled on a solution for 2.1.1 that allowed Maven to continue operating 
without version interpolation when used with JDK < 1.5.

However, there is another issue that I feel is important to address: 
MNG-4147. This issue is caused by Sun's HTTPURLConnection implementation 
- at least, in JDK 1.5 - which is used by the lightweight http wagon. 
We're already bundling httpclient in Maven for use by the jackrabbit 
webdav wagon, so it seems like a natural move to simply discontinue use 
of the lightweight http wagon in favor of the httpclient-based one.

I feel like these are both very important issues to address, but one 
carries a requirement for JDK 1.5+ in order to work (for JDK < 1.5, it 
won't work even as well as it did in 2.1.0); the other carries quite a 
bit of risk with it, since the httpclient-based wagon isn't in 
production use anywhere AFAIK, and may contain subtle bugs as a result. 
I'm not sure even a protracted RC process will flush out all the bugs if 
we were to switch.

So, I propose the following: we should do a very tightly focused 2.2.0 
release next, and forget 2.1.1. I know I was against this approach 
before, mainly because I was concerned about scope-creep for that 
release...but I'm not sure a 2.1.1 release will really be compelling 
without at least attempting to solve the aforementioned problems.

I'd love to hear what others think.

-john

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


Re: Revisiting: Maven 2.1.1 or Maven 2.2?

Posted by nicolas de loof <ni...@gmail.com>.
I didn't said I'd like 1.5 for a 2.2 release, to show the runtime
prerequisite change

2009/4/28 nicolas de loof <ni...@gmail.com>

> You've got my +1 for 1.5 upgrade.
> I spent too much time on old JEE appservers with XML parser issues and
> other frustrating runtime constraints, I don't wan to see Maven handle bugs
> with complex workarounds just because some up-to-date dependencies cannot be
> used. So fiew projects are still 1.4 compatible ! I myself updated the GWT
> plugin to 1.5 by claiming GWT uses this API level itslef :p
>
> As a side effect, with migration to 1.5 we could use generics for API
> collections, and avoid newbee (and other) developpers to search by hand what
> project.getArtifacts() returns as type ;)
>
> Nicolas
>
> 2009/4/28 John Casey <jd...@commonjava.org>
>
>  The problem is, the two http wagons share the same plexus role-hint. This
>> means one will always obscure the other inside the Maven runtime. In any
>> case, MNG-4147 is only the second reason for changing the Maven release
>> version from 2.1.1 to 2.2:
>>
>> 1. MNG-4140: even working around the NoClassDefFoundError for XPath* in
>> JDK 1.4, this means that version expressions won't be interpolated on
>> install/deploy unless JDK 1.5+ is used. This was something we talked about
>> in [1].
>>
>> While catching NoClassDefFoundError seemed like a solution, it will
>> actually regress the behavior for JDK 1.4 users...version-expression
>> interpolation won't happen at all for them.
>>
>>
>> 2. MNG-4147: the aforementioned case where long passwords cause line
>> wrapping in the Authorization header value. This may not be compelling by
>> itself, but leaving both this and the interpolation changes above out makes
>> Maven 2.1.1 a whole lot less attractive IMO.
>>
>>
>> -john
>>
>> [1] http://tinyurl.com/cqcrlp
>>
>>
>> Jochen Wiedmann wrote:
>>
>>> On Tue, Apr 28, 2009 at 9:33 PM, John Casey <jd...@commonjava.org>
>>> wrote:
>>>
>>>  However, there is another issue that I feel is important to address:
>>>> MNG-4147.
>>>>
>>>
>>> I have to admit that I find the problem of a "very long password" fairly
>>> exotic.
>>> Apart from that, there should be a possible workaround by explicitly
>>> choosing
>>> the httpclient-based wagon implementation. (This workaround isn't
>>> mentioned
>>> in the issue. Shouldn't it?)
>>>
>>> In summary, I think this is no reason for heavy changes like switching
>>> to 1.5, or
>>> replacing the default Wagon implementation.
>>>
>>>
>>> Jochen
>>>
>>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
>> For additional commands, e-mail: dev-help@maven.apache.org
>>
>>
>

Re: Revisiting: Maven 2.1.1 or Maven 2.2?

Posted by nicolas de loof <ni...@gmail.com>.
You've got my +1 for 1.5 upgrade.
I spent too much time on old JEE appservers with XML parser issues and other
frustrating runtime constraints, I don't wan to see Maven handle bugs with
complex workarounds just because some up-to-date dependencies cannot be
used. So fiew projects are still 1.4 compatible ! I myself updated the GWT
plugin to 1.5 by claiming GWT uses this API level itslef :p

As a side effect, with migration to 1.5 we could use generics for API
collections, and avoid newbee (and other) developpers to search by hand what
project.getArtifacts() returns as type ;)

Nicolas

2009/4/28 John Casey <jd...@commonjava.org>

> The problem is, the two http wagons share the same plexus role-hint. This
> means one will always obscure the other inside the Maven runtime. In any
> case, MNG-4147 is only the second reason for changing the Maven release
> version from 2.1.1 to 2.2:
>
> 1. MNG-4140: even working around the NoClassDefFoundError for XPath* in JDK
> 1.4, this means that version expressions won't be interpolated on
> install/deploy unless JDK 1.5+ is used. This was something we talked about
> in [1].
>
> While catching NoClassDefFoundError seemed like a solution, it will
> actually regress the behavior for JDK 1.4 users...version-expression
> interpolation won't happen at all for them.
>
>
> 2. MNG-4147: the aforementioned case where long passwords cause line
> wrapping in the Authorization header value. This may not be compelling by
> itself, but leaving both this and the interpolation changes above out makes
> Maven 2.1.1 a whole lot less attractive IMO.
>
>
> -john
>
> [1] http://tinyurl.com/cqcrlp
>
>
> Jochen Wiedmann wrote:
>
>> On Tue, Apr 28, 2009 at 9:33 PM, John Casey <jd...@commonjava.org>
>> wrote:
>>
>>  However, there is another issue that I feel is important to address:
>>> MNG-4147.
>>>
>>
>> I have to admit that I find the problem of a "very long password" fairly
>> exotic.
>> Apart from that, there should be a possible workaround by explicitly
>> choosing
>> the httpclient-based wagon implementation. (This workaround isn't
>> mentioned
>> in the issue. Shouldn't it?)
>>
>> In summary, I think this is no reason for heavy changes like switching
>> to 1.5, or
>> replacing the default Wagon implementation.
>>
>>
>> Jochen
>>
>>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
> For additional commands, e-mail: dev-help@maven.apache.org
>
>

Re: Revisiting: Maven 2.1.1 or Maven 2.2?

Posted by Jochen Wiedmann <jo...@gmail.com>.
On Tue, Apr 28, 2009 at 11:02 PM, John Casey <jd...@commonjava.org> wrote:

> So, what is an adequate reason in your eyes for moving to 1.5?

The thread you mentioned contained a few. ;-)


-- 
Don't trust a government that doesn't trust you.

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


Re: Revisiting: Maven 2.1.1 or Maven 2.2?

Posted by Brett Porter <br...@apache.org>.
On 29/04/2009, at 7:32 AM, John Casey wrote:

> My original message was to give people a chance to discuss whether  
> there was any reservation in just going to 2.2 as the next release  
> version. I know it was mentioned in the other thread, but IIRC  
> nobody really commented on it much.

I don't mind either way. I don't think the changes included are that  
compelling, but the fact of seeing "2.1" as a version far behind us  
and that you are doing the work is compelling enough for me.

I'll comment on the wagon thread some more directly.

- Brett


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


Re: Revisiting: Maven 2.1.1 or Maven 2.2?

Posted by John Casey <jd...@commonjava.org>.
My original message was to give people a chance to discuss whether there 
was any reservation in just going to 2.2 as the next release version. I 
know it was mentioned in the other thread, but IIRC nobody really 
commented on it much.

Brian Fox wrote:
> We already decided to move to 1.5 in 2.1 but never did. For me it's a 
> given in 2.2, why even bother debating it?
> 
> John Casey wrote:
>> Read MNG-4140. We had a solution much like you mention (it used string 
>> searches, not DOM searches, but amounts to the same thine...the 
>> <version> element is context-sensitive).
>>
>> So, what is an adequate reason in your eyes for moving to 1.5?
>>
>> Jochen Wiedmann wrote:
>>> On Tue, Apr 28, 2009 at 10:24 PM, John Casey <jd...@commonjava.org> 
>>> wrote:
>>>
>>>> 1. MNG-4140: even working around the NoClassDefFoundError for XPath* 
>>>> in JDK
>>>> 1.4, this means that version expressions won't be interpolated on
>>>> install/deploy unless JDK 1.5+ is used. This was something we talked 
>>>> about
>>>> in [1].
>>>
>>> If I understand the issue correctly, then it is about finding
>>> <version>.*</version> in a DOM tree. That's easily possible without
>>> XPath (see below).
>>>
>>> Don't get me wrong: I am not refusing 1.5 as a dependency at all. I'm
>>> just refusing it for the reasons you mention.
>>>
>>> Jochen
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
>> For additional commands, e-mail: dev-help@maven.apache.org
>>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
> For additional commands, e-mail: dev-help@maven.apache.org
> 

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


Re: Revisiting: Maven 2.1.1 or Maven 2.2?

Posted by Brian Fox <br...@infinity.nu>.
We already decided to move to 1.5 in 2.1 but never did. For me it's a 
given in 2.2, why even bother debating it?

John Casey wrote:
> Read MNG-4140. We had a solution much like you mention (it used string 
> searches, not DOM searches, but amounts to the same thine...the 
> <version> element is context-sensitive).
>
> So, what is an adequate reason in your eyes for moving to 1.5?
>
> Jochen Wiedmann wrote:
>> On Tue, Apr 28, 2009 at 10:24 PM, John Casey <jd...@commonjava.org> 
>> wrote:
>>
>>> 1. MNG-4140: even working around the NoClassDefFoundError for XPath* 
>>> in JDK
>>> 1.4, this means that version expressions won't be interpolated on
>>> install/deploy unless JDK 1.5+ is used. This was something we talked 
>>> about
>>> in [1].
>>
>> If I understand the issue correctly, then it is about finding
>> <version>.*</version> in a DOM tree. That's easily possible without
>> XPath (see below).
>>
>> Don't get me wrong: I am not refusing 1.5 as a dependency at all. I'm
>> just refusing it for the reasons you mention.
>>
>> Jochen
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
> For additional commands, e-mail: dev-help@maven.apache.org
>

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


Re: Revisiting: Maven 2.1.1 or Maven 2.2?

Posted by John Casey <jd...@commonjava.org>.
Read MNG-4140. We had a solution much like you mention (it used string 
searches, not DOM searches, but amounts to the same thine...the 
<version> element is context-sensitive).

So, what is an adequate reason in your eyes for moving to 1.5?

Jochen Wiedmann wrote:
> On Tue, Apr 28, 2009 at 10:24 PM, John Casey <jd...@commonjava.org> wrote:
> 
>> 1. MNG-4140: even working around the NoClassDefFoundError for XPath* in JDK
>> 1.4, this means that version expressions won't be interpolated on
>> install/deploy unless JDK 1.5+ is used. This was something we talked about
>> in [1].
> 
> If I understand the issue correctly, then it is about finding
> <version>.*</version> in a DOM tree. That's easily possible without
> XPath (see below).
> 
> Don't get me wrong: I am not refusing 1.5 as a dependency at all. I'm
> just refusing it for the reasons you mention.
> 
> Jochen
> 

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


Re: Revisiting: Maven 2.1.1 or Maven 2.2?

Posted by Jochen Wiedmann <jo...@gmail.com>.
On Tue, Apr 28, 2009 at 10:24 PM, John Casey <jd...@commonjava.org> wrote:

> 1. MNG-4140: even working around the NoClassDefFoundError for XPath* in JDK
> 1.4, this means that version expressions won't be interpolated on
> install/deploy unless JDK 1.5+ is used. This was something we talked about
> in [1].

If I understand the issue correctly, then it is about finding
<version>.*</version> in a DOM tree. That's easily possible without
XPath (see below).

Don't get me wrong: I am not refusing 1.5 as a dependency at all. I'm
just refusing it for the reasons you mention.

Jochen

-- 
Don't trust a government that doesn't trust you.


    public Node[] findVersionNodes(Node pNode) {
        final List nodes = new ArrayList();
        findVersionNodes(nodes, pNode);
        return (Node[]) nodes.toArray(new Node[nodes.size()]);
    }

    private void findVersionNodes(List pNodes, Node pNode) {
        switch (pNode.getNodeType()) {
            case Node.ELEMENT_NODE:
                if (pNode.getNodeType() == Node.ELEMENT_NODE  &&
                        "version".equals(pNode.getLocalName())  &&
                        (pNode.getNamespaceURI() == null  ||
"<maven-pom-namespace>".equals(pNode.getNamespaceURI()))) {
                    boolean nonTextNodes = false;
                    for (Node child = pNode.getFirstChild();  child !=
null;  child = child.getNextSibling()) {
                        switch (child.getNodeType()) {
                            case Node.TEXT_NODE:
                            case Node.CDATA_SECTION_NODE:
                            case Node.COMMENT_NODE:
                                break;
                            default:
                                nonTextNodes = true;
                                break;
                        }
                    }
                    if (!nonTextNodes) {
                        pNodes.add(pNode);
                        return;
                    }
                }
                break;
            case Node.DOCUMENT_FRAGMENT_NODE:
            case Node.DOCUMENT_NODE:
                break;
            default:
                return;
        }
        for (Node child = pNode.getFirstChild();  child != null;
child = child.getNextSibling()) {
            findVersionNodes(pNodes, child);
        }
    }

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


Re: Revisiting: Maven 2.1.1 or Maven 2.2?

Posted by John Casey <jd...@commonjava.org>.
The problem is, the two http wagons share the same plexus role-hint. 
This means one will always obscure the other inside the Maven runtime. 
In any case, MNG-4147 is only the second reason for changing the Maven 
release version from 2.1.1 to 2.2:

1. MNG-4140: even working around the NoClassDefFoundError for XPath* in 
JDK 1.4, this means that version expressions won't be interpolated on 
install/deploy unless JDK 1.5+ is used. This was something we talked 
about in [1].

While catching NoClassDefFoundError seemed like a solution, it will 
actually regress the behavior for JDK 1.4 users...version-expression 
interpolation won't happen at all for them.


2. MNG-4147: the aforementioned case where long passwords cause line 
wrapping in the Authorization header value. This may not be compelling 
by itself, but leaving both this and the interpolation changes above out 
makes Maven 2.1.1 a whole lot less attractive IMO.


-john

[1] http://tinyurl.com/cqcrlp


Jochen Wiedmann wrote:
> On Tue, Apr 28, 2009 at 9:33 PM, John Casey <jd...@commonjava.org> wrote:
> 
>> However, there is another issue that I feel is important to address:
>> MNG-4147.
> 
> I have to admit that I find the problem of a "very long password" fairly exotic.
> Apart from that, there should be a possible workaround by explicitly choosing
> the httpclient-based wagon implementation. (This workaround isn't mentioned
> in the issue. Shouldn't it?)
> 
> In summary, I think this is no reason for heavy changes like switching
> to 1.5, or
> replacing the default Wagon implementation.
> 
> 
> Jochen
> 

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


Re: Revisiting: Maven 2.1.1 or Maven 2.2?

Posted by Jochen Wiedmann <jo...@gmail.com>.
On Tue, Apr 28, 2009 at 9:33 PM, John Casey <jd...@commonjava.org> wrote:

> However, there is another issue that I feel is important to address:
> MNG-4147.

I have to admit that I find the problem of a "very long password" fairly exotic.
Apart from that, there should be a possible workaround by explicitly choosing
the httpclient-based wagon implementation. (This workaround isn't mentioned
in the issue. Shouldn't it?)

In summary, I think this is no reason for heavy changes like switching
to 1.5, or
replacing the default Wagon implementation.


Jochen

-- 
Don't trust a government that doesn't trust you.

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


Re: Revisiting: Maven 2.1.1 or Maven 2.2?

Posted by nicolas de loof <ni...@gmail.com>.
Can't we create a 2.1.1 branch only if required by some blocker issue ?

2009/4/30 Paul Benedict <pb...@apache.org>

> Are we sure we don't want a 2.1.1 to just get rid of some regressions?
> 2.2.0 sounds good with the reasons stated, but it just seems goofy
> 2.1.0 would have no point release after that.
>
> On Wed, Apr 29, 2009 at 12:57 AM, Benjamin Bentmann
> <be...@udo.edu> wrote:
> > John Casey wrote:
> >
> >> So, I propose the following: we should do a very tightly focused 2.2.0
> >> release next, and forget 2.1.1.
> >
> > +1
> >
> >
> > Benjamin
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
> > For additional commands, e-mail: dev-help@maven.apache.org
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
> For additional commands, e-mail: dev-help@maven.apache.org
>
>

Re: Revisiting: Maven 2.1.1 or Maven 2.2?

Posted by Jochen Wiedmann <jo...@gmail.com>.
On Thu, Apr 30, 2009 at 8:04 AM, Paul Benedict <pb...@apache.org> wrote:

> Are we sure we don't want a 2.1.1 to just get rid of some regressions?
> 2.2.0 sounds good with the reasons stated, but it just seems goofy
> 2.1.0 would have no point release after that.

If Maven 2.2 would depend on 1.5, then further maintenance for 2.1
should occur anyways. (Sufficient interest assumed. :-)

Jochen

-- 
Don't trust a government that doesn't trust you.

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


Re: Revisiting: Maven 2.1.1 or Maven 2.2?

Posted by Paul Benedict <pb...@apache.org>.
Are we sure we don't want a 2.1.1 to just get rid of some regressions?
2.2.0 sounds good with the reasons stated, but it just seems goofy
2.1.0 would have no point release after that.

On Wed, Apr 29, 2009 at 12:57 AM, Benjamin Bentmann
<be...@udo.edu> wrote:
> John Casey wrote:
>
>> So, I propose the following: we should do a very tightly focused 2.2.0
>> release next, and forget 2.1.1.
>
> +1
>
>
> Benjamin
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
> For additional commands, e-mail: dev-help@maven.apache.org
>
>

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


Re: Revisiting: Maven 2.1.1 or Maven 2.2?

Posted by Benjamin Bentmann <be...@udo.edu>.
John Casey wrote:

> So, I propose the following: we should do a very tightly focused 2.2.0 
> release next, and forget 2.1.1.

+1


Benjamin

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