Thanks Sonke, that's great. I filed an initial JIRA:

https://issues.apache.org/jira/browse/KAFKA-5637

As per our offline conversation, you captured the thread discussion
already, so feel free to flesh out the JIRA.

Ismael

On Mon, Jul 24, 2017 at 8:45 PM, Sönke Liebau <
soenke.lie...@opencore.com.invalid> wrote:

> I am happy to volunteer for working on documenting the release logistics
> and related topics if someone is needed for that part.
>
> Best regards,
> Sönke
>
> Am 24.07.2017 9:28 nachm. schrieb "Guozhang Wang" <wangg...@gmail.com>:
>
> > Thanks for everyone who has shared their thoughts and feedbacks to this
> > discussion. Here is my conclusion:
> >
> > 1. So far everyone has agreed on naming the next major release version to
> > 1.0; if I did not hear any other opinions by the end of today PDT time I
> > will name the next release as 1.0.0 and update the release wiki page
> > correspondingly.
> >
> > 2. People have also expressed expectations to some of the release
> logistics
> > while we are releasing 1.0.0, including old version support period,
> upgrade
> > support period, bug fix / security fix backport policies etc. Ismael has
> a
> > detailed summary on these in this email thread and we will look for
> someone
> > to drive the documentation of these in parallel with the 1.0.0 release
> > process.
> >
> >
> > Guozhang
> >
> >
> > On Mon, Jul 24, 2017 at 11:45 AM, Becket Qin <becket....@gmail.com>
> wrote:
> >
> > > +1 on 1.0. I think it makes a lot of sense given the point Kafka is
> now.
> > To
> > > me Kafka has absolutely reached 1.0 in terms of features/functions.
> That
> > > said, I do share the same opinion with others that the usablity and
> > > policies might still need some improvement to meet the 1.0 standard.
> > >
> > > On Sat, Jul 22, 2017 at 7:21 AM, Matthias J. Sax <
> matth...@confluent.io>
> > > wrote:
> > >
> > > > I agree with Ismael. If we go for 1.0 (what I do support), we need to
> > > > meet people's expectations and should document all policies and
> > > > guarantees explicitly. We might also consider to support older
> releases
> > > > longer and do bug fix release for older releases, too.
> > > >
> > > > Other projects (like Flink) do a fantastic job with this regard and
> we
> > > > should learn from them.
> > > >
> > > > -Matthias
> > > >
> > > > On 7/21/17 9:50 PM, Guozhang Wang wrote:
> > > > > That's fair enough too.
> > > > >
> > > > > Guozhang
> > > > >
> > > > > On Fri, Jul 21, 2017 at 12:13 PM, Ismael Juma <isma...@gmail.com>
> > > wrote:
> > > > >
> > > > >> Yes, I agree that the choice of version number can be done
> > separately.
> > > > >> That's why I said I'd file a separate JIRA for the documentation
> > > > >> improvements. Having said that, there are some expectations that
> > > people
> > > > >> have for projects that have reached 1.0.0 and we should try to
> > > allocate
> > > > >> time for the important ones.
> > > > >>
> > > > >> Ismael
> > > > >>
> > > > >> On 21 Jul 2017 8:07 pm, "Guozhang Wang" <wangg...@gmail.com>
> wrote:
> > > > >>
> > > > >>> Thanks Ismael. I agree with you on all these points, and for some
> > of
> > > > >> these
> > > > >>> points like 3) we never have a written-down policy though in
> > practice
> > > > we
> > > > >>> tend to follow some patterns.
> > > > >>>
> > > > >>> To me deciding what's the version number of the next major
> release
> > > does
> > > > >> not
> > > > >>> necessarily mean we need now to change any of these or to set the
> > > hard
> > > > >>> rules along with it; I'd like to keep them as two separate
> > > discussions
> > > > as
> > > > >>> they seem semi-orthogonal to me.
> > > > >>>
> > > > >>>
> > > > >>> Guozhang
> > > > >>>
> > > > >>>
> > > > >>> On Fri, Jul 21, 2017 at 8:44 AM, Ismael Juma <ism...@juma.me.uk>
> > > > wrote:
> > > > >>>
> > > > >>>> On the topic of documentation, we should also document which
> > > releases
> > > > >> are
> > > > >>>> still supported and which are not. There a few factors to
> > consider:
> > > > >>>>
> > > > >>>> 1. Which branches receive bug fixes. We typically backport fixes
> > to
> > > > the
> > > > >>> two
> > > > >>>> most recent stable branches (the most recent stable branch
> > typically
> > > > >> gets
> > > > >>>> more backports than the older one).
> > > > >>>>
> > > > >>>> 2. Which branches receive security fixes. This could be the same
> > as
> > > > >> `1`,
> > > > >>>> but we could attempt to backport more aggressively for security
> > > fixes
> > > > >> as
> > > > >>>> they tend to be rare (so far at least) and the impact could be
> > > severe.
> > > > >>>>
> > > > >>>> 3. The release policy for stable branches. We tend to stop
> > releasing
> > > > >>> from a
> > > > >>>> given stable branch before we stop backporting fixes. Maybe
> that's
> > > OK,
> > > > >>> but
> > > > >>>> it would be good to document how we decide that a bug fix
> release
> > is
> > > > >>>> needed.
> > > > >>>>
> > > > >>>> 4. How long are direct upgrades supported for. During the
> > time-based
> > > > >>>> releases discussion, we agreed to support direct upgrades for 2
> > > years.
> > > > >> As
> > > > >>>> it happens, direct upgrades from 0.8.2 to 1.0.0 would not be
> > > supported
> > > > >> if
> > > > >>>> we follow this strictly. Not clear if we want to do that.
> > > > >>>>
> > > > >>>> 5. How long are older clients supported for. Current brokers
> > support
> > > > >>>> clients all the way to 0.8.x.
> > > > >>>>
> > > > >>>> 6. How long are older brokers supported for. Current clients
> > support
> > > > >>> 0.10.x
> > > > >>>> and newer brokers.
> > > > >>>>
> > > > >>>> 7. How long are message formats supported for. We never
> discussed
> > > > >> this. I
> > > > >>>> think 5 years would probably be the minimum.
> > > > >>>>
> > > > >>>> Ismael
> > > > >>>>
> > > > >>>> P.S. I'll file a JIRA to capture this information.
> > > > >>>>
> > > > >>>> On Wed, Jul 19, 2017 at 10:12 AM, Ismael Juma <
> ism...@juma.me.uk>
> > > > >> wrote:
> > > > >>>>
> > > > >>>>> Hi Stevo,
> > > > >>>>>
> > > > >>>>> Thanks for your feedback. We should definitely do a better job
> of
> > > > >>>>> documenting things. We basically follow semantic versioning,
> but
> > > it's
> > > > >>>>> currently a bit confusing because:
> > > > >>>>>
> > > > >>>>> 1. There are 4 segments in the version. The "0." part should be
> > > > >> ignored
> > > > >>>>> when deciding what is major, minor and patch at the moment, but
> > > many
> > > > >>>> people
> > > > >>>>> don't know this. Once we move to 1.0.0, that problem goes away.
> > > > >>>>>
> > > > >>>>> 2. To know what is a public API, you must check the Javadoc (
> > > > >>>>> https://kafka.apache.org/0110/javadoc/index.html?org/
> > > > >>>>> apache/kafka/clients/consumer/KafkaConsumer.html). If it's not
> > > > >> listed
> > > > >>>>> there, it's not public API. Ideally, it would be obvious from
> the
> > > > >>> package
> > > > >>>>> name (i.e. there would be "internals" in the name), but we are
> > not
> > > > >>> there
> > > > >>>>> yet. The exception are the old Scala APIs, but they have all
> been
> > > > >>>>> deprecated and they will be removed eventually (the old Scala
> > > > >> consumers
> > > > >>>>> won't be removed until the June 2018 release at the earliest in
> > > order
> > > > >>> to
> > > > >>>>> give people time to migrate).
> > > > >>>>>
> > > > >>>>> 3. Even though we are following reasonably common practices, we
> > > > >> haven't
> > > > >>>>> documented them all in one place. It would be great to do it
> > during
> > > > >> the
> > > > >>>>> next release cycle.
> > > > >>>>>
> > > > >>>>> A few comments below.
> > > > >>>>>
> > > > >>>>> On Wed, Jul 19, 2017 at 1:31 AM, Stevo Slavić <
> ssla...@gmail.com
> > >
> > > > >>> wrote:
> > > > >>>>>
> > > > >>>>>> - APIs not labeled or labeled as stable
> > > > >>>>>> -- change in major version is only one that can break backward
> > > > >>>>>> compatibility (client APIs or behavior)
> > > > >>>>>>
> > > > >>>>>
> > > > >>>>> To clarify, stable APIs should not be changed in an
> incompatible
> > > way
> > > > >>>>> without a deprecation cycle. Independently of whether it's a
> > major
> > > > >>>> release
> > > > >>>>> or not.
> > > > >>>>>
> > > > >>>>>
> > > > >>>>>> -- change in minor version can introduce new features, but not
> > > break
> > > > >>>>>> backward compatibility
> > > > >>>>>> -- change in patch version, is for bug fixes only.
> > > > >>>>>>
> > > > >>>>>
> > > > >>>>> Right, this has been the case for a while already. Also see
> > > > >> annotations
> > > > >>>>> below.
> > > > >>>>>
> > > > >>>>>
> > > > >>>>>> - APIs labeled as evolving can be broken in backward
> > incompatible
> > > > >> way
> > > > >>> in
> > > > >>>>>> any release, but are assumed less likely to be broken compared
> > to
> > > > >>>> unstable
> > > > >>>>>> APIs
> > > > >>>>>> - APIs labeled as unstable can be broken in backward
> > incompatible
> > > > >> way
> > > > >>> in
> > > > >>>>>> any release, major, minor or patch
> > > > >>>>>>
> > > > >>>>>
> > > > >>>>> The relevant annotations do explain this:
> > > > >>>>>
> > > > >>>>> https://kafka.apache.org/0110/javadoc/org/apache/kafka/
> > > > >>>> common/annotation/
> > > > >>>>> InterfaceStability.html
> > > > >>>>> https://kafka.apache.org/0110/javadoc/org/apache/kafka/
> > > > >>>> common/annotation/
> > > > >>>>> InterfaceStability.Stable.html
> > > > >>>>> https://kafka.apache.org/0110/javadoc/org/apache/kafka/
> > > > >>>> common/annotation/
> > > > >>>>> InterfaceStability.Evolving.html
> > > > >>>>> https://kafka.apache.org/0110/javadoc/org/apache/kafka/
> > > > >>>> common/annotation/
> > > > >>>>> InterfaceStability.Unstable.html
> > > > >>>>>
> > > > >>>>> But we should have a section in our documentation as well.
> > > > >>>>>
> > > > >>>>>
> > > > >>>>>> - deprecated stable APIs are treated as any stable APIs, they
> > can
> > > be
> > > > >>>>>> removed only in major release, are not allowed to be changed
> in
> > > > >>> backward
> > > > >>>>>> incompatible way in either patch or minor version release
> > > > >>>>>>
> > > > >>>>>
> > > > >>>>> Right, but note that stable non-deprecated APIs provide
> stronger
> > > > >>>>> guarantees in major releases (they can't be changed in an
> > > > >> incompatible
> > > > >>>> way).
> > > > >>>>>
> > > > >>>>>>
> > > > >>>>>> This means one should be able to upgrade server and
> > > recompile/deploy
> > > > >>>> apps
> > > > >>>>>> with clients to new minor.patch release with dependency
> version
> > > > >> change
> > > > >>>>>> being only change needed and there would be no drama.
> > > > >>>>>>
> > > > >>>>>
> > > > >>>>> That should have been the case for a while as long as you are
> > using
> > > > >>>> stable
> > > > >>>>> public APIs.
> > > > >>>>>
> > > > >>>>>>
> > > > >>>>>> Practice/"features" like protocol version being a parameter,
> and
> > > > >>>>>> defaulting
> > > > >>>>>> to latest so auto updated with dependency update which
> > introduces
> > > > >> new
> > > > >>>>>> protocol/behavior should not be used in public client APIs. To
> > > > >> switch
> > > > >>>>>> between backward incompatible APIs (contract and behaviors),
> > > ideally
> > > > >>>> user
> > > > >>>>>> should explicitly have to change code and not dependency only,
> > but
> > > > >> at
> > > > >>>>>> least
> > > > >>>>>> it should be clearly communicated that there are breaking
> > changes
> > > to
> > > > >>>>>> expect
> > > > >>>>>> even with just dependency update by e.g. giving major version
> > > > >> release
> > > > >>>>>> clear
> > > > >>>>>> meaning. If app dependency on Kafka client library minor.patch
> > on
> > > > >> same
> > > > >>>>>> major is updated, and if there's a change in behavior or API
> > > > >> requiring
> > > > >>>> app
> > > > >>>>>> code change - it's a bug.
> > > > >>>>>>
> > > > >>>>>
> > > > >>>>> Hmm, if the protocol bump provides improved behaviour, that is
> > not
> > > a
> > > > >>>>> backwards incompatible change though. So, I don't think I agree
> > > with
> > > > >>>> this.
> > > > >>>>> Of course,
> > > > >>>>> it does mean that _downgrading_ may cause loss of
> functionality.
> > > > >> That's
> > > > >>>>> OK, in my opinion.
> > > > >>>>>
> > > > >>>>> Change introduced contrary to the SLO, is OK to be reported as
> > bug.
> > > > >>>>>> Everything else is improvement or feature request.
> > > > >>>>>>
> > > > >>>>>> If this was the case, and 1.0.0 was released today with APIs
> as
> > > they
> > > > >>> are
> > > > >>>>>> now, Scala client APIs even though deprecated would not break
> > and
> > > > >>>> require
> > > > >>>>>> refactoring with every 1.* minor/patch release, and would only
> > be
> > > > >>>> allowed
> > > > >>>>>> to be broken or removed in future major release, like 2.0.0
> > > > >>>>>>
> > > > >>>>>
> > > > >>>>> Yes, that is the plan for any _public_ Scala client APIs that
> are
> > > > >> still
> > > > >>>>> present in 1.0.0. The public Scala client APIs are the producer
> > and
> > > > >>>>> consumer, basically. Again, we should make this clear in our
> > > > >>>> documentation.
> > > > >>>>> Note that we have made an effort to keep those APIs compatible
> > for
> > > > >>> quite
> > > > >>>> a
> > > > >>>>> while. It sounds like you have had some issues, were they
> related
> > > to
> > > > >>>> usage
> > > > >>>>> of internal Admin APIs by any chance (since we didn't have a
> > public
> > > > >>>>> AdminClient API until very recently)?
> > > > >>>>>
> > > > >>>>>>
> > > > >>>>>> It should be also clear how long is each version supported -
> > e.g.
> > > if
> > > > >>>>>> minor.patch had meaning that there are no backward
> incompatible
> > > > >>> changes,
> > > > >>>>>> it's OK to file a bug only for current major.minor.patch;
> > previous
> > > > >>> major
> > > > >>>>>> and its last minor.patch can only have patches released up to
> > some
> > > > >>> time
> > > > >>>>>> like 1 up to 3 months.
> > > > >>>>>>
> > > > >>>>>
> > > > >>>>> I am not sure I understood this point correctly. Can you please
> > > > >>> clarify?
> > > > >>>>>
> > > > >>>>> If there are changes in release cadence with new versioning, it
> > > > >> should
> > > > >>> be
> > > > >>>>>> clear too.
> > > > >>>>>>
> > > > >>>>>
> > > > >>>>> No changes are planned. We have started time-based releases
> less
> > > > >> than a
> > > > >>>>> year ago and they seem to be going well.
> > > > >>>>>
> > > > >>>>> Ismael
> > > > >>>>>
> > > > >>>>
> > > > >>>
> > > > >>>
> > > > >>>
> > > > >>> --
> > > > >>> -- Guozhang
> > > > >>>
> > > > >>
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> >
> >
> >
> > --
> > -- Guozhang
> >
>

Reply via email to