My name is Rob Ottaway I work on an web application called 'Cruvee',
we are startup focused on the Wine industry. We're using Morphia in
our project, and had a big issue come up yesterday.
It seems you fellas are using Maven snapshots for releases! Please
stop right away. Please. No. More.
The problem is that Morphia experienced a major refactor that changed
things in a non-backward compatible way, then releasing it as a new
snapshot, you broke our project big time. This is because eventually
Maven got around to checking for a new version of the SNAPSHOT and
pulled it down and when it did BOOOM!
For future reference you'll want to release some form of 'beta',
'alpha', 'rc#' type of release every now and again. It's very bad form
when using Maven to *release* off a SNAPSHOT. SNAPSHOTS are not meant
to be used in other projects via the Maven dependency mechanism (well
maybe it's ok if it's your project and internal).
Sorry if it sounds like I'm being harsh. We greatly appreciate the
your work on this tool. It's just we've experienced about a day of
downtime because of this and I am cranky ^_^
It appears the project pom contains the SCM information needed to do a
"mvn release:prepare release:perform". Maybe we can use this to push
out a beta/alpha/rc real quick and prevent this from happening again?
On Fri, Jun 11, 2010 at 9:02 AM, Robottaway <robotta...@gmail.com> wrote: > Hi all,
> My name is Rob Ottaway I work on an web application called 'Cruvee', > we are startup focused on the Wine industry. We're using Morphia in > our project, and had a big issue come up yesterday.
I'm sorry to hear that.
> It seems you fellas are using Maven snapshots for releases! Please > stop right away. Please. No. More.
Snapshot are not releases. They are a preview mechanism to test out the current work.
> The problem is that Morphia experienced a major refactor that changed > things in a non-backward compatible way, then releasing it as a new > snapshot, you broke our project big time. This is because eventually > Maven got around to checking for a new version of the SNAPSHOT and > pulled it down and when it did BOOOM!
If you are working off snapshots then you are working off trunk and you need to be aware of the issues that come along with that.
What was the breaking change that hit you? I'd like to make sure we get it out there for others to be aware of.
> For future reference you'll want to release some form of 'beta', > 'alpha', 'rc#' type of release every now and again. It's very bad form > when using Maven to *release* off a SNAPSHOT. SNAPSHOTS are not meant > to be used in other projects via the Maven dependency mechanism (well > maybe it's ok if it's your project and internal).
Just to be clear, there is no release. Snapshot are current builds from trunk for testing and prodding.
I'm not so familiar with maven, or maven repo management. What is the correct way to push out daily snapshots?
Also, I'm told that you can pin your dep. to a certain version of a snapshot. Can you just do this until you have time to upgrade?
> Sorry if it sounds like I'm being harsh. We greatly appreciate the > your work on this tool. It's just we've experienced about a day of > downtime because of this and I am cranky ^_^
I sympathize; I had thought about rev'n the version number and skipping the 0.93 release after this major re-factoring; but the user-facing interfaces haven't changed much, really.
> It appears the project pom contains the SCM information needed to do a > "mvn release:prepare release:perform". Maybe we can use this to push > out a beta/alpha/rc real quick and prevent this from happening again?
Do you still think this is needed considering what our snapshot really is?
We've fixed the compile errors, but still have a couple issues to fix.
Don't anticipate much problems there, just some time expenditure.
Sounds as if our issue is the absence of a solid 'release' version.
It's normal for snapshots to work like they do in Morphia, I'm just
surprised there are no 'release' ready artifacts in the repo. In Maven
you might be able to freeze to a certain snapshot, but I don't think
that's a solution to the 'release' problem. For one it's hard to
remember the ID of a snap, since they are all sorts of ugly. Worse
SNAPSHOTS are not legal when one does a 'release' as Maven expects NO
snapshot dependencies during a release and will fail. So if we work
off your snapshots it'll hamstring us on our releases... *shakes fist*
Damn you Maaaaavvvvveeeeeen.
I think having a rc/beta/alpha type release now and again would
suffice. I think that you'd agree that for anyone working with Maven
+Morphia they'll need a release that can be upgraded when they want,
not when Maven decides so.
Could it work to change the version to 0.93-rc<#>-SNAPSHOT so that it
can be worked on as a snapshot, but when certain milestones are
reached a 0.93-rc<#> release can be cut? This shouldn't be a lot of
work since Maven can perform the release in one command for you
(tagging things in SVN, changing the version # in the pom). Check out
these posts for some info on the release process:
I suppose the question of how often to cut one of these is up to you
guys. I mean we'd be fine working off of the newest cut as a release,
for awhile, and we can upgrade when we have the time to come back to
it.
My question now is "will there be a 'release' of this project anytime
soon? One that'll not change?" Maybe we can wait, I'm just worried
about a big change coming down the pipe again and stopping my team
from getting things done.
> I'm not so familiar with maven, or maven repo management. What is the
> correct way to push out daily snapshots?
Snapshot deployments create a timestamped archive with the current
version number and any maven dependency with "-SNAPSHOT" will point to
the archive with the most recent timestamped archive. Those are your
"nightlies." The version number itself is static, however, if major
changes occur between nightlies of a version and you don't want the
most recent snapshot, you can change your POM dependency to point to a
specific nightly timestamped build to get the version pre-refactor.
If, for example, May 13th had the major refactor, and May 12th was ok,
you'd use version (in your POM dependency):
0.93-20100513.064149-17
instead of:
0.93-SNAPSHOT
On Fri, Jun 11, 2010 at 10:13 AM, Robottaway <robotta...@gmail.com> wrote: > We've fixed the compile errors, but still have a couple issues to fix. > Don't anticipate much problems there, just some time expenditure.
> Sounds as if our issue is the absence of a solid 'release' version. > It's normal for snapshots to work like they do in Morphia, I'm just > surprised there are no 'release' ready artifacts in the repo. In Maven > you might be able to freeze to a certain snapshot, but I don't think > that's a solution to the 'release' problem. For one it's hard to > remember the ID of a snap, since they are all sorts of ugly. Worse > SNAPSHOTS are not legal when one does a 'release' as Maven expects NO > snapshot dependencies during a release and will fail. So if we work > off your snapshots it'll hamstring us on our releases... *shakes fist* > Damn you Maaaaavvvvveeeeeen.
> I think having a rc/beta/alpha type release now and again would > suffice. I think that you'd agree that for anyone working with Maven > +Morphia they'll need a release that can be upgraded when they want, > not when Maven decides so.
> Could it work to change the version to 0.93-rc<#>-SNAPSHOT so that it > can be worked on as a snapshot, but when certain milestones are > reached a 0.93-rc<#> release can be cut? This shouldn't be a lot of > work since Maven can perform the release in one command for you > (tagging things in SVN, changing the version # in the pom). Check out > these posts for some info on the release process:
> I suppose the question of how often to cut one of these is up to you > guys. I mean we'd be fine working off of the newest cut as a release, > for awhile, and we can upgrade when we have the time to come back to > it.
> My question now is "will there be a 'release' of this project anytime > soon? One that'll not change?" Maybe we can wait, I'm just worried > about a big change coming down the pipe again and stopping my team > from getting things done.
Yes, that is the problem; No stable release. We keep getting close, but then more work goes in (to fix bugs and such). I had a rough feature-set to get done before a release and we are pretty much there now (give or take 2/3 issues).
Please read my above post. Maven will bark about a SNAPSHOT being in
our dependencies when we try to release ourselves. Yes there are ways
to get around things, no I don't think they are a better alternative
to cutting release candidates.