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