Status

Current state: Adopted

Discussion threadlink

Vote threadlink

JIRA

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 in build.gradle and dependencies.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.

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.

  • No labels