Status
Current state: Adopted
Discussion thread: link
Vote thread: link
JIRA:
- - KAFKA-12930Getting issue details... STATUS (3.0)
-
-
KAFKA-12895Getting issue details...
STATUS
(4.0)
Please keep the discussion on the mailing list rather than commenting on the wiki (wiki discussions get unwieldy fast).
Motivation
We currently build Kafka for 2 Scala versions: 2.12 and 2.13. With the recent release of Scala 3.0 (which uses the same standard library as Scala 2.13), users will soon start asking for projects to support it. Since we have to compile and run the tests on each supported version, there is a non-trivial cost from a development and testing perspective.
Scala 2.12.0 was released in November 2016 and Scala 2.13.0 was released in June 2019. We expect Apache Kafka 3.0 to be released around July/August 2021 and 4.0 will be at least 16 months after that. Given this, we propose to deprecate Scala 2.12 support in Apache Kafka 3.0 and to drop it in Apache Kafka 4.0. Users will have ample time and warning to migrate away from Scala 2.12.
Public Interfaces
None.
Proposed Changes
- Deprecate Scala 2.12 build in Kafka 3.0: update the documentation including downloads page.
- In Kafka 4.0:
- Update
build.gradle
to remove all tasks for Scala 2.12 and remove code inbuild.gradle
anddependencies.gradle
that is conditional on Scala 2.12. - Update Readme not to mention Scala 2.12 as a supported version.
- Remove any other workarounds needed by Scala 2.12.
- Update
Compatibility, Deprecation, and Migration Plan
Users who have not and cannot upgrade to Scala 2.13 and are either using kafka-streams-scala or the kafka core module will have to stick with Kafka 3.x until they can upgrade to one of the more recent Scala versions. Note that the classes in the kafka core module are not public API although many projects use some of the classes for integration tests.
Rejected Alternatives
None.