DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
Status
Current state: Vote
Discussion thread: https://lists.apache.org/thread/zl9f72wwmdc67cv5x295w8r6p547tzdl
Vote thread: https://lists.apache.org/thread/4jmq4w0871tvd0gv9cppb1jl6d7lfryo
JIRA:
KAFKA-19976
-
Getting issue details...
STATUS
Please keep the discussion on the mailing list rather than commenting on the wiki (wiki discussions get unwieldy fast).
Motivation
The streams-scala module was introduced in Apache Kafka 2.0 (KIP-270) to provide a more idiomatic Scala API for Kafka Streams, but its maintenance now presents more challenges than benefits. This proposal advocates for its removal based on several factors:
Low Adoption: The module has very low usage within the Kafka Streams community. Unique IPs data shows that only 1.33% of developers use the Scala 2.12 artifact, and 4.79% use the Scala 2.13 version.
| kafka-streams | kafka-streams-scala_2.11 | kafka-streams-scala_2.12 | kafka-streams-scala_2.13 | |
| 202501 | 232056 | 127 | 3930 | 12983 |
| 202502 | 229653 | 79 | 3772 | 14392 |
| 202503 | 260768 | 117 | 3477 | 14921 |
| 202504 | 265975 | 66 | 4954 | 16602 |
| 202505 | 353164 | 160 | 5893 | 17017 |
| 202506 | 449788 | 211 | 6311 | 16867 |
| 202507 | 418444 | 53 | 4975 | 14482 |
| 202508 | 250837 | 75 | 2942 | 14201 |
| 202509 | 257662 | 73 | 2893 | 15201 |
| 202510 | 283977 | 73 | 3514 | 16682 |
| 202511 | 258194 | 69 | 3590 | 13109 |
| Total | 3260518 | 1103 | 46251 | 166457 |
| Ratio | 93.84% | 0.03% | 1.33% | 4.79% |
Lack of Support for Latest Scala Versions: The module does not support Scala 3, which was released four years ago. Community discussions around a potential migration have been inactive for a significant time, indicating a lack of momentum to keep the module current with the evolution of the Scala language.
- Lack of Active Maintainers: Analysis of git history shows that while the module has had contributions from various developers, there are no dedicated maintainers. Most recent commits (2023-2025) have been mechanical updates to keep pace with Streams API changes (deprecation removals, API updates) rather than proactive improvements or bug fixes.
Public Interfaces
This proposal impacts the public interfaces contained within the org.apache.kafka.streams.scala package. All classes, objects, and implicit conversions within this package will be deprecated and subsequently removed. The primary Java interfaces in org.apache.kafka.streams will remain unaffected and can still be used from Scala projects.
Proposed Changes
The proposal is to deprecate the streams-scala module in Kafka version 4.3 and completely remove it in version 5.0.
In version 4.3:
Annotate all public classes and methods within the
org.apache.kafka.streams.scalapackage with@deprecated.
Update the module's documentation to clearly state its deprecated status and guide users toward migration.
In version 5.0:
Delete the
streams-scalamodule and all associated source code from the Apache Kafka repository.Remove any references to the module from the official documentation and build files.
Compatibility, Deprecation, and Migration Plan
- Encourage volunteers to maintain this module outside of Apache Kafka. This KIP focuses on deprecation. If any volunteer would like to maintain this module outside of Apache Kafka, please use another KIP for it.
Provide a mapping guide from
streams-scalaAPI to the Java Streams API.Add examples in the Kafka documentation for how to recreate common Scala-DSL patterns in Java.
Word count mapping example. The testShouldCountWords uses streams-scala and testShouldCountWordsJava uses Java library.
Test Plan
The existing tests for the streams-scala module will be removed along with the module itself in version 5.0. No new tests are required, as this KIP proposes the removal of functionality, not the addition of it.
Rejected Alternatives
N/A