Hi all, I'd like to propose KIP-478 (https://cwiki.apache.org/confluence/x/2SkLBw).
This proposal would add output type bounds to the Processor interface in Kafka Streams, which enables static checking of a number of useful properties: * A processor B that consumes the output of processor A is actually expecting the same types that processor A produces. * A processor that happens to use a typed store is actually emitting the same types that it is storing. * A processor is simply forwarding the expected types in all code paths. * Processors added via the Streams DSL, which are not permitted to forward results at all are statically prevented from doing so by the compiler Internally, we can use the above properties to achieve a much higher level of confidence in the Streams DSL implementation's correctness. Actually, while doing the POC, I found a few bugs and mistakes, which become structurally impossible with KIP-478. Additionally, the stronger types dramatically improve the self-documentation of our Streams internal implementations, which makes it much easier for new contributors to ramp up with confidence. Thanks so much for your consideration! -John