Kotlin logo

Kotlin

A concise multiplatform language developed by JetBrains

Kotlin

The Evolution of the Kotlin Language and How You Can Contribute

Kotlin’s evolution is significantly influenced by its active community. From early ideas to the final features, it’s shaped by feedback, discussions, and real-world use cases. We call this process KEEP – the Kotlin Evolution and Enhancement Process.

To keep you informed about what’s coming next, we’ve created the new Kotlin Language Features and Proposals page. It’s your go-to resource for exploring upcoming language features, tracking their status, and learning how you can provide input.

In this post, we’ll walk you through how KEEP works and how you can participate in shaping the future of Kotlin.

What is KEEP?

KEEP is a process for managing the introduction of new features to Kotlin. It ensures that every feature is well-designed, reviewed by experts, and supported by community input before it becomes an integral part of Kotlin. New feature proposals – referred to as KEEP documents – cover both the language features and improvements in the standard library.

The goals of KEEP

KEEP has a few key goals:

  • Efficiency: To move smoothly from idea to implementation.
  • Transparency: To make the process clear and visible to both the Kotlin team and the community, while also setting clear expectations for everyone involved.
  • Collaboration: To engage the Kotlin community in discussions about new features.

The KEEP process consists of several stages that a feature must go through before it’s fully integrated into Kotlin. You can find all of the language features that we’re working on and their current states of progress on the Kotlin language features and proposals page.

Kotlin Language Feature Development Stages

0. Exploration and Design

The process starts when the Kotlin team selects a specific feature for potential addition to the language or to the standard library. At this stage, engineers and designers start to explore potential feature applications and use cases. They investigate how the feature might look, how well it plays with the other ones, and estimate if the feature brings enough additional value to be introduced. Once the idea is validated, and a consensus within the Kotlin team is reached, a draft KEEP document is created detailing the key aspects of the feature.

How you can get involved: Share potential use cases where you see the feature as being useful. This helps us to understand features’ potential impact on real-world scenarios and to define requirements. You can do this via comments on YouTrack issues of the corresponding feature or by participating in discussions in the #language-proposals channel on the Kotlin public Slack (get an invite here). Voting or commenting on other feature proposals on our YouTrack is also welcomed!

1. Public Review

After reaching a consensus within the Kotlin team, the KEEP document is opened up for public feedback. This is when things get more exciting – the community can now weigh in on the proposal.

How you can get involved: The list of all active KEEP documents is represented on the Language Features and Proposals page. Each topic includes links to the relevant GitHub and YouTrack issues, where you can share your feedback and join the discussions. 

2. Planning and Implementation

If the proposal passes the public review stage, it moves into the decomposition, planning, and implementation phase. 

This is where the Kotlin teams outline the roadmap for implementing and integrating the feature into different components, like compiler backends, libraries, and IDEs. 

3. In Preview

Once the feature is implemented, it’s released under a feature flag. This means developers can try it out in their projects by enabling the feature flag. Feedback during this phase helps catch any issues with performance, compatibility, or usability.

How you can get involved: Enable the feature in your projects and share feedback by creating YouTrack issues

4. Stable Release

After one or several preview phases, the feature enters the stable release stage. At this point, it’s part of Kotlin, with backward compatibility guarantees and full support in IDE and core libraries.

How you can get involved: Report any bugs and share your feedback using the new feature through YouTrack tickets.

Revoked Features

Sometimes, features are re-evaluated based on ongoing feedback. For example, context receivers were initially introduced in an experimental state but were later replaced with context parameters after the feedback phase, which enabled the team to improve the original design.

Summary: Contribute at Every Stage

KEEP gives you a voice in Kotlin’s evolution. Whether you’re providing feedback on a proposal or preview feature, your input directly impacts the future of the language. Here’s the summary of how you can get involved at every stage of the process:

  • Exploration & Design: Share use cases on YouTrack or in #language-proposals on the Kotlin Slack (get an invite here).
  • Public Review: Give feedback on KEEP documents listed on the Language Features and Proposals page through a corresponding GitHub issue.
  • In Preview & Stable Release: Test preview features, report issues, and share feedback on stable features through new YouTrack tickets. 

Stay involved, and let’s keep building a language that solves real-world challenges for developers like you!

image description