Hello,
I would like to throw my 50cts in the discussion, drawn from my
experience teaching maven and consulting about software quality and
SDP in general, so-called "maven expert" - not that I claim the title
anyhow :-). 

The first piece of information that is missing, IMHO, is a bird's eye
view of how maven is working, the underlying concepts and best
practices behind it, which is often summarized as "convention over
configuration". It is difficult, as a teacher, to make people grasp
the workflow of using maven: They usually stick to a procedural view
(eg. à la Ant/make/scripts) which is obviously the wrong way as maven
is not designed that way. 

I very recently gave a four days course on maven to experienced
developers and PMs in a big company which develops a lot of
software. The overall tone was that of Patrick's post: 1) maven looks
great, but documentation, beyond "Hello world" and below plugin
development is poor/badly organized; 2) it is difficult to have common
tasks (eg. moving files around, knowing which dependencies are used
and can be excluded...) done quickly; 3) XML sucks.
Let's put 3) aside for now on.

When you explain the inner workings of maven: dependency management,
reactor, plugins, projects' structure, repositories (and those dreaded
snapshots), standard phases, the rest - profiles, filtering, testing -
sounds generally clearer:
 - one can cleanup the mess in 1),
 - it becomes obvious why 2) happens and you can start thinking the
   maven way.

I did a small exercise. I asked the attendants to provide me with a
sample project they were currently working on and we worked together
on mavenize it. We started from a custom ant-based built project,
where the build.xml is generated to 3500 lines of ant from a project
dependency description (ie. dependencies) and which amounted to
300kLoc of java. We ended up with a plan for mavenization that
emphasized the strengths of maven: eeasy dependency management,
parameterized assemblies for various build targets, simple POMs with
small grained components breakdown... The net result was really
convinced (at least on a whiteboard) and helped the audience improve
their understanding of maven.

Based on this and other experiences, I could suggest the following
actions to help improve maven's documentation and so called 'user
experience'. Note that these proposals are partial and I also think
that improving UI of maven's sites would also help. 

 1. Keep a "getting started" or "maven for dummies" section prominent
    on web site
 2. Add in second position a "How it works" document, with highilights
    of the implicit assumptions about Software Development Process
    behind maven
 3. Add in third position a "Transitionning from Ant/make/whatever"
    document, with a concrete example of a project's transformation
 4. Add a "Pros and Cons" section that would highlight what is easy
    and what is hard in maven

To address point 3) above, I definitely think that providing some sort
of simple language beside XML to defines poms would be great: Although
XML is widely known, it is not widely loved and tends to create
cluttered POMs. 

My 50 cts,
-- 
OQube < software engineering \ génie logiciel >
Arnaud Bailly, Dr.
\web> http://www.oqube.com


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to