On 20 Sep 2005, at 16:15, John Casey wrote:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Comments are inline. Please bear with me, I think my responses are as
lengthy as your original email! :(

Cheers,

John

Ashley Williams wrote:
| Sincere apologies to the dev team if this email seems like a troll, I
| absolutely don't mean it to be. I'm aware that they continue to do
| outstanding work and are few in number.
|
| The more I use Maven the more I get a feel for the size and shape of it | and find myself looking for features that aren't there. Since I joined | the community I've posted questions on what I consider to be the most
| important aspects of a build system namely (yes in this order):
|
| 1. Usability from Ant - there are hundreds of Ant targets out there
| that are useful for me today. I can't justify waiting for them to be
| rewritten as Maven equivalents not only because I need functionality
| today, but also because I don't see why I have to abandon my experience
| with ant.

I've already addressed this with you and others on this list. I've
mentioned that I'm fully in favor of this sort of integration, and I
have some starting points from Chris that I'll be putting in to allow
this sort of thing. You don't have to wait for all of Ant's API to be
replicated; you only have to wait for me to get this one change in place. :)


I'm extremely pleased to hear this. I meet all sorts on this list and I don't know which contributors are most responsible for steering the project or are just
giving there opinion on what they would like to happen. Maybe the
roadmap could be maintained a little to show which suggestions have actually
been taken on board.

|
| 2. Usability from Eclipse - when will I be able to ditch the command
| line and create and manage projects entirely from eclipse

This depends on people with Eclipse development experience (not
experience using Eclipse) picking up the task and running with it. We're trying to get something together in the way of a more concerted effort, but I'm sure you'll agree that getting a stable API was the first thing
to do, since otherwise the Eclipse integration project would have to
track a moving target. Now that we've got a beta-1 release, we can start
thinking about this.

|
| 3. Need to do a myriad of simple things such as automatically run java | command or deploy to tomcat. I used to do this all the time in my ant | scripts, ie run my build.xml script and at the end it would run my app | on completion. It's a credit to those on this list who reply with ideas
| and workarounds - however this is kind of related to  2 above, where
| there are lots of ant tasks out there that are tested to death and that
| I should be able to use today.

The funny thing about Maven 2 is that it facilitates external plugin
development. You can load a plugin from a repository hosted anywhere.
Personally, I feel strongly that executing random commands from within
the build process is a Bad Thing,

I can already do that with a mojo - I can write any old java and attach it to any old lifecycle phase. BUT I would love to get up to that same mischief
using the language/syntax of Ant rather than Java!

and a thing that is bad and common
with Ant. Maven - and also Ant, to a lesser extent - is a build tool.
It's not a launching platform, and it's not a tool to be used to run
your coffee maker. Executing random commands from a configuration in a
POM is:

a. unscaleable, since that runtime config is not encapsulated for reuse

b. bound to partition your build logic into multiple pieces, which now
have to be maintained from multiple sources.

In Ant, you can do anything you please, including things that don't
relate to the process of building software. It's important to keep a
clear idea of the problem domain we're trying to address here.
Having said that, there's nothing stopping you from hosting your own
maven-foo-plugin on Sourceforge or somesuch. If you find what you
perceive to be a hole in our plugin offering, and cannot convince us to fill it, there's nothing stopping you from scratching your own itch. We currently have maven-execute-plugin on the mojos project, but I'd really
like to see it deprecated and eliminated eventually.

|
| 4. Online documentation. Simple example was trying to get the assembly | plugin to work which Daniel Shomer had to look into the source code to
| advise me of what to do. This is just one example of  many.

You're not the first to point this out, and properly so. Just this week,
one of the devs started fulltime on fixing this. Documentation has
lagged for a few reasons, which I don't offer as excuses. First, the
devs have been trying to stabilize the featureset and functionality
before we try to document it. This is sort of a chicken-egg scenario,
because (as was pointed out) its easier to maintain a clear design
between multiple devs when you have documentation, but documentation of
an evolving API gets stale quickly.

Now that you've read the source code for the assembly plugin, will you
contribute some documentation?
|
| 5. Other project structures. Sometimes I will encounter a project where
| all the source code is in one tree (beginning with com/). I'm  not
| saying its any better than one directory per artifact, but I am saying | I encounter such projects in my career and as such I know I wouldn't be
| able to use maven.

This project can get a little preachy, and I'm no exception. We tend to believe that we've seen a lot of use cases (many on this list), and that
our standard layout is the most elegant solution THAT WE'VE FOUND SO
FAR. I emphasize that, because it's important to acknowledge that
today's gospel is tomorrow's quaint idea. We're focusing on providing
support for that standard layout/model right now, but we will be adding support for other project layouts when we learn of deficiencies. What we
most need is use cases. If you have a specific one, can you share it?
Where, specifically, are you having trouble with meshing your layout and
the POM?

I'm only suggesting one other layout - everything under com/... and only
because it's a 'code layout design pattern' I come across often. Compared to my other points, this one isn't important for me. I do like the fact that
Maven gets preachy because it means that I know what to expect from
project to project. However I still feel entitled to point out where I feel Maven
could be a little more generous!
|
| 6. Contribute to the code. I have tried to get a foot in the door in
| order to fix some of my own critisisms, but the lack of javadocs mean | that I really can't do this other than for some simple plugins. That is | unless I had lots of time to spare which I don't. In turn that makes me | concerned how the project will attract other developers to move things
| along quickly.

I addressed this a little bit above, but I believe Maven 2 is still
climbing that maturity curve. We're climbing fast, but there are bound
to be places that need attention. Javadocs may help, but an
architectural overview and set of mini HOW-TOs may go a lot further.
There are very few methods in the code that aren't self- explanatory, at
least at a high level.
However, I still agree that javadocs would be a
good thing. Unfortunately, as you've so eloquently pointed out, there is
a long line of Good Things waiting for attention

At the very least couldn't we javadoc the mojo properties so that the plugins
on the maven website have actual descriptions? I'm guessing you eat your
own dogfood and autogen your webpages from the mojo code.

...this is where we have
to prioritize, and choose which ones we will attend to first. We've
chosen code/feature stability, and API stability heretofore, but we're
starting to focus on POM usability, additional plugin languages, and
documentation now that we're in bugfix mode.

If you've spent any time in the sources, and found that you understood
even a small portion when you were done, would you be willing to write
some of these javadocs and submit a patch? Every contribution, however
small, will push us closer to the level of maturity you desire.

See my comment later. But personally I would never javadoc somebody elses code unless I was getting paid a lot of money for it. Seriously the most likely way for code to get javadoced is for the coder to do it themselves, in my opinion.
Take from that the unfortunate corollary.

|
| I realize there may be workarounds for some of the above, but I
| couldn't stick my neck on the line for a dev team and recommend sharing | of eclipse hack scripts etc as a way of working. I'm also putting my | selfish hat on and say that I'd like to do the above without defending | it - there are a few threads on this list already that deal with the
| pros and cons.
|
| ***************************************
|
| Now I'll turn my attention to Ivy. I've began to look at this product
| and it seems to offer many of the features of Maven including
|
| 1. transitive dependencies

If I understand correctly, Ivy depends on profile name consistency for
transitivity to function properly...

| 2. compatibility with the ibiblio repository

Maven 2 has this compat as well, and can probably supply the same level
of functionality as Ivy given the quality of metadata in the m1
repository. You can specify a repository with <layout>legacy</layout>
and it should work. But we're hoping for much more than this.

|
| and in addition
|
| 1. the online docs are excellent even if they are in broken english

Ivy is an overlay for Ant, meant only to provide transitive dependency
resolution and compat with the m1 repository. This means it's a
relatively small project, and therefore have the ability to climb that
maturity curve faster.

As a side note, Ant 1.7 will be using Maven 2.0's artifact-handling API.
This, after Ivy has been out there available for integration for some
time now. Why is that, do you think?

| 2. Can manage projects from with eclipse, since they are just ant
| projects (with simple projects, haven't tried anything tricky)

What level of integration do you need here? Would it be feasible, for
example, to create a set of command-line execution profiles in Eclipse, to call various m2 targets? I've done this successfully with svn, when I
found subclipse to be far too sluggish and flaky.

| 3. Can manage maven style module directory structures or single source | trees. Obviously being Ant, it can manage any structure you like, but
| these are the only two sane ones I know.

If I understand correctly, the m2 eclipse plugin does have some support
for this, although I'm not the best person to speak about it. To some
extent, solutions to this will be compromised by Eclipse's lack of
nested project support...which in some cases can lead to set-semantics
when collecting dependencies for a hierarchy of projects...which can in
turn lead to sources compiling in Eclipse but not in Maven, since the
dependency declarations are not the same. The eclipse integration has
been escalated as a priority recently, but we're not likelly to have
anything for at least a few weeks. We understand the market share that
Eclipse commands, and its value for integration...unfortunately, we
haven't had the time to devote to external m2 integations up to now.

|
| Yes there is stuff that it doesn't have such as a built in lifecycle, | but with what I've learnt from the maven layout, I feel I could quite
| easily replicate that in ant in a reusable way. That said I would
| prefer not to have to. I suppose I'm looking for reassurance as to why | Maven is the way to go because there seems to be considerable overlap
| with Ivy.

'Considerable' is a tad exaggerated, IMHO. Maven gives you reusability,
not only of plugin functionality, but also of project information (the
POM specifies most of what plugins need, so project configuration scales
better than Ant for the marginal plugin). It also provides a single,
simple lifecycle that ensures a sane progression from task to task in
order. This lifecycle is the same for everything you will build, since
plugins bind to the lifecycle behind the scenes.

If you attempted to build a lifecycle on top of Ant, I think you'd find
~ a couple of things to be true:

1. it's not as simple as it seems, particularly if you build multiple
types of projects (EJB, EAR, WAR, JAR, DLL, RPM, ...)

2. unless you attempt to open source your own solution - which means it
will have to have general applicability, which itself is not a trivial
goal - you will have to maintain your lifecycle layer in addition to
your actual build scripts. Tracking something like this against updates
in Ant and Ivy is not trivial...I tried something similar before Maven
came along. The problem is that maintaining this lifecycle layer will
not directly impact your company's bottom line, so they will be
reluctant to give you much slack time to maintain it.

It would be great to see this sort of information on the Maven Website - I'm guessing there are others who are looking at both Ivy and Maven. Go to the Ivy website
and the guys there are favorably comparing their product with Maven.
|
| ****************************************
|
| I realize that I am being very selfish here, but I have to think very | carefully about what I invest my time in. Maven has all the hallmarks | of being that software that I felt was missing during my career, which | is why I care enough about it to spare the time for these critisisms. I
| just want to be sure it has a chance of gaining  critical mass.
|
| Maybe the gatekeeper/guardian of this project needs to write some sort | of Jerry Maguire style memo that says what Maven's purpose is and plans
| are so that we can all keep focused on that.
|
| Maybe my views aren't representative of a large enough demographic in
| which case this email will just slip away into obscurity, but either
| way thanks for reading and please don't take it as a troll

I appreciate you taking the time to articulate your concerns. There is
no doubt in my mind that many of the points you raise will resound with
users, both current and potential. However, I have a question for you:

How long did you spend on this email?

It's fairly involved, and judging by the time I've spent responding, it took some effort. Did you do this in the course of your workday? If so,
can you afford this amount of time a couple times a week? I'd like to
encourage you to spend this amount of time exploring our APIs, writing
javadocs (or whatever doco, etc. you see fit) and submitting patches.
This much effort from a few users like you would really make a
difference fast, IMO.

Just something to think about. Even small patches will eventually add up.

You've guessed that I've got time on my hands! However only because I'm between contracts
and so I'm spending some time looking at those projects that have always
interested me, maven being top of the list (but there are others). Outside of office hours my commitments mean that I have little time to make meaningful contributions to opensource projects. I did try to make an exception for Maven, but I haven't been able to get up to speed with the Maven code base quickly enough, which was one of my gripes.

- -john

|
| -AW
|
| ---------------------------------------------------------------------
| To unsubscribe, e-mail: [EMAIL PROTECTED]
| For additional commands, e-mail: [EMAIL PROTECTED]
|
|
|
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.6 (GNU/Linux)

iD8DBQFDMCeJK3h2CZwO/4URAhfPAKCD1iOtdPe2NO0j8KY6vg0L7oUW4ACgnZpk
7bbtGsKkiZKm8o/wOqY4Sjo=
=JcXf
-----END PGP SIGNATURE-----

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




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

Reply via email to