KEEP - Kotlin Evolution and Enhancement Process
This repository holds proposals for the Kotlin Programming Language.
The proposals themselves are colloquially referred to as KEEPs.
Current KEEPs are listed in issues.
New KEEPs and additions to current KEEPs are submitted as pull requests.
There are also some KEEPs having their own repository for specification and discussions:
|Immutable Collections||repo: kotlinx.collections.immutable||Issues|
How to give feedback
Discussion of ongoing KEEPs is held under their related issues.
Please don't create new issues unless really necessary, let's try to keep discussions in one place.
How to propose
If you only have a vague feature idea, please file a YouTrack issue. Alternatively, share it in the #language-proposals channel in our public Slack (get invite here), or in the Forum's Language design category.
If a discussion in these media has led to a detailed proposal, feel free to submit a pull request with a proposal here. A proposal should describe in detail why the feature is needed, how is it going to be implemented in the compiler and whether any changes will be required in the tooling. Use existing proposals as an inspiration.
We appreciate your work, but can not guarantee that all proposals will be considered soon after submission.
To get under active consideration, a proposal usually need a Shepherd. Proposals are assigned to Shepherds (through the GitHub assignee field) that must be members of the KEEP project on GitHub. Unfortunately, as our resources are limited, a proposal may remain without a Shepherd for an undetermined amount of time. Some KEEPs get Shepherds proposed by the project lead, some don't. In the latter case project members are free to volunteer for the Shepherd role.
Proposal authors may try to convince potential Shepherds to volunteer. It usually helps to get the proposal under active consideration.
Shepherd's responsibilities. The Shepherd is responsible for tracking the feedback and keeping the proposal in check with the discussions. This means that the Shepherd often collaborates with the proposal author on the text of the proposal. The Shepherd also presents the proposal at design meetings and initiates its consideration for a particular language version.
KEEP as a process
We are gradually switching the design of Kotlin to this open process, the details of KEEP will be refined as we go.