Ok, good that the concept was already considered. I will bring it up for
discussion soon with KIP-1324 then.

Thanks!
Lianet

On Mon, Sep 28, 2026, 2:18 p.m. Andrew Schofield <[email protected]>
wrote:

> Hi Lianet,
> Thanks for your response.
>
> I did discuss something similar with Matthias but decided that we weren't
> quite ready to commit to a specific behaviour in this KIP. I suggest that
> you include it in KIP-1324. There's a strong chance that KIPs 1313, 1368
> and 1324 all land in the same 4.5 release, and that will mean the RPC
> changes can be coalesced into the same version bump.
>
> Thanks,
> Andrew
>
> On 2026/09/28 17:38:12 Lianet Magrans wrote:
> > Hi Andrew, just one question here, did we consider identifying not just
> the
> > framework type and version, but also the "framework instance"? Similar to
> > what KIP-1313 did for clients (UUID for consumer/prodcuer/admin), but
> > closing the loop to have a way to identify instances of this new "logical
> > client" which is the framework.
> >
> > That would be useful the moment we have several instances of the
> > "framework" running together I expect, e.g., several streams instances,
> > KIP-1313 would give us UUIDs for all the consumers/producer/admins
> running
> > underneath, and KIP-1368 tell us they are behind a "logical
> > client"/framework" ("streams"), but no way to tell here one of the
> > "streams" framwork instances from the other one. Streams already has a
> > process ID that fills that gap, the point to consider is if it's
> something
> > we would want along with the framework type.
> >
> > I'm thinking about this coming from KIP-1324 btw (pushing configs from
> the
> > client to the broker). For features like that, seems useful to identify
> not
> > only the framework type, but also the "framework instance".  I'm happy to
> > consider it as part of KIP-1324 (that I plan to resume soon), but raising
> > it for consideration, as it's closely related to the framework type.
> >
> > Thanks!
> > Lianet
> >
> > On Thu, Sep 24, 2026 at 2:45 PM Jun Rao via dev <[email protected]>
> > wrote:
> >
> > > Hi, Andrew,
> > >
> > > Thanks for the updated KIP. LGTM
> > >
> > > Jun
> > >
> > > On Thu, Sep 24, 2026 at 10:58 AM Andrew Schofield <
> [email protected]>
> > > wrote:
> > >
> > > > Hi Jun,
> > > >
> > > > JR7: Done.
> > > >
> > > > Thanks,
> > > > Andrew
> > > >
> > > > On 2026/09/24 16:20:08 Jun Rao via dev wrote:
> > > > > Hi, Andrew,
> > > > >
> > > > > Thanks for the updated KIP.
> > > > >
> > > > > JR7. Piggybacking on the version bump in 4.5 sounds good to me.
> Could
> > > we
> > > > > document the version bump in the KIP?
> > > > >
> > > > > Jun
> > > > >
> > > > > On Thu, Sep 24, 2026 at 7:32 AM Andrew Schofield <
> > > [email protected]>
> > > > > wrote:
> > > > >
> > > > > > Hi Jun,
> > > > > > Thanks for your reply.
> > > > > >
> > > > > > JR7: There is a tension here between bumping the version when
> adding
> > > > these
> > > > > > tagged fields because it is a new feature and not doing so
> because of
> > > > the
> > > > > > negotiation aspects of this. I believe that AK 4.5 will
> introduce a
> > > new
> > > > > > version of ApiVersions anyway because of KIP-1313, so the best
> path
> > > is
> > > > > > probably to piggyback the tagged field addition onto that new
> > > version.
> > > > > >
> > > > > > JR8.1: I've added this constraint in AK 5.0 since we need a major
> > > > version
> > > > > > to enforce this. In practice, nobody will be hit by this limit.
> > > > > > JR8.2: Yes, constraint added to the configs too.
> > > > > >
> > > > > > Thanks,
> > > > > > Andrew
> > > > > >
> > > > > > On 2026/09/24 00:08:16 Jun Rao via dev wrote:
> > > > > > > Hi, Andrew,
> > > > > > >
> > > > > > > Thanks for the updated KIP.
> > > > > > >
> > > > > > > JR7. Currently, we always bump the version when adding a tagged
> > > > field.
> > > > > > The
> > > > > > > intention of this KIP is to add the two tagged fields without a
> > > > version
> > > > > > > bump. This choice seems reasonable since it avoids an extra
> round
> > > of
> > > > > > > ApiVersionRequest version negotiation when 4.5 clients talk to
> 4.4
> > > > > > servers. It
> > > > > > > would be useful to be explicit document there is not version
> bump
> > > for
> > > > > > > ApiVersionRequest.
> > > > > > >
> > > > > > > JR8. "The maximum length of the fields is 249 characters"
> > > > > > > JR8.1 Should the length constraint also apply to the existing
> > > fields
> > > > > > > ClientSoftwareName and ClientSoftwareVersion?
> > > > > > > JR8.2 Should we add a length constraint for the two new client
> > > > > > > configurations?
> > > > > > >
> > > > > > > Jun
> > > > > > >
> > > > > > > On Wed, Sep 23, 2026 at 6:42 AM Andrew Schofield <
> > > > [email protected]>
> > > > > > > wrote:
> > > > > > >
> > > > > > > > Hi Jun,
> > > > > > > > Thanks for the reply.
> > > > > > > >
> > > > > > > > JR6: Yes, that works. I've added the methods to
> > > > ClientTelemetryContext.
> > > > > > > > Let me know what you think.
> > > > > > > >
> > > > > > > > Thanks,
> > > > > > > > Andrew
> > > > > > > >
> > > > > > > > On 2026/09/21 17:54:38 Jun Rao via dev wrote:
> > > > > > > > > Hi, Andrew,
> > > > > > > > >
> > > > > > > > > Thanks for the reply.
> > > > > > > > >
> > > > > > > > > JR6. It seems weird that the implementation of a KIP-714
> plugin
> > > > > > requires
> > > > > > > > > casting an authorizableRequestContext to an internal class
> > > > > > > > RequestContext.
> > > > > > > > > Would it be better to expose all client related resource
> labels
> > > > > > through a
> > > > > > > > > public API in ClientTelemetryContext?
> > > > > > > > >
> > > > > > > > > Jun
> > > > > > > > >
> > > > > > > > > On Mon, Sep 21, 2026 at 6:43 AM Andrew Schofield <
> > > > > > [email protected]>
> > > > > > > > > wrote:
> > > > > > > > >
> > > > > > > > > > Hi Jun,
> > > > > > > > > > Thanks for the reply.
> > > > > > > > > >
> > > > > > > > > > JR4: Done. Producer, consumer and admin.
> > > > > > > > > >
> > > > > > > > > > JR5: Yes. I've reworded slightly.
> > > > > > > > > >
> > > > > > > > > > JR6: I think the plugin implementation already needs to
> do
> > > > > > something
> > > > > > > > > > similar to get to software name/version.
> > > > > > > > > > ClientTelemetryContext.authorizableRequestContext()
> returns
> > > an
> > > > > > > > instance of
> > > > > > > > > > AuthorizableRequestContext. The
> > > > > > o.a.k.common.requests.RequestContext
> > > > > > > > class
> > > > > > > > > > implements that interface, and it also lets you get to
> > > > > > > > ClientInformation
> > > > > > > > > > and that's where you can find the software name/version
> and
> > > > > > framework
> > > > > > > > > > name/version. You can see this in
> > > > > > > > > > o.a.k.server.metrics.ClientMetricsInstanceMetadata. I
> would
> > > > > > describe
> > > > > > > > this
> > > > > > > > > > as grubby :)
> > > > > > > > > >
> > > > > > > > > > One way forward here would be to remove the broker-added
> > > > resource
> > > > > > > > labels
> > > > > > > > > > from KIP-1368, but leave the additions to the match
> criteria.
> > > > Then
> > > > > > it
> > > > > > > > would
> > > > > > > > > > still be possible to specify, for example, that
> particular
> > > > metrics
> > > > > > > > should
> > > > > > > > > > be captured for Kafka Streams clients only, without
> adding to
> > > > the
> > > > > > > > > > grubbiness.
> > > > > > > > > >
> > > > > > > > > > Thanks,
> > > > > > > > > > Andrew
> > > > > > > > > >
> > > > > > > > > > On 2026/09/15 20:44:06 Jun Rao via dev wrote:
> > > > > > > > > > > Hi, Andrew,
> > > > > > > > > > >
> > > > > > > > > > > Thanks for the reply. A few more comments.
> > > > > > > > > > >
> > > > > > > > > > > JR4. "The configuration keys are defined in
> > > > > > > > > > > org.apache.kafka.clients.CommonClientConfigs"
> > > > > > > > > > > Could you explicitly list the clients (producer,
> consumer,
> > > > > > > > AdminClient,
> > > > > > > > > > > etc.) that define the two new configs?
> > > > > > > > > > >
> > > > > > > > > > > JR5. Should AK frameworks such as kstream and connect
> set
> > > > > > > > > > > client.framework.name and client.framework.version in
> > > their
> > > > > > clients
> > > > > > > > > > > automatically?
> > > > > > > > > > >
> > > > > > > > > > > JR6. "Broker-added resources labels for client metrics"
> > > > > > > > > > > Are the new labels added in
> > > > > > > > DefaultClientTelemetryContext.RequestContext?
> > > > > > > > > > > Since ClientTelemetryExporter.exportMetrics() only
> takes
> > > > > > > > > > > ClientTelemetryContext, does the implementor need to
> cast
> > > it
> > > > > > > > > > > to DefaultClientTelemetryContext to retrieve the new
> > > labels?
> > > > > > > > > > >
> > > > > > > > > > > Jun
> > > > > > > > > > >
> > > > > > > > > > > On Fri, Sep 11, 2026 at 12:48 PM Andrew Schofield <
> > > > > > > > [email protected]
> > > > > > > > > > >
> > > > > > > > > > > wrote:
> > > > > > > > > > >
> > > > > > > > > > > > Hi Jun,
> > > > > > > > > > > > JR1: I dug into the KIP-714 client metrics stuff a
> bit
> > > more
> > > > > > and I
> > > > > > > > have
> > > > > > > > > > > > revised the KIP. I have added client-framework-name
> and
> > > > > > > > > > > > client-framework-version to the set of keys in the
> > > > matching for
> > > > > > > > client
> > > > > > > > > > > > metrics, and also added these broker-added metrics
> tags.
> > > > This
> > > > > > is
> > > > > > > > how
> > > > > > > > > > these
> > > > > > > > > > > > pieces of information would have been incorporated
> into
> > > > > > KIP_714 had
> > > > > > > > > > they
> > > > > > > > > > > > been part of Kafka at that point.
> > > > > > > > > > > >
> > > > > > > > > > > > Thanks,
> > > > > > > > > > > > Andrew
> > > > > > > > > > > >
> > > > > > > > > > > > On 2026/08/04 20:29:19 Andrew Schofield wrote:
> > > > > > > > > > > > > Hi Jun,
> > > > > > > > > > > > > Thanks for the response.
> > > > > > > > > > > > >
> > > > > > > > > > > > > JR1: My intent here is only request logging. It
> would
> > > be
> > > > > > > > possible to
> > > > > > > > > > add
> > > > > > > > > > > > client-framework-name and client-framework-version
> to the
> > > > match
> > > > > > > > > > criteria
> > > > > > > > > > > > for client metrics, which could conceivably permit
> > > > scenarios
> > > > > > such
> > > > > > > > as
> > > > > > > > > > > > capturing metrics from specific versions of the
> Spring
> > > > > > framework.
> > > > > > > > This
> > > > > > > > > > is
> > > > > > > > > > > > beyond the scope I have in mind.
> > > > > > > > > > > > >
> > > > > > > > > > > > > JR3: Thanks for clarifying the tagged field
> > > conventions.
> > > > > > Version
> > > > > > > > bump
> > > > > > > > > > > > reverted.
> > > > > > > > > > > > >
> > > > > > > > > > > > > Thanks,
> > > > > > > > > > > > > Andrew
> > > > > > > > > > > > >
> > > > > > > > > > > > > On 2026/08/04 18:38:40 Jun Rao via dev wrote:
> > > > > > > > > > > > > > Hi, Andrew,
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > Thanks for the reply.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > JR1. ClientSoftwareName and
> ClientSoftwareVersion are
> > > > used
> > > > > > in
> > > > > > > > > > metric
> > > > > > > > > > > > names
> > > > > > > > > > > > > > and match predicates for configuring client
> metrics.
> > > > Are
> > > > > > > > > > > > ClientFrameworkName
> > > > > > > > > > > > > > and ClientFrameworkVersion used in those places
> too
> > > or
> > > > are
> > > > > > they
> > > > > > > > > > only
> > > > > > > > > > > > used
> > > > > > > > > > > > > > in request logging?
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > JR3. The general rule for adding a new field in
> RPC
> > > is
> > > > that
> > > > > > > > (1) if
> > > > > > > > > > it's
> > > > > > > > > > > > > > truly optional, we add it as a tagged field with
> no
> > > > version
> > > > > > > > bump;
> > > > > > > > > > (2)
> > > > > > > > > > > > > > otherwise, we add it as a non-tagged field with a
> > > > version
> > > > > > > > bump. One
> > > > > > > > > > > > > > exception is when adding a non-optional field in
> the
> > > > > > request
> > > > > > > > > > header.
> > > > > > > > > > > > > > Because of the limitation in existing
> implementation,
> > > > we
> > > > > > need
> > > > > > > > to
> > > > > > > > > > add
> > > > > > > > > > > > it as
> > > > > > > > > > > > > > a tagged field with a version bump.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > Jun
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > On Tue, Aug 4, 2026 at 6:04 AM Andrew Schofield <
> > > > > > > > > > [email protected]
> > > > > > > > > > > > >
> > > > > > > > > > > > > > wrote:
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > > Hi Jun,
> > > > > > > > > > > > > > > Thanks for your response.
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > JR1: I've expanded the motivation section in
> the
> > > KIP.
> > > > > > They
> > > > > > > > are
> > > > > > > > > > truly
> > > > > > > > > > > > > > > optional, I feel. When diagnosing an issue
> using
> > > the
> > > > > > client
> > > > > > > > logs,
> > > > > > > > > > > > having
> > > > > > > > > > > > > > > this information can illuminate why the
> application
> > > > is
> > > > > > > > behaving
> > > > > > > > > > in a
> > > > > > > > > > > > > > > particular way. If the application is using a
> > > > framework,
> > > > > > > > > > behaviours
> > > > > > > > > > > > such as
> > > > > > > > > > > > > > > retries will typically not be in the
> application
> > > code
> > > > > > itself
> > > > > > > > > > because
> > > > > > > > > > > > > > > they're implemented in the framework. There's a
> > > > > > difference
> > > > > > > > > > between
> > > > > > > > > > > > what the
> > > > > > > > > > > > > > > application developer thinks their code does
> and
> > > > what we
> > > > > > see
> > > > > > > > in
> > > > > > > > > > the
> > > > > > > > > > > > logs.
> > > > > > > > > > > > > > > That's the point.
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > JR2: Done. They're Type.STRING, default null. I
> > > think
> > > > > > they
> > > > > > > > > > should be
> > > > > > > > > > > > > > > importance LOW because that affects the
> prominence
> > > > of the
> > > > > > > > > > configs in
> > > > > > > > > > > > the
> > > > > > > > > > > > > > > documentation, but I wonder whether you agree.
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > Thanks,
> > > > > > > > > > > > > > > Andrew
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > On 2026/08/03 21:39:06 Jun Rao via dev wrote:
> > > > > > > > > > > > > > > > Hi, Andrew,
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > Thanks for the KIP.
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > JR1. Could you describe the use cases of the
> two
> > > > new
> > > > > > > > configs
> > > > > > > > > > and
> > > > > > > > > > > > are they
> > > > > > > > > > > > > > > > truly optional?
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > JR2. Could you add the type and the default
> value
> > > > for
> > > > > > the
> > > > > > > > new
> > > > > > > > > > > > configs?
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > Jun
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > On Fri, Jul 31, 2026 at 10:23 AM Matthias J.
> Sax
> > > <
> > > > > > > > > > [email protected]
> > > > > > > > > > > > >
> > > > > > > > > > > > > > > wrote:
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > Thanks for the KIP Andrew. I think it will
> be
> > > > very
> > > > > > > > useful if
> > > > > > > > > > we
> > > > > > > > > > > > can
> > > > > > > > > > > > > > > > > identify frameworks, especially our own
> ones
> > > > > > (Connect and
> > > > > > > > > > > > Streams).
> > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > About Aditya's point: I am wondering where
> to
> > > > draw
> > > > > > the
> > > > > > > > line.
> > > > > > > > > > Many
> > > > > > > > > > > > > > > > > examples seems to be metadata that belongs
> into
> > > > he
> > > > > > Kafka
> > > > > > > > > > record
> > > > > > > > > > > > > > > > > `Headers` at the application level, rather
> than
> > > > the
> > > > > > lower
> > > > > > > > > > level
> > > > > > > > > > > > request
> > > > > > > > > > > > > > > > > headers?
> > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > There if of course no strict logical
> dividing
> > > > line
> > > > > > > > between
> > > > > > > > > > both.
> > > > > > > > > > > > And
> > > > > > > > > > > > > > > > > yes, the broker does not access application
> > > level
> > > > > > Kafka
> > > > > > > > > > record
> > > > > > > > > > > > > > > > > `Headers`. But if it would be useful to
> let the
> > > > > > broker
> > > > > > > > tap
> > > > > > > > > > into
> > > > > > > > > > > > > > > > > application level record `Headers` we
> should
> > > > tackle
> > > > > > it
> > > > > > > > > > > > independently?
> > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > Personally, I don't think it would be the
> right
> > > > > > design to
> > > > > > > > > > push
> > > > > > > > > > > > too many
> > > > > > > > > > > > > > > > > thing into the lower level request
> headers. So
> > > I
> > > > am
> > > > > > in
> > > > > > > > favor
> > > > > > > > > > of
> > > > > > > > > > > > only
> > > > > > > > > > > > > > > > > added the two new propose
> `ClientFrameworkName`
> > > > and
> > > > > > > > > > > > > > > > > `ClientFrameworkVersion` fields.
> > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > -Matthias
> > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > On 7/31/26 7:56 AM, Federico Valeri wrote:
> > > > > > > > > > > > > > > > > > Changes look good. Thanks.
> > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > On Fri, Jul 31, 2026 at 11:17 AM Andrew
> > > > Schofield <
> > > > > > > > > > > > > > > [email protected]>
> > > > > > > > > > > > > > > > > wrote:
> > > > > > > > > > > > > > > > > >>
> > > > > > > > > > > > > > > > > >> Hi Fede,
> > > > > > > > > > > > > > > > > >> Thanks for your response.
> > > > > > > > > > > > > > > > > >>
> > > > > > > > > > > > > > > > > >> FV1: They are set using the regular
> config
> > > > > > properties.
> > > > > > > > > > Yes,
> > > > > > > > > > > > it is
> > > > > > > > > > > > > > > > > possible for an end user to set arbitrary
> > > > values, but
> > > > > > > > then
> > > > > > > > > > that
> > > > > > > > > > > > would
> > > > > > > > > > > > > > > also
> > > > > > > > > > > > > > > > > be true of a builder or internal
> constructor.
> > > > I've
> > > > > > added
> > > > > > > > a
> > > > > > > > > > bit
> > > > > > > > > > > > more
> > > > > > > > > > > > > > > > > information in the KIP and beefed up the
> config
> > > > > > > > descriptions
> > > > > > > > > > to
> > > > > > > > > > > > > > > discourage
> > > > > > > > > > > > > > > > > application use.
> > > > > > > > > > > > > > > > > >>
> > > > > > > > > > > > > > > > > >> FV2: I've never encountered such
> nightmares
> > > > > > myself.
> > > > > > > > The
> > > > > > > > > > > > framework
> > > > > > > > > > > > > > > which
> > > > > > > > > > > > > > > > > sets the config last would win. Maybe this
> is a
> > > > > > > > motivation
> > > > > > > > > > for
> > > > > > > > > > > > having a
> > > > > > > > > > > > > > > > > programmatic way of setting the
> information. We
> > > > could
> > > > > > > > support
> > > > > > > > > > > > > > > concatenation
> > > > > > > > > > > > > > > > > of framework information, but that's just
> > > > pandering
> > > > > > to
> > > > > > > > these
> > > > > > > > > > > > people.
> > > > > > > > > > > > > > > Let me
> > > > > > > > > > > > > > > > > know what you think.
> > > > > > > > > > > > > > > > > >>
> > > > > > > > > > > > > > > > > >> I've also updated the KIP with a maximum
> > > > length
> > > > > > for
> > > > > > > > these
> > > > > > > > > > > > pieces of
> > > > > > > > > > > > > > > > > information since all identifiers should
> have
> > > > defined
> > > > > > > > bounds.
> > > > > > > > > > > > > > > > > >>
> > > > > > > > > > > > > > > > > >> Thanks,
> > > > > > > > > > > > > > > > > >> Andrew
> > > > > > > > > > > > > > > > > >>
> > > > > > > > > > > > > > > > > >> On 2026/07/31 08:50:11 Federico Valeri
> > > wrote:
> > > > > > > > > > > > > > > > > >>> Hi Andrew, the motivation looks good. A
> > > > couple of
> > > > > > > > > > questions:
> > > > > > > > > > > > > > > > > >>>
> > > > > > > > > > > > > > > > > >>> FV1: The KIP says frameworks should set
> > > them,
> > > > > > but it
> > > > > > > > > > does not
> > > > > > > > > > > > > > > specify
> > > > > > > > > > > > > > > > > >>> the mechanism. If these are ordinary
> > > > user-facing
> > > > > > > > configs,
> > > > > > > > > > > > nothing
> > > > > > > > > > > > > > > > > >>> prevents an end user from setting
> arbitrary
> > > > > > values,
> > > > > > > > which
> > > > > > > > > > > > defeats
> > > > > > > > > > > > > > > the
> > > > > > > > > > > > > > > > > >>> purpose. Should the framework set them
> > > > > > > > programmatically
> > > > > > > > > > > > (builder or
> > > > > > > > > > > > > > > > > >>>    internal constructor) or is user
> > > override
> > > > > > > > intentional?
> > > > > > > > > > > > > > > > > >>>
> > > > > > > > > > > > > > > > > >>> FV2: What if we have multiple layers of
> > > > > > frameworks?
> > > > > > > > Let's
> > > > > > > > > > > > say a
> > > > > > > > > > > > > > > custom
> > > > > > > > > > > > > > > > > >>> framework on top of SpringBoot. I've
> seen
> > > > similar
> > > > > > > > > > nightmares
> > > > > > > > > > > > in the
> > > > > > > > > > > > > > > > > >>> past.
> > > > > > > > > > > > > > > > > >>>
> > > > > > > > > > > > > > > > > >>> Thanks
> > > > > > > > > > > > > > > > > >>> Fede
> > > > > > > > > > > > > > > > > >>>
> > > > > > > > > > > > > > > > > >>> On Tue, Jul 28, 2026 at 8:27 AM Aditya
> > > > Kousik <
> > > > > > > > > > > > > > > [email protected]>
> > > > > > > > > > > > > > > > > wrote:
> > > > > > > > > > > > > > > > > >>>>
> > > > > > > > > > > > > > > > > >>>> Hi Andrew,
> > > > > > > > > > > > > > > > > >>>>
> > > > > > > > > > > > > > > > > >>>> We’re definitely agreed on the
> increased
> > > > use of
> > > > > > > > > > frameworks
> > > > > > > > > > > > over
> > > > > > > > > > > > > > > than
> > > > > > > > > > > > > > > > > the client directly. I’ve cited the
> different
> > > > > > patterns
> > > > > > > > > > Spring,
> > > > > > > > > > > > > > > Micronaut,
> > > > > > > > > > > > > > > > > smallrye and company-internal frameworks
> have
> > > > APIs
> > > > > > built
> > > > > > > > on
> > > > > > > > > > top
> > > > > > > > > > > > of the
> > > > > > > > > > > > > > > > > Kafka client, in a couple of KIPs already.
> > > > > > > > > > > > > > > > > >>>>
> > > > > > > > > > > > > > > > > >>>> The project has enough traction that I
> > > > think of
> > > > > > it
> > > > > > > > as
> > > > > > > > > > its
> > > > > > > > > > > > own
> > > > > > > > > > > > > > > network
> > > > > > > > > > > > > > > > > client with distributed log semantics for
> which
> > > > > > > > frameworks
> > > > > > > > > > are
> > > > > > > > > > > > written,
> > > > > > > > > > > > > > > > > much like gRPC over netty. People want to
> just
> > > > write
> > > > > > the
> > > > > > > > > > business
> > > > > > > > > > > > > > > logic and
> > > > > > > > > > > > > > > > > leave the plumbing and threading to the
> > > > frameworks.
> > > > > > > > > > > > > > > > > >>>>
> > > > > > > > > > > > > > > > > >>>> All of this to say, I’m fine to ship
> the
> > > > client
> > > > > > > > > > framework
> > > > > > > > > > > > as the
> > > > > > > > > > > > > > > new
> > > > > > > > > > > > > > > > > identifying parameter for frameworks to
> set. It
> > > > will
> > > > > > be
> > > > > > > > > > mighty
> > > > > > > > > > > > useful.
> > > > > > > > > > > > > > > > > >>>>
> > > > > > > > > > > > > > > > > >>>> My addendum, rather than a pushback is
> > > that:
> > > > > > guilty
> > > > > > > > as
> > > > > > > > > > > > charged,
> > > > > > > > > > > > > > > I’m
> > > > > > > > > > > > > > > > > driven by the otel/DD
> telemetry/observability
> > > of
> > > > > > using
> > > > > > > > Apache
> > > > > > > > > > > > Kafka in
> > > > > > > > > > > > > > > > > applications. The client.framework.version
> > > > config for
> > > > > > > > > > instance
> > > > > > > > > > > > can be
> > > > > > > > > > > > > > > used
> > > > > > > > > > > > > > > > > to detect regressions and isolate root
> causes.
> > > > But I
> > > > > > > > feel it
> > > > > > > > > > is
> > > > > > > > > > > > only
> > > > > > > > > > > > > > > one of
> > > > > > > > > > > > > > > > > many such facets. You mentioned that you
> would
> > > > use
> > > > > > > > client.id
> > > > > > > > > > and
> > > > > > > > > > > > > > > > > clientInstanceId to identify a client but
> that
> > > > these
> > > > > > do
> > > > > > > > not
> > > > > > > > > > help
> > > > > > > > > > > > with
> > > > > > > > > > > > > > > > > aggregate/fleet-wide issues. As an
> example, if
> > > I
> > > > tag
> > > > > > an
> > > > > > > > > > app’s AZ
> > > > > > > > > > > > it can
> > > > > > > > > > > > > > > > > help me write alerts on spike in latency in
> > > > > > us-west-2.
> > > > > > > > Or,
> > > > > > > > > > > > detect stuck
> > > > > > > > > > > > > > > > > partitions across multiple
> > > > > > client.id/application.names
> > > > > > > > none
> > > > > > > > > > of
> > > > > > > > > > > > whom
> > > > > > > > > > > > > > > share
> > > > > > > > > > > > > > > > > the same client.framework.name.
> > > > > > > > > > > > > > > > > >>>>
> > > > > > > > > > > > > > > > > >>>> Other tags that come to mind:
> > > > application.name,
> > > > > > az,
> > > > > > > > > > team,
> > > > > > > > > > > > env,
> > > > > > > > > > > > > > > rack.
> > > > > > > > > > > > > > > > > All fields users usually hijack client.id
> for.
> > > > > > > > > > > > > > > > > >>>>
> > > > > > > > > > > > > > > > > >>>> An otel JavaAgent can capture the
> client
> > > > > > metadata
> > > > > > > > > > > > registered and
> > > > > > > > > > > > > > > > > attach it as tags with each resource span.
> > > Users
> > > > who
> > > > > > use
> > > > > > > > > > > > frameworks but
> > > > > > > > > > > > > > > > > rely on datadog/otel will get visibility
> into
> > > the
> > > > > > client
> > > > > > > > > > > > metadata for
> > > > > > > > > > > > > > > free.
> > > > > > > > > > > > > > > > > >>>>
> > > > > > > > > > > > > > > > > >>>> The KIP as I read it, serves as a
> > > > foundation for
> > > > > > > > future
> > > > > > > > > > > > use. So I
> > > > > > > > > > > > > > > > > don’t want to shoehorn a new behaviour if
> it
> > > > > > explodes the
> > > > > > > > > > scope
> > > > > > > > > > > > too
> > > > > > > > > > > > > > > much.
> > > > > > > > > > > > > > > > > >>>>
> > > > > > > > > > > > > > > > > >>>> Best regards,
> > > > > > > > > > > > > > > > > >>>> Aditya
> > > > > > > > > > > > > > > > > >>>>
> > > > > > > > > > > > > > > > > >>>>> On Jul 27, 2026, at 13:52, Andrew
> > > > Schofield <
> > > > > > > > > > > > > > > [email protected]>
> > > > > > > > > > > > > > > > > wrote:
> > > > > > > > > > > > > > > > > >>>>>
> > > > > > > > > > > > > > > > > >>>>> Hi Aditya,
> > > > > > > > > > > > > > > > > >>>>> Thanks for your response.
> > > > > > > > > > > > > > > > > >>>>>
> > > > > > > > > > > > > > > > > >>>>> AK1: I chose framework as the blessed
> > > > > > abstraction
> > > > > > > > > > because
> > > > > > > > > > > > my
> > > > > > > > > > > > > > > focus
> > > > > > > > > > > > > > > > > was problem determination for client
> > > > applications. We
> > > > > > > > often
> > > > > > > > > > find
> > > > > > > > > > > > that
> > > > > > > > > > > > > > > users
> > > > > > > > > > > > > > > > > with client problems have not coded
> directly to
> > > > the
> > > > > > Kafka
> > > > > > > > > > client
> > > > > > > > > > > > > > > interface
> > > > > > > > > > > > > > > > > because they are using a framework. As a
> > > result,
> > > > > > their
> > > > > > > > > > knowledge
> > > > > > > > > > > > of the
> > > > > > > > > > > > > > > > > application code is one level removed from
> the
> > > > Kafka
> > > > > > > > client.
> > > > > > > > > > > > > > > Frameworks can
> > > > > > > > > > > > > > > > > override configuration defaults, introduce
> > > > different
> > > > > > > > retry
> > > > > > > > > > > > behaviour
> > > > > > > > > > > > > > > and so
> > > > > > > > > > > > > > > > > on. Lots of companies have their own
> internal
> > > > > > > > frameworks, so
> > > > > > > > > > > > this KIP
> > > > > > > > > > > > > > > can
> > > > > > > > > > > > > > > > > be used by them too. I'm trying to make it
> > > > easier to
> > > > > > > > work out
> > > > > > > > > > > > when a
> > > > > > > > > > > > > > > user
> > > > > > > > > > > > > > > > > is making use of a framework and knowing
> what
> > > it
> > > > is.
> > > > > > > > > > > > > > > > > >>>>>
> > > > > > > > > > > > > > > > > >>>>> Sometimes, particularly for non-Java
> > > > clients,
> > > > > > > > people
> > > > > > > > > > have
> > > > > > > > > > > > > > > overridden
> > > > > > > > > > > > > > > > > the ClientSoftwareName/Version themselves,
> > > which
> > > > > > makes
> > > > > > > > those
> > > > > > > > > > > > concepts
> > > > > > > > > > > > > > > much
> > > > > > > > > > > > > > > > > less useful than they should be. By
> providing
> > > > > > > > > > > > > > > ClientFrameworkName/Version,
> > > > > > > > > > > > > > > > > there is no longer any need to do so.
> That's
> > > > another
> > > > > > > > > > motivation
> > > > > > > > > > > > here,
> > > > > > > > > > > > > > > even
> > > > > > > > > > > > > > > > > though KIPs don't concern themselves with
> > > > non-Java
> > > > > > > > clients as
> > > > > > > > > > > > such.
> > > > > > > > > > > > > > > > > >>>>>
> > > > > > > > > > > > > > > > > >>>>> We could go for a more flexible
> key-value
> > > > > > approach,
> > > > > > > > > > but a
> > > > > > > > > > > > simple
> > > > > > > > > > > > > > > > > name and version is sufficient for what I
> had
> > > in
> > > > > > mind.
> > > > > > > > Feel
> > > > > > > > > > free
> > > > > > > > > > > > to
> > > > > > > > > > > > > > > push
> > > > > > > > > > > > > > > > > back with additional justification and
> > > examples.
> > > > > > > > > > > > > > > > > >>>>>
> > > > > > > > > > > > > > > > > >>>>> AK2: Done.
> > > > o.a.k.clients.CommonClientConfigs.
> > > > > > > > > > > > > > > > > >>>>>
> > > > > > > > > > > > > > > > > >>>>> AK3: To identify a particular
> client, I
> > > > would
> > > > > > use
> > > > > > > > > > client
> > > > > > > > > > > > ID and
> > > > > > > > > > > > > > > > > client-instance ID. I think these are
> generally
> > > > more
> > > > > > > > useful
> > > > > > > > > > > > concepts
> > > > > > > > > > > > > > > than
> > > > > > > > > > > > > > > > > the framework name and version which are
> extra
> > > > > > > > information
> > > > > > > > > > for
> > > > > > > > > > > > the
> > > > > > > > > > > > > > > person
> > > > > > > > > > > > > > > > > trying to figure out why a client is not
> > > > behaving as
> > > > > > > > > > expected.
> > > > > > > > > > > > > > > > > >>>>>
> > > > > > > > > > > > > > > > > >>>>> AK4: I'm sure you have more
> experience of
> > > > > > > > OTel/DataDog
> > > > > > > > > > > > > > > collectors.
> > > > > > > > > > > > > > > > > You may well be correct that they would be
> > > > helpful
> > > > > > for
> > > > > > > > the
> > > > > > > > > > > > collectors.
> > > > > > > > > > > > > > > > > >>>>>
> > > > > > > > > > > > > > > > > >>>>> Thanks,
> > > > > > > > > > > > > > > > > >>>>> Andrew
> > > > > > > > > > > > > > > > > >>>>>
> > > > > > > > > > > > > > > > > >>>>>> On 2026/07/26 07:48:20 Aditya Kousik
> > > > wrote:
> > > > > > > > > > > > > > > > > >>>>>> Hello Andrew,
> > > > > > > > > > > > > > > > > >>>>>>
> > > > > > > > > > > > > > > > > >>>>>> I’m reminded of the client.id
> > > discussion
> > > > we
> > > > > > had
> > > > > > > > back
> > > > > > > > > > in
> > > > > > > > > > > > > > > KIP-1313
> > > > > > > > > > > > > > > > > re: client instance id. After that
> discussion,
> > > I
> > > > > > have a
> > > > > > > > WIP
> > > > > > > > > > KIP
> > > > > > > > > > > > that
> > > > > > > > > > > > > > > sets a
> > > > > > > > > > > > > > > > > foundation for shipping client metadata
> tags to
> > > > be
> > > > > > sent
> > > > > > > > for
> > > > > > > > > > > > telemetry.
> > > > > > > > > > > > > > > I
> > > > > > > > > > > > > > > > > was hoping we could discuss if part of that
> > > > approach
> > > > > > > > could
> > > > > > > > > > fit
> > > > > > > > > > > > this
> > > > > > > > > > > > > > > KIP.
> > > > > > > > > > > > > > > > > >>>>>>
> > > > > > > > > > > > > > > > > >>>>>> AK1. I had a note on the motivation
> of
> > > > > > selecting a
> > > > > > > > > > > > “framework”
> > > > > > > > > > > > > > > as a
> > > > > > > > > > > > > > > > > blessed abstraction. The KIP mentions it’s
> for
> > > > the
> > > > > > client
> > > > > > > > > > > > metadata and
> > > > > > > > > > > > > > > > > easier problem diagnosis. This is akin to
> an
> > > > > > > > “application id”
> > > > > > > > > > > > that
> > > > > > > > > > > > > > > > > non-framework clients usually tag with.
> > > > > > > > > > > > > > > > > >>>>>>
> > > > > > > > > > > > > > > > > >>>>>> KIP-606 took an approach like
> > > > > > > > > > > > metrics.context.<key>=<val>. If we
> > > > > > > > > > > > > > > > > allow client.metadata.<key>=<val>, then a
> > > > > > > > > > framework/application
> > > > > > > > > > > > name
> > > > > > > > > > > > > > > and
> > > > > > > > > > > > > > > > > version can sit in such a metadata context
> and
> > > be
> > > > > > sent
> > > > > > > > with
> > > > > > > > > > > > ApiVersion
> > > > > > > > > > > > > > > RPC.
> > > > > > > > > > > > > > > > > Of course, this is an open box approach
> rather
> > > > than
> > > > > > just
> > > > > > > > the
> > > > > > > > > > > > framework
> > > > > > > > > > > > > > > > > name/version (just two fields) we’re
> adding to
> > > > the
> > > > > > > > protocol.
> > > > > > > > > > But
> > > > > > > > > > > > I’m
> > > > > > > > > > > > > > > > > curious about the tier of importance of
> > > framework
> > > > > > alone.
> > > > > > > > > > > > > > > > > >>>>>>
> > > > > > > > > > > > > > > > > >>>>>> AK2. Can you clarify if this config
> goes
> > > > into
> > > > > > > > > > > > > > > > > CommonClientConfigs.java, referenced across
> > > > > > > > > > > > producer/consumer/share
> > > > > > > > > > > > > > > etc? I
> > > > > > > > > > > > > > > > > know some share props have the “share.”
> prefix
> > > > going.
> > > > > > > > > > > > > > > > > >>>>>>
> > > > > > > > > > > > > > > > > >>>>>> AK3. In another thread you mentioned
> > > that
> > > > the
> > > > > > > > broker
> > > > > > > > > > may
> > > > > > > > > > > > add it
> > > > > > > > > > > > > > > to
> > > > > > > > > > > > > > > > > the request context. In client logs,
> clientId
> > > is
> > > > a
> > > > > > very
> > > > > > > > > > useful
> > > > > > > > > > > > string
> > > > > > > > > > > > > > > to
> > > > > > > > > > > > > > > > > identify WARN logs when things go sideways
> like
> > > > > > broker
> > > > > > > > > > > > disconnected,
> > > > > > > > > > > > > > > > > rebalance in progress etc. Can you cherry
> pick
> > > > and
> > > > > > > > highlight
> > > > > > > > > > some
> > > > > > > > > > > > > > > useful
> > > > > > > > > > > > > > > > > log places that these strings can go? I
> suppose
> > > > > > adding
> > > > > > > > > > > > > > > clientId/framework
> > > > > > > > > > > > > > > > > to the MDC context might be too voluminous.
> > > > > > > > > > > > > > > > > >>>>>>
> > > > > > > > > > > > > > > > > >>>>>> AK4. I foresee collectors like
> > > > Datadog/OTel
> > > > > > might
> > > > > > > > find
> > > > > > > > > > > > these
> > > > > > > > > > > > > > > tags
> > > > > > > > > > > > > > > > > useful in each span exported.
> > > > > > > > > > > > > > > > > >>>>>>
> > > > > > > > > > > > > > > > > >>>>>> Looking forward to your thoughts on
> > > this.
> > > > > > > > > > > > > > > > > >>>>>>
> > > > > > > > > > > > > > > > > >>>>>> Regards,
> > > > > > > > > > > > > > > > > >>>>>> Aditya
> > > > > > > > > > > > > > > > > >>>>>>
> > > > > > > > > > > > > > > > > >>>>>>>> On Jul 17, 2026, at 11:53, Andrew
> > > > Schofield
> > > > > > <
> > > > > > > > > > > > > > > > > [email protected]> wrote:
> > > > > > > > > > > > > > > > > >>>>>>>
> > > > > > > > > > > > > > > > > >>>>>>> Hi,
> > > > > > > > > > > > > > > > > >>>>>>> I'd like to open discussion on
> > > KIP-1368:
> > > > > > Client
> > > > > > > > > > > > framework name
> > > > > > > > > > > > > > > and
> > > > > > > > > > > > > > > > > version.
> > > > > > > > > > > > > > > > > >>>>>>>
> > > > > > > > > > > > > > > > > >>>>>>> Applications often use application
> > > > frameworks
> > > > > > > > such as
> > > > > > > > > > > > Spring to
> > > > > > > > > > > > > > > > > connect to Kafka. To assist with problem
> > > > diagnosis,
> > > > > > this
> > > > > > > > KIP
> > > > > > > > > > > > > > > introduces a
> > > > > > > > > > > > > > > > > way to provide the framework name and
> version
> > > as
> > > > > > part of
> > > > > > > > the
> > > > > > > > > > > > metadata
> > > > > > > > > > > > > > > the
> > > > > > > > > > > > > > > > > client sends to the broker when it
> connects.
> > > > > > > > > > > > > > > > > >>>>>>>
> > > > > > > > > > > > > > > > > >>>>>>> Here's the KIP:
> > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > >
> > > > > > > >
> > > > > >
> > > >
> > >
> https://urldefense.com/v3/__https://cwiki.apache.org/confluence/x/J4Q_Gg__;!!Ayb5sqE7!vs-_AkY76KFOqYK02q4f2tKSkFdnly7eklb5qfewIk841seg2S5cIOXxFhnAixEYsDVuFQyJx8-D5g$
> > > > > > > > > > > > > > > > > >>>>>>>
> > > > > > > > > > > > > > > > > >>>>>>> Thanks,
> > > > > > > > > > > > > > > > > >>>>>>> Andrew
> > > > > > > > > > > > > > > > > >>>>>>
> > > > > > > > > > > > > > > > > >>>
> > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Reply via email to