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