Current state: Draft

Discussion thread: here

JIRA: here

Please keep the discussion on the mailing list rather than commenting on the wiki (wiki discussions get unwieldy fast).


In our docs, we make statements about the Java versions we support. In the Hardware and OS section, we also have a few statements about the operating systems supported, but we don't actually say anything about the hardware. Even if Kafka is a JVM based software, some of our dependencies like rocksdb, zstd, etc rely on native code so they may not work in all environments.

For years, the Apache Kafka CI only performed tests on x86_64 hardware. Recently, we've received donations of additional platforms and started testing on aarch64 and ppc64le. A s390x machine has also been donated but we're not yet using it. If we are using these resources, and we validate they perform accordingly, we should mark them as supported.

Public Interfaces


Proposed Changes

I propose:
1) Making a statement about the hardware platforms we officially support and run tests on in the Kafka documentation in the Hardware and OS section.
With the infrastructure we have in place today, the statement currently is that we only officially support x86_64. We should also clarify the exact Java and Scala versions we run tests with, currently: Java 8, 11 and 17 and both Scala 2.12 and 2.13.

Regarding the operating system, currently all tests in the Apache CI are performed on Ubuntu. We should also remove the mention to Solaris as it's not a platform the Apache Kafka project currently uses.

2) Defining a process for onboarding new platforms
To support a new platform, the project first needs hardware. Either it is already available in the Apache CI, or it is donated. Once added to the CI, all unit and integration tests must be passing. Due to the many Java and Scala combinations possible, I propose to prioritize testing on the recommended Java and Scala versions. The recommended version should be the oldest non deprecated versions. Currently it is Java 11 and Scala 2.13. If a platform satisfy these requirements, it will be marked as supported in the next minor release and the documentation updated to clearly state it.

We currently only run unit tests on both aarch64 and pp64le, so we should not consider these platforms supported yet. Once switch to run all tests then if this proposal is accepted we can mark them as supported.

Compatibility, Deprecation, and Migration Plan


Rejected Alternatives


  • No labels