Ktor
Building Asynchronous Servers and Clients in Kotlin
Ktor Design Process
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.