Thanks for putting this together Gwen. I think it sounds reasonable and
instead of trying to optimise every aspect of it ahead of time (which is
hard, subjective and time-consuming), I am happy to try what is being
proposed and tweak based on experience. One thing we should pay particular
attention to is how the stabilisation process works out in practice.

A couple of comments:

"Given 3 releases a year and the fact that no one upgrades three times a
year, we propose making sure (by testing!) that rolling upgrade can be done
from each release in the past year (i.e. last 3 releases) to the latest
version."

Because the cost of doing this for a larger number of releases is
relatively low, I still think we should go for 6 here (our code currently
supports 5 versions as I said in a previous message, so we're close to that
target already). I'm generally very keen to make upgrades as easy as
possible so that people have no reason not to upgrade. :)

"We will also attempt, as a community to do bugfix releases as needed for
the last 3 releases."

I would suggest 2, personally, but since this is a bit fuzzy, I am OK with
3 if people prefer that.

Ismael

On Thu, Aug 25, 2016 at 6:22 AM, Gwen Shapira <g...@confluent.io> wrote:

> Hi Team Kafka,
>
> As per the KIP meeting, I created a wiki:
> https://cwiki.apache.org/confluence/display/KAFKA/Time+Based+Release+Plan
> Summarizing most of the discussion so far.
>
> Comments and additional discussion is welcome :)
>
> Gwen
>
> On Wed, Aug 17, 2016 at 12:31 PM, Vahid S Hashemian
> <vahidhashem...@us.ibm.com> wrote:
> > Time-based releases is a good idea and something that has proved to be
> > working in a number of open source projects. One successful example is
> > Node.js, that goes through two major releases a year. The interesting
> fact
> > about the two releases is that only one (the even-number release) comes
> > with a long term support (LTS) plan (30 months). More can be read here:
> > https://github.com/nodejs/LTS. The odd-number releases still come with
> > major changes and help build the ecosystem, but as far as LTS goes, there
> > is only one per year. This LTS plan makes most enterprises want to stick
> > to even-number releases, which is okay since frequent upgrades is not
> > something they are normally interested in anyway.
> >
> > There could be several minor releases (non-breaking) in between major
> > releases. A major release contains all the features / bug fixes in the
> > master branch a month before the release date, with the potential
> addition
> > of (non-breaking) bug fixes until the release day. The deprecation cycle
> > is one major release: any functionality that is decided to be removed is
> > deprecated in the next major release, and removed in the major release
> > after that.
> >
> > Because of the success of LTS models in this and other open source
> > projects, I would suggest implementing a formal LTS plan for Kafka too.
> >
> > Regards,
> > --Vahid
> >
> >
> >
> > From:   Gwen Shapira <g...@confluent.io>
> > To:     dev@kafka.apache.org
> > Date:   08/09/2016 04:49 PM
> > Subject:        [DISCUSS] Time-based releases for Apache Kafka
> >
> >
> >
> > Dear Kafka Developers and Users,
> >
> > In the past, our releases have been quite unpredictable. We'll notice
> > that a large number of nice features made it in (or are close),
> > someone would suggest a release and we'd do it. This is fun, but makes
> > planning really hard - we saw it during the last release which we
> > decided to delay by a few weeks to allow more features to "land".
> >
> > Many other communities have adopted time-based releases successfully
> > (Cassandra, GCC, LLVM, Fedora, Gnome, Ubuntu, etc.). And I thought it
> > will make sense for the Apache Kafka community to try doing the same.
> >
> > The benefits of this approach are:
> >
> > 1. A quicker feedback cycle and users can benefit from features
> > quicker (assuming for reasonably short time between releases - I was
> > thinking 4 months)
> >
> > 2. Predictability for contributors and users:
> > * Developers and reviewers can decide in advance what release they are
> > aiming for with specific features.
> > * If a feature misses a release we have a good idea of when it will show
> > up.
> > * Users know when to expect their features
> >
> > 3. Transparency - There will be a published cut-off date (AKA feature
> > freeze) for the release and people will know about it in advance.
> > Hopefully this will remove the contention around which features make
> > it.
> >
> > 4. Quality - we've seen issues pop up in release candidates due to
> > last-minute features that didn't have proper time to bake in. More
> > time between feature freeze and release will let us test more,
> > document more and resolve more issues.
> >
> > Since nothing is ever perfect, there will be some downsides:
> >
> > 1. Most notably, features that miss the feature-freeze date for a
> > release will have to wait few month for the next release. Features
> > will reach users faster overall as per benefit #1, but individual
> > features that just miss the cut will lose out
> >
> > 2. More releases a year mean that being a committer is more work -
> > release management is still some headache and we'll have more of
> > those. Hopefully we'll get better at it. Also, the committer list is
> > growing and hopefully it will be less than once-a-year effort for each
> > committer.
> >
> > 3. For users, figuring out which release to use and having frequent
> > new releases to upgrade to may be a bit confusing.
> >
> > 4. Frequent releases mean we need to do bugfix releases for older
> > branches. Right now we only do bugfix releases to latest release.
> >
> > I think the benefits outweigh the drawbacks. Or at least suggest that
> > its worth trying - we can have another discussion in few releases to
> > see if we want to keep it that way or try something else.
> >
> > My suggestion for the process:
> >
> > 1. We decide on a reasonable release cadence
> > 2. We decide on release dates (even rough estimate such as "end of
> > February" or something) and work back feature freeze dates.
> > 3. Committers volunteer to be "release managers" for specific
> > releases. We can coordinate on the list or on a wiki. If no committer
> > volunteers, we assume the community doesn't need a release and skip
> > it.
> > 4. At the "feature freeze" date, the release manager announces the
> > contents of the release (which KIPs made it in on time), creates the
> > release branch and starts the release process as usual. From this
> > point onwards, only bug fixes should be double-committed to the
> > release branch while trunk can start collecting features for the
> > subsequent release.
> >
> > Comments and improvements are appreciated.
> >
> > Gwen Shapira
> > Former-release-manager
> >
> >
> >
> >
> >
>
>
>
> --
> Gwen Shapira
> Product Manager | Confluent
> 650.450.2760 | @gwenshap
> Follow us: Twitter | blog
>

Reply via email to