I added a blurb about snapshot releases in the howto in the updated PR. LMK
your thoughts.

https://github.com/apache/calcite/pull/2641/files#

On Mon, Dec 13, 2021 at 11:34 AM Julian Hyde <jh...@apache.org> wrote:

> Jacques,
>
> Your 4 points are convincing. Snapshots (used in CI) will help people
> stay on the main branch, and therefore will increase engagement.
>
> It would be useful if there were some guidance in the HOWTO on using
> snapshots. (Don't release based on snapshots; snapshots may change or
> disappear without notice; snapshots are not Apache licensed; do run
> your CI against snapshots, but remember that if they fail, there are
> now TWO places to look for the failure.)
>
> Julian
>
>
> On Sun, Dec 12, 2021 at 4:11 PM Jacques Nadeau <jacq...@apache.org> wrote:
> >
> > Good questions, Julian.
> >
> > Some thoughts, in random order. I think snapshot releases have the
> ability
> > to:
> >
> > 1. Reduce the likelihood of long-lived forks
> > Right now, the easiest way one has to produce snapshot artifacts is to
> set
> > up a separate process around a forked repo. Once this process exists, it
> is
> > a slippery slope towards starting to rely on those artifacts for not only
> > development but also releases.
> >
> > 2. Reduces the likelihood of fork-causing events
> > If one's dev branch builds against master snapshot artifacts, one is more
> > likely to notice a disruptive change sooner. This then allows one to
> start
> > a conversation about the disruption as early as possible post merge (in a
> > perfect world, it would be noticed pre-merge but that's a separate
> topic).
> > If one waits for releases to test new features and confirm if they are
> > disruptive, this makes adaptation harder. The developer who added the
> > disruptive change is less likely to be available and thinking about the
> > same issues and the pressure to push a release will make this extra
> > painful. This kind of situation increases the likelihood of hard forks.
> > I've experienced this first hand several times and hope to never repeat
> it
> > again.
> >
> > 3. Reduces the likelihood of accidental breaking changes (or awkward
> > situations)
> > Similar to 2 above, if downstream projects depend on released versions
> > during development, it increases the likelihood of a breaking change
> being
> > accidentally introduced. And on the opposite side, the introduction of
> new
> > changes may turn out to be problematic or challenging. Catching those
> items
> > before release decreases the likelihood of introducing an API and then
> > having to back it out afterwards (and dealing with compat implications).
> > With snapshot artifacts, I believe people are more likely to catch these
> > problems sooner.
> >
> > 4. Increase interest/effort towards releases
> > Reasonable people won't release against a snapshot release (my $0.02). If
> > these people develop more often against Calcite master (as opposed to
> their
> > own fork), they are more likely to push for a release to help them
> > accommodate their own releasing needs.
> >
> > Of course, these are all just my own theories about this stuff. I
> > unfortunately don't have any numbers to back this up. Nonetheless, I
> think
> > these benefits outweigh associated costs or potential downsides.
> >
> > Jacques
> >
> >
> >
> >
> > On Sun, Dec 12, 2021 at 2:08 PM Julian Hyde <jhyde.apa...@gmail.com>
> wrote:
> >
> > > I have no problems with the technical side of this. And I am
> supportive of
> > > one-off snapshots, e.g. a snapshot for testing made a week or two
> ahead of
> > > a release.
> > >
> > > But there are some downsides with regular, automated snapshots, and I
> am
> > > concerned that projects and companies will become dependent on them,
> for
> > > the following reasons:
> > >
> > > 1. Snapshots can change without notice. (Bugs may be introduced, APIs
> > > removed without notice.) This is mostly the problem for the downstream
> > > project — in other words, caveat emptor — but may cause work for
> > > committers. It’s certainly a bad idea to base a release on a snapshot.
> > >
> > > 2. Snapshots are not releases. The Apache license does not apply to
> code
> > > that has not been released.
> > >
> > > 3. If people get too comfortable using snapshots, there will be fewer
> > > resources to make official releases.
> > >
> > > Is the additional convenience worth these downsides? Just asking. I’m
> > > prepared to be persuaded.
> > >
> > > Julian
> > >
> > >
> > >
> > > > On Dec 12, 2021, at 10:23 AM, Jacques Nadeau <jacq...@apache.org>
> wrote:
> > > >
> > > > Hey All,
> > > >
> > > > I've been wanting to do more testing against master for integration
> > > > purposes and right now that requires private builds. As such, I
> opened
> > > > CALCITE-4934 [1] to add support for automatic snapshot builds
> deployed to
> > > > the Apache snapshot Maven repository on master merges. As noted in
> the
> > > > ticket, this used to be the case many years ago (CALCITE-351 enabled
> it).
> > > > The right bits are now enabled in GitHub to make this effortless and
> I've
> > > > confirmed that this looks like it is working correctly [2][3].
> > > >
> > > > Before merging I wanted to make sure that people were comfortable
> with
> > > this
> > > > addition since it changes build infra. The PR is pretty trivial [4]
> and
> > > > modeled off other Apache projects.
> > > >
> > > > Lastly, note that snapshots are *not* Apache Releases and shouldn't
> be
> > > > presented as such in docs, etc.
> > > >
> > > > Please raise your hand if you have any concerns.
> > > >
> > > > Thanks,
> > > > Jacques
> > > >
> > > >
> > > > [1] https://issues.apache.org/jira/browse/CALCITE-4934
> > > > [2]
> > >
> https://github.com/apache/calcite/runs/4499040456?check_suite_focus=true
> > > > [3]
> > > >
> > >
> https://repository.apache.org/content/groups/snapshots/org/apache/calcite/calcite-core/1.29.0-SNAPSHOT/
> > > > [4] https://github.com/apache/calcite/pull/2641
> > >
> > >
>

Reply via email to