Ktor Design Process

Hadi Hariri

Design in the open

Ktor was created as an Open Source project and continues to remain one. During its development, feedback from the community has and continues to be fundamental, and very much appreciated.

We’d like to take this to the next step by having all our design decisions in the open. The process will work as follows:

Step 1

We create a ticket on YouTrack of type Design, and in it we’ll lay out:

Description of the issue

What it is that we’re addressing. Is it a new API? Is it improvements on existing APIs? Is it internal architecture?

Current State

If applicable, we outline the current state.

Proposed Solution

Proposed solution, highlighting

  • If the solution has API changes – which these will be.
  • Pros and Cons

Agreed Solution

Once the discussion has taken place, and the agreed solution has been reached, it will be provided it in this segment.

Step 2

The ticket will remain open for 10 working days during which team the core Ktor team and members of the community can share their feedback.

Step 3

After the 10 days have passed, a design decision should be made. Once done, the Agreed Solution section should be updated.

Design meetings

While it may be the case that the Core team will hold a design meeting, we will try as much as possible to keep all discussions on the ticket, for full transparency.
If we do have a meeting, we’ll update the ticket with the corresponding outcome.

Being notified of Design questions

If you’d like to be notified on Design tickets, you can configure YouTrack to receive notifications for this type of ticket. Additionally we’ll aim to raise these tickets in the Ktor Channel on Kotlin Slack.

This won’t be Design by Committee

We generally do not believe in design by a committee, nor do we believe in Ivory Towers, where we make design decisions without input from our users.

The goal of this process is to be transparent, get feedback and make sure that we cover scenarios we may not have thought of. However, please understand that the ultimate decision will always be that of the core team. Having said that, any decision we make, we need to be able to justify to you, our users.

Finally, as a user, you’re free to continue to make suggestions that can be filed either as a bug or a feature. If needed, the core team will create the corresponding design ticket.