Current state: Draft
Discussion thread: here
JIRA: TDB
Released: target 4.1.0 – effective 5.0.0
Please keep the discussion on the mailing list rather than commenting on the wiki (wiki discussions get unwieldy fast).
Historically, Apache Kafka did provide very generous backward compatibility guarantees. For example, up to Apache Kafka 4.0.0, all older clients could connect to brokers, no matter how old they are, as all RPC versions were supported up to, including, 3.9.x. While Apache Kafka 4.0.0 did drop support for some very old versions, the provided backward compatibility guarantees are still very generous, and the main issue is really, that there is still no official contract. The changes made in Apache Kafka 4.0.0 were backed by individual KIPs only, what is basically some "random patchwork".
For a mature project like Kafka, there should be a clearly defined, and well document contract with users, about what compatibilities are guaranteed. Of course, we can still apply additional exception (ie, maintain something longer, or shorter) based on individual KIPs if there is a need. Nevertheless, having a public "base contract" that we would only diverge from in very specific and rare circumstances would be a great improvement. – In addition, the currently provided backward compatibility guarantees are still very generous, making it hard to maintain the code base, so we should also consider to reduce the guaranteed backward compatibility window, allowing us to stay agile and move faster. While a good backward compatibility story is a great trait, being too generous has the drawback that people don't upgrade their dependencies, running for example ancient client versions against newer brokers, resulting in all sort of issues (it's also a security concern if outdated software is used).
Given that we just release Apache Kafka 4.0.0, it is the perfect time to define this contract now. It would only apply to Apache Kafka 5.0.0, and thus user will have the maximum amount of time to prepare.
The is no direct public interface changes. However, if we agree on a contract, we are allowed to remove support for older versions, ie, upgrade from version X to version Y, or cross component compatibility (ie, use client version X with broker version Y), without the need to do a KIP, if a major release happens. – The agree on contract must be clearly documented in the Kafka webpage.
There is different backward compatibility guarantees we need to consider:
We propose to maintain compatibility across two major version going forward.
Component upgrades:
Client-Server compatibility:
Kafka Connect:
TDB
n/a
The Kafka webpage must be updated, with a dedicate "Backward Compatibility Guarantees" page, explaining the contract, plus showing with concrete versions number what will be supported.
n/a