On Mar 6, 2013, at 6:09 PM, Olivier Lamy <ol...@apache.org> wrote:

> 2013/3/4 Hervé BOUTEMY <herve.bout...@free.fr>:
>> some more personal thoughts and questions to make myself an opinion
>> 
>> - about determining whether Aether API is biased or not: there was an 
>> argument
>> for not developing Aether in Maven that was "Aether API will be more generic
>> to cover other dependency resolution mecanisms and repository formats, like
>> P2". Is there something done on this area (be it P2 or anyhting else outside
>> Maven use)?
>> 
>> - about maintaining a 3.1.0 bugfix branch like the actual one in parallel 
>> with
>> the master incorporating Eclipse Aether: isn't it the area where the git move
>> was expected to help? The 3.1.0 is just a bugfix branch, without much commits
>> expected since the work will happen on master (and on every 
>> components/plugins
>> having an impact from Eclipse Aether integration), or do I miss something?
>> I suppose these outside component will require some time to adapt and propose
>> a solution for users.
> 
> In such case why not using the opportunity of 4.0.0 to back to a
> org.apache.maven namespace (with a wrapper on top of the real
> implementation).

Go for it. As I wrote previously if anyone wants to make a shim or 
compatibility layer over Eclipse Aether they are welcome too. I'm not doing for 
all the reasons I cited previously, but feel free to take the opportunity.

> At least that will be a more stable namespace. (If did as it since the
> beginning we could think about something else now !)
> 
>> 
>> 
>> Regards,
>> 
>> Hervé
>> 
>> Le dimanche 3 mars 2013 19:24:23 Jason van Zyl a écrit :
>>> Stephen,
>>> 
>>> It doesn't matter where the code is. It's complicated, takes a lot of effort
>>> to understand and I don't really care, or see it as a problem that Benjamin
>>> is the one who works on it most. No one else worked on here, no one else is
>>> working on it there. It's not where it is, it's that it's a non-trivial
>>> body of code that requires focus and effort that any casual observer
>>> doesn't have the time for. The only people who have ever worked on it are
>>> those that were employed to work on it specifically. I don't see this as an
>>> issue, it's simply the way it is.
>>> 
>>> Aether is already exposed and it's because the Maven Artifact APIs are
>>> anemic that it's used directly. Aether is complete, anything else made is
>>> just going to make a huge wrapper around that which serves no purpose
>>> really. If in the 18 months since Aether has been at Eclipse nothing has
>>> been done do you really think anything can be made in a timely fashion? I
>>> think that unlikely. There's probably 1000 man hours in Aether at least and
>>> there's probably lots of biases in the codebase because no one contributes
>>> anything to it for all the reasons cited above. Such is the reality we have
>>> right now.
>>> 
>>> Until I actually merged in Eclipse Aether, worked with Benjamin to get all
>>> the ITs working, and testing it in the field with 10 or so people I didn't
>>> know how much work was involved, or what plugins were affected until I
>>> started getting feedback. I am not interested in weaving stuff back and
>>> forth between the branches given that all the ITs work with Eclipse Aether
>>> merged in and there are a few plugin compatibility issues.
>>> 
>>> I myself cannot imagine trying to keep the two of those branches in sync and
>>> I don't see the point because the Eclipse Aether stuff is ready. I have the
>>> energy to maintain what I proposed. Even if someone wanted to stand up and
>>> maintain the 3.1.x branch I believe it would be a waste of time given what
>>> little time the core receives.
>>> On Mar 3, 2013, at 5:54 PM, Stephen Connolly
>> <stephen.alan.conno...@gmail.com> wrote:
>>>> On 3 March 2013 14:16, Jason van Zyl <ja...@tesla.io> wrote:
>>>>> Hi,
>>>>> 
>>>>> No one seems to object to doing a release with the SLF4J support without
>>>>> the isolation so I wanted to discuss what happens when we integrate
>>>>> Eclipse
>>>>> Aether and suggest an alternate release path.
>>>>> 
>>>>> SLF4J may cause some issues, but the introduction of Eclipse Aether is
>>>>> almost certainly going to cause issues. In Eclipse Aether some internal
>>>>> representations have been changed and it's not completely backward
>>>>> compatible. These changes have been made for good reason but because we
>>>>> waited almost 18 months to attempt to integrate Eclipse Aether there is
>>>>> some drift in the APIs and the Sonatype Aether APIs have leaked out into
>>>>> plugins like the Android Maven Plugin, the Shade Plugin, the Dependency
>>>>> Plugin and any plugin that reaches into the core of Maven to get Aether
>>>>> classes. Shielding Aether from users hasn't worked out in practice.
>>>>> 
>>>>> I have had a version of Tesla[1] that integrates SLF4J and Eclipse Aether
>>>>> and the ITs pass but I've had many issues with plugins (and with the
>>>>> latest
>>>>> JDK8 I need to track down). I've had people using it for a couple weeks
>>>>> and
>>>>> all of them have run into Aether related issues in one or more of the
>>>>> plugins I've mentioned above. I quickly tried to build the new dependency
>>>>> plugin with the dependency tree and it doesn't appear yet to bridge the
>>>>> difference between Sonatype Aether and Eclipse Aether in the dependency
>>>>> plugin. I'm not sure this approach will work.
>>>>> 
>>>>> I can tell you from the first time we created a shim between Aether and
>>>>> the Maven Artifact APIs that this was not fun and it took full-time work
>>>>> for a couple months. I am not willing to do that again and I honestly
>>>>> doubt
>>>>> anyone but myself or Benjamin can do it in a reasonable amount of time
>>>>> and
>>>>> neither of us want to do it. I don't think it's the end of the world that
>>>>> some plugins that touch Aether will not work without some upgrading. But
>>>>> this is a major API breakage and would deserve a major version change to
>>>>> 4.0.0. I think it needs to be clear that people know what they may
>>>>> potentially be getting themselves into.
>>>> 
>>>> I have not formed an opinion yet, but here are some things that are
>>>> filtering around in my head w.r.t. this proposal.
>>>> 
>>>> * When the switch to Aether was originally put forward, the promise was
>>>> that with Aether at Eclipse there would be a community of people to work
>>>> on
>>>> the directed dependency graph problem set...
>>>> 
>>>> http://lh5.ggpht.com/-MY5CB_MVKCo/UQErH7pws-I/AAAAAAAAAK8/WT_zSXWy2eQ/grap
>>>> h.png?imgmax=800
>>>> 
>>>> I am seriously worried when I see that *I* am the #3 most active committer
>>>> to Aether at Eclipse, not that I don't believe I could be a contributor to
>>>> Aether, more that I have on two occasions said "OK, Stephen, time to try
>>>> and get involved with Aether", started trying to get my feet wet with some
>>>> small tweaks, and then had my spare time stolen again. I.O.W. I have not
>>>> engaged with Aether to the level I feel comfortable with saying *I* am a
>>>> significant contributor...and I (as of 3rd Feb 2012) am the #3 committer!
>>>> 
>>>> * OK, so logback has effectively 1 active committer... but a very long
>>>> history, and an API that other implementations are available for, and it's
>>>> the defacto standard. Aether has really only got users because of Maven
>>>> from what I can see, and it's got Benjamin as its developer and driver.
>>>> Now
>>>> Benjamin knows this space backwards and is great at writing good code...
>>>> if
>>>> this is the proposal to resolve the issue of keeping Benjamin's skills
>>>> available for Maven, while Benjamin (for perfectly legitimate, if outside
>>>> of the control of the PMC, reasons) does not want to develop code at ASF
>>>> (based on the evidence of not seeing any engagement from Benjamin since
>>>> the
>>>> Board reared its heavy hand), then lets state it as such. But I see that
>>>> the community of logback developers vs the community of aether developers
>>>> are a different kettle of fish. If we tie ourselves now to the Aether API,
>>>> we make it hard to move to an alternative implementation. If there were
>>>> two
>>>> competing implementations of the Aether API I would be happy to say that
>>>> the API is robust and there has been true separation of API from
>>>> Implementation. In this case we have and API with one and only one
>>>> implementation, it may or may not have true separation of API from
>>>> Implementation, but without having been hardened by having a second
>>>> implementation, it is hard to know for sure. There may be design biases
>>>> based on the views of the implementers.
>>>> 
>>>> I guess my point is that I would need to be convinced some more that we
>>>> would not be baking an API with biases into the core of Maven. Right now
>>>> we
>>>> have the case where a few plugins have leaked dependencies to Sonatype
>>>> Aether, the Maven developer view has been that plugin authors should not
>>>> do
>>>> that, but obviously some have, in so doing they should have been aware of
>>>> the risk they take in using APIs that Maven is not saying are part of the
>>>> exported hull.
>>>> 
>>>> Having said that, nobody else has stood up to say "oh I have an
>>>> alternative
>>>> for Aether" so we cannot propose an alternative at this point, and as you
>>>> point out, there is a need for some of the information to be exposed to
>>>> plugins (heck versions-maven-plugin needs some of that stuff, and I know
>>>> how difficult it is to maintain functionality across 2.x and 3.x for
>>>> v-m-p)
>>>> so we need to tell plugin authors here is the API you can rely on. So I am
>>>> currently feeling negative towards using Eclipse Aether as that API, but I
>>>> have no alternative, and I don't have the time to write the shim layer
>>>> myself, so this is not a veto point... just a sore one.
>>>> 
>>>> * John Casey was looking at writing an alternative for Aether. I would
>>>> really like to hear his input w.r.t. how he has got on, and also how well
>>>> the Aether API has abstracted the problem (given that he would have the
>>>> view point of an independent implementation in this problem space). *If*
>>>> John has a nearly complete implementation of his API for dependency graph
>>>> solving, what I would like to see is how difficult it would be to map his
>>>> API as an alternative Aether implementation I.O.W. test how well the
>>>> Aether
>>>> API abstraction is, and test if there are hidden biases that the
>>>> architects
>>>> of the API cannot see by nature of writing their implementation.
>>>> 
>>>>> As such I believe doing a 3.0.5 release, and then a 3.0.6 release (to fix
>>>>> the problem with 3.0.5), a 3.1.0 release for SLF4J and then a 4.0.0 for
>>>>> the
>>>>> Eclipse Aether changes is just going to confuse users greatly. I would
>>>>> prefer to roll in the Eclipse Aether changes and skip the 3.1.0 release
>>>>> and
>>>>> just call it a 4.0.0.
>>>> 
>>>> I think we have said we were going to do a 3.1.0. To be honest this smacks
>>>> a bit too much of the 3.0 rational again... I fear that given we have said
>>>> that we were going to do a 3.1.0, let's stick with that. It gives us a
>>>> little bit more time to digest whether we should bite Eclipse's Aether as
>>>> an exposed API or whether we should shim it.
>>>> 
>>>> I am not, given how little time I have to commit code for Maven, going to
>>>> direct the decision, but that is my view. I will let the people who are
>>>> willing to step up and commit drive what versions they want to release.
>>>> 
>>>>> I would just like to move on and start developing some features. Trying
>>>>> to
>>>>> create adapter layers and shims is just going to kill us. I think we
>>>>> should
>>>>> just cut bait because there is no desire amongst the people who can make
>>>>> a
>>>>> shim that have time (myself, Benjamin, Igor) and I doubt Hervé or
>>>>> Kristian
>>>>> really have the time to make a complete shim between the versions of
>>>>> Aether. The few points that people are calling into Aether essentially
>>>>> expose the whole API so the shim needed will be enormous given the
>>>>> package
>>>>> name changes and the API changes in Aether. It will be very much like
>>>>> bridge Aether and Maven Artifact APIs and that simply isn't something
>>>>> that
>>>>> would ever have been done without full-time work and I just don't deem
>>>>> that
>>>>> a worthy investment this time.
>>>> 
>>>> I take your point on board, I just don't have a warm and fuzzy feeling
>>>> that
>>>> the API of Aether has no design biases that may preclude some of the
>>>> features that others (such as myself when I *do* get the time) would like
>>>> to add.
>>>> 
>>>>> So I propose rolling in the Eclipse Aether changes along with the JSR330
>>>>> and SLF4J changes and call it 4.0.0. Also I feel that any hiding of the
>>>>> Aether at this point has been a failure. Everyone is jumping around the
>>>>> Maven Artifact APIs because they need to get at more powerful constructs.
>>>>> This hiding of Aether in practice has been futile and no one is every
>>>>> going
>>>>> to make another artifact API in Maven, it's just not going to happen
>>>>> let's
>>>>> face it.
>>>> 
>>>> John, could you please chim in with some status information on your
>>>> explorations
>>>> 
>>>>> Once Eclipse Aether 1.0.0 is released given the Eclipse standards the API
>>>>> will have to remain compatible. I believe all the changes in Aether made
>>>>> in
>>>>> the last 18 months have been worthwhile and there's no point to unwind
>>>>> anything to try and make it work with Sonatype Aether.
>>>> 
>>>> I don't want Sonatype Aether as the API plugins depend on, so we do need
>>>> to
>>>> decouple that from people trying to solve the problem. I don't know yet
>>>> that Eclipse Aether is an API that is the API we want to expose... I am
>>>> not
>>>> saying it isn't, just saying that I don't know it is... yet
>>>> 
>>>>> If we agree on this then I will roll in all the changes, figure out
>>>>> what's
>>>>> wrong with JDK8 and then we release it. The ITs pass and we'll just have
>>>>> to
>>>>> help people adapt their plugins. I talked to Manfred Moser who works on
>>>>> the
>>>>> Android Maven plugin and he doesn't see an issue with updating. We'll
>>>>> just
>>>>> have to update the rest of the plugins or we'll be spending months trying
>>>>> to make a shim or a magic classloader and I'm not sure it's really worth
>>>>> it. I think it's time to move on with our better core and just move on in
>>>>> general.
>>>>> 
>>>>> I think people need to digest this and think about it, but I do believe
>>>>> it
>>>>> is the most practical way forward.
>>>>> 
>>>>> 
>>>>> 
>>>>> SLF4J I consider standard,
>>>> 
>>>> Nothing wrong with that view from my PoV. Multiple implementations, ok so
>>>> the 3 real implementations share the same root author as original
>>>> architect, but there are separate communities and the API has been battle
>>>> hardened for some time. I might quibble with one or two parts of SLF4J,
>>>> but
>>>> it has a massive community and it is the defacto standard.
>>>> 
>>>>> JSR330 is standard
>>>> 
>>>> More than one implementation, the two major implementations have
>>>> completely
>>>> different heritages, again, one may quibble with parts of the API, but it
>>>> is able to have two big implementations stand on top of it.
>>>> 
>>>>> and Eclipse Aether post 1.0.0 will adhere to the Eclipse API guidelines
>>>>> and won't be changing
>>>> 
>>>> But that is a different metric than the other two technologies. Yes it is
>>>> better to use this than Sonatype Aether (which since the move to Eclipse
>>>> is
>>>> effectively a dead stack... but that was the point of *moving* it to
>>>> Eclipse) but that does not prove (in the original sense of "test") that
>>>> the
>>>> API is absent of biases.
>>>> 
>>>> SLF4J is tackling a smallish problem, so biases are easy to spot.
>>>> 
>>>> JSR330 is tacking a problem, to my view, comparable in size to Aether, yet
>>>> it had two major heavyweight implementations collaborate/fight to build a
>>>> common API. As such a lot of the biases will have been shaken out... there
>>>> will still be biases, but there is enough scope between the two major
>>>> implementations for a 3rd implementation to arise, innovate and steal the
>>>> crown. How likely is it that a competing implementation could arise and do
>>>> that with Aether's API?
>>>> 
>>>>> so it's best just to build on these technologies of any new versions of
>>>>> Maven and get on with it.
>>>> 
>>>> SLF4J, you have my +1
>>>> 
>>>> JSR330, you have my +1
>>>> 
>>>> Eclipse Aether...
>>>> 
>>>> * I am +1 on integrating that into Maven,
>>>> * I am _undecided_ on officially exposing it as an API for plugin
>>>> developers.
>>>> 
>>>> I look forward to the debate of those who have the spare time and are
>>>> prepared to walk the walk and commit code on my points above to sway my
>>>> opinion.
>>>> 
>>>> -Stephen
>>>> 
>>>>> Thanks,
>>>>> 
>>>>> Jason
>>>>> 
>>>>> [1]: http://ci.tesla.io:8080/job/tesla-its/ws/
>>>>> 
>>>>> ----------------------------------------------------------
>>>>> Jason van Zyl
>>>>> Founder & CTO, Sonatype
>>>>> Founder,  Apache Maven
>>>>> http://twitter.com/jvanzyl
>>>>> ---------------------------------------------------------
>>>>> 
>>>>> In short, man creates for himself a new religion of a rational
>>>>> and technical order to justify his work and to be justified in it.
>>>>> 
>>>>> -- Jacques Ellul, The Technological Society
>>> 
>>> Thanks,
>>> 
>>> Jason
>>> 
>>> ----------------------------------------------------------
>>> Jason van Zyl
>>> Founder & CTO, Sonatype
>>> Founder,  Apache Maven
>>> http://twitter.com/jvanzyl
>>> ---------------------------------------------------------
>>> 
>>> In short, man creates for himself a new religion of a rational
>>> and technical order to justify his work and to be justified in it.
>>> 
>>>  -- Jacques Ellul, The Technological Society
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
>> For additional commands, e-mail: dev-h...@maven.apache.org
>> 
> 
> 
> 
> -- 
> Olivier Lamy
> Talend: http://coders.talend.com
> http://twitter.com/olamy | http://linkedin.com/in/olamy
> 
> ---------------------------------------------------------------------
> 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 & CTO, Sonatype
Founder,  Apache Maven
http://twitter.com/jvanzyl
---------------------------------------------------------

I never make the mistake of arguing with people for whose opinions I have no 
respect.

-- Edward Gibbon





Reply via email to