I agree that the Kafka community has managed to maintain a very high quality level, so I'm not concerned about the quality of non-LTS releases. If the principle is that every release is supported for 2 years, that would be good. I suppose that if the burden of having that many in-support releases proves too heavy, as you say we could reconsider.
Andrew Schofield ---------------------------------------- > From: g...@confluent.io > Date: Thu, 25 Aug 2016 09:57:30 -0700 > Subject: Re: [DISCUSS] Time-based releases for Apache Kafka > To: dev@kafka.apache.org > > I prefer Ismael's suggestion for supporting 2-years (6 releases) > rather than have designated LTS releases. > > The LTS model seems to work well when some releases are high quality > (LTS) and the rest are a bit more questionable. It is great for > companies like Redhat, where they have to invest less to support few > releases and let the community deal with everything else. > > Until now the Kafka community has managed to maintain very high > quality level. Not just for releases, our trunk is often of better > quality than other project's releases - we don't think of stability as > something you tuck into a release (and just some releases) but rather > as an on-going concern. There are costs to doing things that way, but > in general, I think it has served us well - allowing even conservative > companies to run on the latest released version. > > I hope we can agree to at least try maintaining last 6 releases as LTS > (i.e. every single release is supported for 2 years) rather than > designate some releases as better than others. Of course, if this > totally fails, we can reconsider. > > Gwen > > On Thu, Aug 25, 2016 at 9:51 AM, Andrew Schofield > <andrew_schofield_j...@outlook.com> wrote: >> The proposal sounds pretty good, but the main thing currently missing is a >> proper long-term support release. >> >> Having 3 releases a year sounds OK, but if they're all equivalent and bugfix >> releases are produced for the most >> recent 2 or 3 releases, anyone wanting to run on an "in support" release of >> Kafka has to upgrade every 8-12 months. >> If you don't actually want anything specific from the newer releases, it's >> just unnecessary churn. >> >> Wouldn't it be better to designate one release every 12-18 months as a >> long-term support release with bugfix releases >> produced for those for a longer period of say 24 months. That halves the >> upgrade work for people just wanting to keep >> "in support". Now that adoption is increasing, there are plenty of users >> that just want a dependable messaging system >> without having to be deeply knowledgeable about its innards. >> >> LTS works nicely for plenty of open-source projects. I think it would work >> well for Kafka too. >> >> Andrew Schofield >> >> ---------------------------------------- >>> From: ofir.ma...@equalum.io >>> Date: Thu, 25 Aug 2016 16:07:07 +0300 >>> Subject: Re: [DISCUSS] Time-based releases for Apache Kafka >>> To: dev@kafka.apache.org >>> >>> Regarding bug fixes, you may want to consider to have an LTS release once a >>> year - designating it for longer-term support / better for the masses. >>> If you like that - then fix bugs in trunk, backport important ones to >>> latest release + the last two LTS releases. >>> Even if you don't - if a downstream distribution picks a Kafka version and >>> plans to support it over a few years, it could be nice of them to "own" >>> that older release - volunteer to be a release manager for bug backports to >>> that version over a longer period... >>> Just my two cents :) >>> >>> Ofir Manor >>> >>> Co-Founder & CTO | Equalum >>> >>> Mobile: +972-54-7801286 | Email: ofir.ma...@equalum.io >>> >>> On Thu, Aug 25, 2016 at 12:32 PM, Ismael Juma <ism...@juma.me.uk> wrote: >>> >>>> 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 >>>>> >>>> >> > > > > -- > Gwen Shapira > Product Manager | Confluent > 650.450.2760 | @gwenshap > Follow us: Twitter | blog