As far as the ASF is concerned, from a legal perspective, the tag is not a
release.

The only release is the src.tar.gz in the dist folder or the archives.

Tags and binaries are simply a convenience for users.

Whether that is something that is important to the Maven community is a
different question though.


On 30 May 2013 11:26, Chris Graham <chrisgw...@gmail.com> wrote:

> One more thing to consider:
>
> It's a huge change; as if you do not delete, you now have broken 'releases'
> in a SCM somwhere, and that is radically different to what is currently
> there.
>
> I should be able to check anything out now from a tag, build it and have it
> work.
>
> If we allow broken tags, then we could be frustrating a lot of people.
>
> It's a huge change of process.
>
> And for me, I prefer not to introduce it.
>
> We also have maven's concept of immutability, which is a reason NOT to
> allow the reuse of numbers; however, that does not appear to have been too
> much of a problem up until now.
>
> -Chris
>
>
>
>
> On Thu, May 30, 2013 at 7:55 PM, Stephen Connolly <
> stephen.alan.conno...@gmail.com> wrote:
>
> > On 30 May 2013 10:30, Chris Graham <chrisgw...@gmail.com> wrote:
> >
> > > Thank you Stephen for taking the time to explain.
> > >
> > > To me, the key critical bits are:
> > >
> > > 1. The full normal tag is created, and deleted if failed. If the
> release
> > > process fails (as in release:prepare/release:perform) we often have to
> > > delete the tag and manually re-run it anyway.
> > >
> >
> > Well to my mind that is also part of the issue....
> >
> > If we accept that failed tags get deleted, then we should respin reusing
> > the same version number until we have a non-failed tag (irrespective of
> the
> > reason for the failure)
> >
> > If we don't reuse version numbers, it should be ever, in which case if
> > release:prepare produces a tag that *cannot* complete release:perform (as
> > opposed to just a failure for a single run of release:perform) then we
> > would not delete the tag and run release:prepare for the next version
> > number.
> >
> > In that sense I don't see this as a critical bit... rather I see it as
> part
> > of what should be covered by the vote.
> >
> >
> > > 2. The copying process to get it in the wild is manual and post vote.
> > >
> >
> > Not quite true, the artifacts are in the wild... just in a staging
> > repository from which they can be deleted. The copy to dist is a legal
> > requirement to ensure the legal protections that the ASF provides remain
> in
> > force (this is also why the PMC have binding votes, and why the PMC has
> to
> > concern itself with annoying pesky things like ensuring that the
> NOTICE.txt
> > has correct content and that files have the correct license headers... I
> > may not, in the past, have fully appreciated the reasons for or the needs
> > for these things... but since becoming a member of the ASF [with the
> legal
> > responsibilities that come with that] I have gained a different
> > perspective).
> >
> > But there is always concern from people that they will end up with their
> > local repository corrupted as a side-effect of testing.
> >
> > For instance, suppose there is a fix related to how some component works
> > behind a proxy. That may well require you to add the staging repository
> to
> > your corporate proxy repository (because the machines you want to test
> > from, and perhaps even the scenario you want to test, are required to
> have
> > a <mirrorOf>*</mirrorOf> in their settings.xml)... in such a case you
> will
> > end up with the situation that the test machines have downloaded the
> > artifacts into their local repository cache *and* even with the
> repository
> > source validation that Maven 3.x brings to the table, you will need to
> > manually purge those artifacts from your local repository cache *because*
> > the <mirrorOf>*</mirrorOf> will be forcing the source of those release
> > artifacts to be unchanged.
> >
> > Now one could argue that you shouldn't be adding the staging repo to your
> > proxy in the first place, and instead you should create a special proxy
> on
> > your repository manager that adds in the staging repo on top of the
> normal
> > proxy and update the settings.xml to use this new mirrorOf source... but
> > that will force everything to be re-downloaded into the local cache *and*
> > there are test circumstances where one might fear that such a change
> could
> > affect the validity of your testing.
> >
> > The above, to my mind, is the primary driver for never reusing version
> > numbers... whether it is worthy of the change is for all to decide...
> >
> > My current thinking is though:
> >
> > * if we allow deleting tags because the tag won't complete
> release:perform,
> > then we should re-use version numbers.
> >
> > * if we don't allow re-using version numbers, then we should not allow
> > deleting tags *just* because the tag won't complete release:perform.
> >
> > And I am considering whether I want to change my vote ;-)
> >
> >
> > > Given that, I have no problem with respinning a release using the same
> > > version, which is, essentially what we have been doing.
> > >
> > > This is very similar to what I do for the day job. But not the same. In
> > the
> > > day job, we through away a release and just create a new one.
> > >
> > > Why the difference?
> > >
> > > Simple, the audience for the day job is limited, and the decision to
> > > release is driven by the tech lead and immediate.
> > >
> > > There is no voting process.
> > >
> > > In this OS world, we are talking about release X.Y.Z (or whatever) and,
> > > personally, I remember X.Y.Z. I would quickly get confused if I had to
> > > constantly remember that X.Y.Z is now X.Y.(Z+N).
> > >
> > > Additionally, the vote remains open for a period of time, and I would
> get
> > > lost with the constantly changing numbers. Note, this is not the same
> as
> > > saying anything about skipped public version numbers.
> > >
> > > For the same reason, I would recommend offering different approaches to
> > > core/plugins/whatever: let's not complicate things.
> > >
> > > So, to that end,
> > >
> > > -1 (ie respin) for all
> > >
> > > (non binding)
> > >
> > > -Chris
> > >
> > >
> > >
> > > On Thu, May 30, 2013 at 5:11 PM, Stephen Connolly <
> > > stephen.alan.conno...@gmail.com> wrote:
> > >
> > > > On Thursday, 30 May 2013, Chris Graham wrote:
> > > >
> > > > > What do we currently do for plugins?
> > > >
> > > > What do we currently do for core?
> > > > > Is there in difference in the approach taken?
> > > >
> > > >
> > > > No difference. In each case we currently respin failed votes reusing
> > the
> > > > version number until we get an actual successful vote.
> > > >
> > > > >
> > > > > We call for a vot for vX.Y.Z of <arbitrary plugin> (plugins's
> > [recently
> > > > at
> > > > > least] do not appear to go throught he beta/RC phases).
> > > >
> > > >
> > > > That is down to not really having new core plugins recently, and the
> > size
> > > > of changes being such that the release manager felt there was no need
> > for
> > > > an alpha/beta
> > > >
> > > > Because of the switch from sonatype aether to eclipse aether *and*
> the
> > > > exposing of the aether API to plugins, for Maven 3.1.0 jumping
> straight
> > > to
> > > > 3.1.0 was deemed too risky by the release manager, hence
> 3.1.0-alpha-1.
> > > >
> > > > Personally, given the lack of review the 3.1.0-SNAPSHOTs were
> getting,
> > > this
> > > > was probably a wise plan... However I think quite a few people have
> put
> > > > their eyes on the code by now, so *if* I was the release manager, I'd
> > be
> > > > tempted to head straight for 3.1.0... Thankfully I am not release
> > manager
> > > > for this release, so not my problem ;-)
> > > >
> > > > (Note: the release manager is just whoever stands up and says "I want
> > to
> > > > cut a release of XYZ"... Can change with every release, or stay
> mostly
> > > the
> > > > same. Eg Kristian has been release manager for Surefire by
> consistently
> > > > stepping up and cutting releases, but if any other committer wanted
> to
> > > run
> > > > a release they can step up at any time... It's actually something we
> > > > encourage newer committers to do (usually starting with smaller
> plugins
> > > > though) so that they can get a feel for how our release process works
> > > > (learn by doing))
> > > >
> > > > >
> > > > > Can someone please spell out a sequence of events (by time) as to
> > what
> > > > > happens through the entire process? From prep to vote to ending up
> in
> > > > > central.
> > > > >
> > > > > Slightly simplified, and there are differences for components vs
> > > plugins
> > > > vs core, but essential principle remains close to this
> > > >
> > > > 1. Run `mvn release:prepare release:perform`
> > > > 2. Send the "[vote]" email
> > > > 3. Wait 72h (or longer if not enough binding votes and the release
> > > manager
> > > > thinks some more binding votes will turn up)
> > > > 4. On nexus, promote the staging repo
> > > > 5. Update JIRA versions
> > > > 6. Update the component's site (and for plugins the table of plugin
> > > > versions)
> > > > 7. Copy the artifacts to dist
> > > > 8. Wait for "the sync" to central
> > > > 9. Send "[ann]" email
> > > >
> > > > And the same sequnce, but for a failed vote, and it's revoting (we've
> > > used
> > > > > the same version no again, here, have we not?)
> > > >
> > > >
> > > > After step 3, we currently delete the tag, go back to step 1. And
> > release
> > > > again reusing the same version number from the first time.
> > > >
> > > >
> > > > >
> > > > > -Chris
> > > > >
> > > > >
> > > > >
> > > > > On Thu, May 30, 2013 at 6:11 AM, Fred Cooke <fred.co...@gmail.com
> > > > <javascript:;>>
> > > > > wrote:
> > > > >
> > > > > > >
> > > > > > > -1 for actual releases: it would create more mess imo for end
> > users
> > > > if
> > > > > > > there's many bizarre jumps in numbering
> > > > > >
> > > > > >
> > > > > > The thing with this argument is that it's very, very weak. If a
> > > missed
> > > > > > version confuses a user, they're basically brain-dead. Assuming
> > your
> > > > > users
> > > > > > are brain dead is _always_ dangerous. Assuming the users or a
> > > > > _development_
> > > > > > tool are brain-dead is that in and of itself IMO.
> > > > > >
> > > > > > A random example from central that I gave to Robert earlier:
> > > > > >
> > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> http://search.maven.org/#search|gav|1|g%3A%22antlr%22%20AND%20a%3A%22antlr%22
> > > > > >
> > > > > > I don't know about the rest of you... but I'm not confused by the
> > > > absence
> > > > > > of 2.7.3 in any way shape or form. I'm additionally not confused
> by
> > > the
> > > > > > absence of 2.7.8, 2.7.9, 2.7.10, etc, nor 2.8.* nor 2.9.* It's
> > > > > meaningless
> > > > > > to me that they're absent. I use and test a version (usually
> > latest)
> > > > and
> > > > > > verify it functions adequately for my needs, then I depend on it
> > (dep
> > > > or
> > > > > > plugin equally) and that's it. If I find a flaw, or need to use a
> > new
> > > > > > feature, then I can go looking for the best version that is
> > > compatible
> > > > > with
> > > > > > my setup, that contains it (again, likely latest, API change not
> > > > > > withstanding).
> > > > > >
> > > > > > Being worried about developers being confused by a non-sequential
> > set
> > > > of
> > > > > > binaries to choose from is bizarre at best. Developers, even the
> > bad
> > > > > ones,
> > > > > > are generally a fairly intelligent bunch.
> > > > > >
> > > > > > This is not winamp! :-p (nor VLC)
> > > > > >
> > > > > > Fred.
> > > > > >
> > > > >
> > > >
> > > >
> > > > --
> > > > Sent from my phone
> > > >
> > >
> >
>

Reply via email to