1. I don't think anyone can complain with compliance issues. One thing I
would say is, we could/should be using a plugin to resolve the license file
from the url given in the POM, and include it in the appropriate place. Not
only would this ensure that the license is properly included in the binary,
but also that it's accessible separately, which IMO is a good thing. This
doesn't require new core functionality, just a new plugin.

2. I agree completely with the concept of staging a release, voting on it
and/or testing it, and then promoting the binary. This is also something
that many of us are seeing come out of discussions with large corporate
clients, where release engineering is taken *very* seriously. I think we
would need a new 'stage' mojo, and maybe a 'promote' one to go along with
it...then, if there were a way to say that we're following that process (vs.
the original prepare,perform one), we could reuse the prepare mojo. Would it
be a good idea to "stage" out to an incremented RC number of some sort,
rather than pushing it out as a final release? That way, downloaded tarballs
don't get misrepresented.

3. I think we have some code in commons-* somewhere to do pgp signing, but I
don't think it's finished yet. If we could get this done, we could easily
write a plugin to do this during the release process, I think.

-john

On 10/12/06, Daniel Kulp <[EMAIL PROTECTED]> wrote:


Jason and I have had some chats about this, but I thought it might be good
to bring this up to a wider audience...


With more and more Apache projects (specifically incubator projects) using
maven, there are a lot more people that are running into "issues" related
to the apache requirements that are imposed on the build/release
processes.   IMO, Maven itself should act as the "ideal model" for how to
do those things.   Thus, when a question comes up, we can point to maven
and say "look how they are doing it."     So the first question is:  does
that make sense?

The problem is, Maven doesn't seem to do things "correctly", or at least
makes things hard(er) to do correctly.

1) The LICENSE/NOTICE files in the META-INF dir of the jar - currently,
none of the maven plugins do this at all.   I've seen projects handle
this in a couple different ways.   Some projects put them in the
src/main/resources... dir like other resources, but that kind of hides
them.   Others put them in the same dir as the pom.xml and add a "."
resource dir, but that breaks eclipse:eclipse.      Both have the issue
of having BUNCHES of copies of the LICENSE and NOTICE files to maintain,
which sucks.

There are a couple options.    One option that I understand is coming in
2.1 is the ability to access stuff from the "parent" directory.   Shared
resources type things.     Thus, a single copy could be used.
Honestly, I'd like to see a "Apache-Maven" plugins (and a Incubator
subclass plugin) that would automatically add those files automatically
when possible.

One note: according to http://www.apache.org/legal/src-headers.html, all
Apache releases done AFTER November 1, 2006 must have the license/notice
files done correctly.   Thus, this item really needs to be taken care of
REAL SOON NOW.


2) The release process - I honestly think Maven does this "wrong."   At
least for incubator projects, we need to do the
tagging/build/signing/etc.. first, then vote on the resulting binaries.
This definitely doesn't seem to be what maven is doing.   They seem to
vote on the "state of the code in the repository", then do the release
steps.    I think it would be good if the processes that were used could
act as an example, especially for the incubator folks that are learning.

My (somewhat wacky idea) might be to add a "release:stage" that would do
ALL the release steps, but to a "staging area" (apache home directory or
similar, maybe need a "staging" section to the distributionManagement
section of the pom) that the project could vote on, then another release
goal to copy the staging to the real "release" area if/when the vote
passes.


3) Signing/deploying - this is another area that maven doesn't seem
to "help" too much.   Everyone seems to run deploy/release, then login to
the people.apache.org and run a script over the directory to do the
signing.    It would be nice to have "help" from maven to do that.

Actually, the Maven project doesn't seem to do it at all sometimes.   The
javadoc plugin did get signed, but the new clover one did not.  However,
the new maven-metadata.xml files got changed with javadoc, but didn't get
re-signed so the .asc file does not match and thus verify fails.    Kind
of hard to "trust" the maven repository when the sigs fail.


Anyway, I just wanted to start a discussion.   I'd love to point to maven
and say "model Apache maven project," but, IMO, there is a bit to go.

Enjoy!
--
J. Daniel Kulp
Principal Engineer
IONA
P: 781-902-8727    C: 508-380-7194   F:781-902-8001
[EMAIL PROTECTED]

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


Reply via email to