I agree, if the desire is to keep the internal SMTs collection small then 
providing an ease of discovery like Gunnar suggestions would be extremely 
helpful. 

Brandon Brown

> On Nov 19, 2021, at 6:13 PM, Gunnar Morling 
> <gunnar.morl...@googlemail.com.invalid> wrote:
> 
> Hi all,
> 
> Just came across this thread, I hope the late reply is ok.
> 
> FWIW, we're in a similar situation in Debezium, where users often request
> new (Debezium-specific) SMTs, and we generally tend to recommend them to be
> maintained by users themselves, unless they are truly generic. This
> excludes a share of users though who aren't Java developers.
> 
> What might help is having means of simple discoverability of externally
> hosted SMTs, e.g. via some kind of catalog hosted on kafka.apache.org. That
> way, people would have it easier to find and obtain SMTs from other places,
> reducing the pressure to get them added to Apache Kafka proper.
> 
> Best,
> 
> --Gunnar
> 
> 
> 
> 
>> Am So., 7. Nov. 2021 um 21:49 Uhr schrieb Brandon Brown <
>> bran...@bbrownsound.com>:
>> 
>> I like the idea of a select number of SMTs being offered and supported out
>> of the box. The addition of SMTs via this process is nice because it allows
>> for a rich set to be supported out of the box and without the need for
>> extra work to deploy.
>> 
>> Perhaps this is a spot where the community could express the interest of
>> additional SMTs which maybe are available via an open source library and if
>> enough usage occurs there could be a path to fold into the Kafka project at
>> large?
>> 
>> Brandon Brown
>> 
>> 
>>>> On Nov 7, 2021, at 1:19 PM, Randall Hauch <rha...@gmail.com> wrote:
>>> 
>>> We have had several requests to add more Connect Single Message
>>> Transforms (SMTs) to the project. When SMTs were first introduced with
>>> KIP-66 (ref 1) in Jun 2017, the KIP mentioned the following:
>>> 
>>>> Criteria: SMTs that are shipped with Kafka Connect should be general
>> enough to apply to many data sources & serialization formats. They should
>> also be simple enough to not cause any additional library dependency to be
>> introduced.
>>>> Beyond those being initially included with this KIP, transformations
>> can be adopted for inclusion in future with JIRA/ML discussion to weigh the
>> tradeoffs.
>>> 
>>> In the 4+ years that we've had SMTs in the project, we've only
>>> enhanced the framework with KIP-585 (ref 2), and fixed the initial
>>> SMTs (including KIP-437, ref 3). We recently have had quite a few
>>> requests to add new SMTs; a few samples of these include:
>>> * https://issues.apache.org/jira/browse/KAFKA-10299
>>> * https://issues.apache.org/jira/browse/KAFKA-9436
>>> * https://issues.apache.org/jira/browse/KAFKA-9318
>>> * https://issues.apache.org/jira/browse/KAFKA-12443
>>> 
>>> Adding new or changing existing SMTs to the Apache Kafka project come
>>> with requirements. First, AK releases are infrequent and necessarily
>>> involve the entire project. Second, adding an SMT is an API change and
>>> therefore requires a KIP. Third, all changes in behavior to SMTs
>>> included in an prior AK release must be backward compatible, and
>>> adding or changing an SMT's configuration requires a KIP. This last
>>> one is also challenging if we're limiting ourselves to truly general
>>> SMTs, since these are notoriously difficult to get right the first
>>> time. All of these aspects mean that it's difficult to add, maintain,
>>> and evolve/improve SMTs in AK. And unless a bug fix is critical, we're
>>> likely not to create a patch release for AK just to fix a bug in an
>>> SMT, simply because of the effort involved.
>>> 
>>> On the other hand, anyone can easily implement their own SMT and
>>> deploy them as a Connect plugin, whether that's part of a connector
>>> plugin or a separate plugin dedicated for one or SMTs. Interestingly,
>>> it's far simpler to implement and maintain custom SMTs outside of AK,
>>> especially since those plugins can be released and deployed in any
>>> Connect runtime version since at least 0.11.0. And if custom SMTs are
>>> maintained in a relatively small project, they can be released often.
>>> 
>>> Finally, KIP-26 (ref 4) specifically rejected maintaining connector
>>> implementations in the AK project. So we have precedence for choosing
>>> not to accept implementations.
>>> 
>>> Given the above, I wonder if the time has come for us to prefer only
>>> maintaining the SMT framework and existing SMTs, and to decline adding
>>> new SMTs.
>>> 
>>> Thoughts?
>>> 
>>> Best regards,
>>> 
>>> Randall Hauch
>>> 
>>> (1)
>> https://cwiki.apache.org/confluence/display/KAFKA/KIP-66%3A+Single+Message+Transforms+for+Kafka+Connect
>>> (2)
>> https://cwiki.apache.org/confluence/display/KAFKA/KIP-585%3A+Filter+and+Conditional+SMTs
>>> (3)
>> https://cwiki.apache.org/confluence/display/KAFKA/KIP-437%3A+Custom+replacement+for+MaskField+SMT
>>> (4)
>> https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=58851767
>> 

Reply via email to