Ktor - Past, Present, and Future Hadi Hariri @hhariri October 15, - - PowerPoint PPT Presentation

ktor past present and future hadi hariri
SMART_READER_LITE
LIVE PREVIEW

Ktor - Past, Present, and Future Hadi Hariri @hhariri October 15, - - PowerPoint PPT Presentation

Kotlin 1.4 Online Event Ktor - Past, Present, and Future Hadi Hariri @hhariri October 15, 2020 What is Ktor? An OSS Framework Creating Server and Client applications Multiplatform A bit of history Frameworks for Kotlin


slide-1
SLIDE 1

Kotlin 1.4 Online Event @hhariri October 15, 2020

Ktor - Past, Present, and Future Hadi Hariri

slide-2
SLIDE 2

What is Ktor?

  • An OSS Framework
  • Creating Server and Client applications
  • Multiplatform
slide-3
SLIDE 3

A bit of history

slide-4
SLIDE 4

Frameworks for Kotlin

  • Kara - A Ruby on Rails for Kotlin
  • Wasabi - An Express.js for Kotlin
slide-5
SLIDE 5

Ktor

  • Initiated by Ilya Ryzhenkov
  • Inspired by Kara and Wasabi
  • Apart from being a framework, it served to
  • Explore Kotlin as a DSL tool
  • Base for library usage
  • Coroutines to the max
slide-6
SLIDE 6

It caught on…

  • Started being used externally
  • Started being used internally
  • Space decided to go with Ktor
  • Multiple internal projects started using it
  • It started getting external contributions

(Pull Requests)

slide-7
SLIDE 7

But there was a problem…

slide-8
SLIDE 8
slide-9
SLIDE 9

And there were just two “part-time” developers

slide-10
SLIDE 10

Brings us to today

slide-11
SLIDE 11

We have quadrupled our team size!

slide-12
SLIDE 12

Changes we’ve already made

  • Moved to Semantic Versioning
  • New site, new blog. And new Twitter

account (@JetBrainsKtor).

  • Commitment to 3 major/minor releases

a year and monthly patch releases

  • Introducing deprecation cycle
slide-13
SLIDE 13

Ktor on the Server

slide-14
SLIDE 14

fun main() { val server = embeddedServer(Netty, 8080) { routing { get("/") { call.respondText("Hello Ktor!", ContentType.Text.Plain) } } } server.start(wait = true) }

slide-15
SLIDE 15

fun main() { val server = embeddedServer(Netty, 8080) { routing { get("/") { call.respondText("Hello Ktor!", ContentType.Text.Plain) } } } server.start(wait = true) }

slide-16
SLIDE 16

fun main() { val server = embeddedServer(Netty, 8080) { routing { get("/") { call.respondText("Hello Ktor!", ContentType.Text.Plain) } } } server.start(wait = true) }

slide-17
SLIDE 17

fun main() { val server = embeddedServer(Netty, 8080) { routing { get("/") { call.respondText("Hello Ktor!", ContentType.Text.Plain) } } } server.start(wait = true) }

slide-18
SLIDE 18

fun main() { val server = embeddedServer(Netty, 8080) { routing { get("/") { call.respondText("Hello Ktor!", ContentType.Text.Plain) } } } server.start(wait = true) }

slide-19
SLIDE 19

A Ktor Application

. . .

Module Module Module

slide-20
SLIDE 20

A Module

Request Response Routing App Logic

slide-21
SLIDE 21

A Module

Request Response Routing App Logic

Feature

slide-22
SLIDE 22

A Module

Feature

Request Response Routing App Logic

Feature

slide-23
SLIDE 23

Compression

A Module

Request Response Routing App Logic

Encoding

slide-24
SLIDE 24

A Module

Request Response Routing App Logic

Feature

slide-25
SLIDE 25

Demos

slide-26
SLIDE 26

What lies ahead

slide-27
SLIDE 27

What’s in store?

  • Improving of onboarding experience
  • Improving development lifecycle experience

(testing, deployment, etc.)

  • Improving client/server parity
  • Improving extensibility
  • Being attentive to performance
  • Revamping documentation (with compilable samples)
  • Improving tooling
slide-28
SLIDE 28

More at ktor.io

slide-29
SLIDE 29

@hhariri

Thanks! Have a nice Kotlin!