Ktor
Building Asynchronous Servers and Clients in Kotlin
Ktor Roadmap for 2020-2021
For those that aren’t aware of the origins of Ktor, it was started by Ilya Ryzhenkov at JetBrains several years ago mainly inspired by Wasabi and Kara. Since then, it has evolved and is used internally at JetBrains on a number of products, including our newest one Space. Of course, Ktor is also being used quite extensively outside of JetBrains, and every day we learn about more companies and products that are built on top of it.
It has become a core component of the JetBrains family of products, and moving forward we will be investing much more into Ktor.
The year ahead
As a first step, and in an effort to provide more insight to you, we will be sharing our roadmap for the next 12 months. This is based not only on things that we need to address internally, but also on the feedback you have provided us, both directly as well as via the recent survey we ran. Thank you for this!
Onboarding and development experience
One of the aspects that folks like about Ktor is how simple it is to get up and running. We want to make that process even easier. The recent survey we ran showed that many of our users come from different backgrounds that are not necessarily Java/JVM, let alone Kotlin. For them, coming to a whole new ecosystem can be daunting. Our goal is to improve this experience, as well as make it even easier for folks that are already familiar with Kotlin and the JVM to get started with Ktor and the many features it provides.
Beyond this first contact, we also want to improve the overall development lifecycle experience which means amongst other things:
- Improving Feature discoverability and usage for both server and client, including simplifying some of the processes for configuring Features.
- Reviewing and simplifying some of the APIs.
- Providing parity of client and server features to make their usage for microservices scenarios easier.
- Improving testing infrastructure to make testing complex real-world scenarios much easier.
- Facilitating deployment. We want to enable folks to be able to get their applications ready for deployment easily independently of the cloud provider or hosting solution they use.
- Making extensibility as simple as possible. Ktor is known for its powerful extensibility. While creating simple extensions might seem simple, more complex ones require deeper knowledge of how the framework works. We want to address these issues.
- Revamping and reworking the documentation for Ktor. We’re going through all of the documentation and making sure that it is up to date, as well as rewritten and enhanced where necessary. In addition we’ll be moving to a new platform that will provide a much cleaner and more organised navigation.
Commitment and Stability
For the next year, part of our work, beyond features and fixes, is to refactor some of the code internally. We need to remove certain dependencies and functionality that is out of scope for Ktor and really shouldn’t have been there to begin with. This will help with a more maintainable codebase and allow us to move faster with development.
As part of this new era of Ktor, we will be moving to Semantic Versioning to give our users a clear understanding in terms of breaking changes, minor releases, and patches.
We’ll be releasing at a minimum three minor releases per year, and trying to minimise the number of major changes to avoid breaking changes. Of course, should we release a major version, minor releases would be adjusted accordingly.
Any breaking changes will be done via deprecation cycles, in which we’ll mark APIs as deprecated with the corresponding warning, allowing folks time to upgrade, before completely removing the API in the next iteration.
With these changes we not only want to provide a guarantee of stability, but also transparency in our commitment to Ktor.
Obviously this is our long term commitment and not just the upcoming year, but we wanted to take this opportunity to share it with you.
Tooling
We’re committed to providing a great experience when it comes to tooling. We have a lot of ideas in the works for Ktor, including a completely new plugin for IntelliJ IDEA, a brand new project generator, amongst other things. We’ll be sharing more information about this in the coming months.
Next release
Our next release, which is 1.4.0, is targeted for the week of August 17th. This release will be compatible with the upcoming Kotlin 1.4 release. While it does not have any major features, we have been working hard on doing some internal clean-up.
We have tons of ideas around Ktor and where we want to take it. We hope you’ll join us on this journey!
Thank you
Ktor Team