2009/12/30 Kristian Rosenvold <kristian.rosenv...@gmail.com>

> Jason van Zyl wrote:
>
> > I honestly think it will be easier for people to get involved in the 3.0
> codebase.
>
> Somewhere along the line in the flurry of emails that have been coming
> along today I got the impression that a transition to guice has been
> called off for M3.
>

Hi Kristian,

I doubt it will make 3.0, but this isn't necessarily a bad thing as it means
we're
not changing a lot of things at once. We used Nexus as an early adopter to
test
and stabilize the shim code, which really helped nail down some issues - and
it
should soon be time to try it with Maven.

Right now I can run exactly the same Nexus binaries with Plexus or
Guice+shim
- no code changes required. Supporting Maven means extending the shim which
shouldn't be a huge piece of work, especially if other people help out :)

When complete we should be able to drop it into 3.1 without breaking anyone.

I think that's a shame, and having only recently gotten a little "more
> involved" with the maven code-base, I have felt the pain that plexus can
> inflict.
>
> I will try not to start any plexus-bashing, but given the discussion
> that has been going on today about how M3 is a significant cleanup of
> inner workings, I find stopping before getting rid of plexus strange.
>

Many legacy plugins will continue to use Plexus annotations to inject
components,
so we need to be compatible - hence the shim (provides Plexus API and
semantics
on top of vanilla Guice).

When we first switch to the Guice-powered runtime these components and
plugins
will continue to use Plexus annotations like @requirement, but it'll be
Guice doing
the actual wiring. What happens next is the really interesting bit...

I would be more than willing to spend a fair amount of time to make such
> a transition happen, the sooner the better. Especially if there already
> is a working plexus/guice adapter that can be used as basis. I get this
> feeling I missed some discussion somewhere ?
>

The code is available at http://svn.sonatype.org/spice/trunk/spice-inject -
I'm just
finishing up the last Nexus related issue and sorting out documentation, as
well
as writing one or two blog entries about the new runtime. The code is
modular,
so you could use it to to mimic other IoC containers on top of Guice.

I'll put together some notes explaining how I did the shim analysis for
Nexus, as
we'll need to do the same for Maven (it uses a slightly different version of
Plexus)

Thanks for the offer of help!

But then again, we all must release sometime - I just needed to vent
> my frustration with plexus. Switching to guice also has a motivational
> effect on people wishing to work with the maven codebase; developers
> like to work with code they feel is "hot".
>

Once the shim is done the really interesting work can start: making the most
of the
new runtime. Such as switching plugins over to use @Inject, contributing
your own
Guice bindings, etc. Nothing's written in stone yet, so there's plenty of
opportunity
to experiment and find best practices for getting the most from the runtime.

Small steps, but important steps :)


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

-- 
Cheers, Stuart

Reply via email to