Status
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).
Motivation
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 on all environments.
For years, the Apache Kafka CI only performed tests on x86_64 hardware. Recently, we've received donation of additional platforms and started testing on aarch64 and ppc64le. A s390x machine has also been donated but we're not yet using it.
Public Interfaces
None
Proposed Changes
I propose:
1) Making a statement about the hardware platforms we officially support 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 and that we test it with Java 8, 11 and 17 and both Scala 2.12 and 2.13. All tests 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 which 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.
Compatibility, Deprecation, and Migration Plan
None
Rejected Alternatives
None