Kotlin Bazel Roadmap

This document describes the major release milestones for the Kotlin Bazel Rules. There are three major pillars that we are focused on when developing the Kotlin rules - Performance, Features, and Developer Experience - and for each milestone we list the main items for each pillar. Progress on each item is tracked via an issue.

If you have feedback on this roadmap (including feature and reprioritization requests) please open an issue or comment on the existing one.

Kotlin 1.3 (est. mid 2019)

The existing Kotlin rules only support up to version 1.2. The primary goal of this release is to bring preliminary 1.3 support to Bazel. We will seek to provide a migration path for users of the existing rules, with the intention of 1.3 eventually becoming the master branch. This includes documenting the differences between the rulesets, and providing migration tooling and support.

Performance

  • Compilation avoidance for non-structural changes to dependencies

Features

  • Support android_instrumentation_test on Linux and macOS
  • Support building and testing on Google Cloud Platform Remote Build Execution
  • Support for ktlint
  • Simplified package and dependency management
  • Improve Android interoperability

Developer Experience

  • Document major differences between the rulesets
  • Documentation for Kotlin with Bazel compatibility across Windows, macOS, Linux
  • Stable and reliable CI
  • Sample projects

XPlat (est. late 2019)

The goal for the XPlat release is to provide a stable cross-platform (XPlat) experience for developers. We intend to provide first class Kotlin/Native support for Android and iOS, and collaborate with the community to add additional target platforms. We also plan to deliver performance improvements for build speed and binary size.

Performance

  • Implement persistent workers for faster compilation
  • Reduce output binary sizes

Features

  • Stable Kotlin/Native support for Android and iOS
  • Support bazel coverage for all test rules
  • Support for Android Lint

Developer Experience

  • Documentation and guides for writing a cross platform app