Slide 1

Slide 1 text

Sebastiano Poggi Chris Sinco @[email protected] @[email protected] Meet Jewel Create IDE plugins in Compose

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

IntelliJ Platform plugins

Slide 4

Slide 4 text

IntelliJ Platform Plugins

Slide 5

Slide 5 text

plugins.jetbrains.com/docs Gradle plugin Platform APIs Swing

Slide 6

Slide 6 text

Anyone knows Swing in here?

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

Sure, you could.

Slide 9

Slide 9 text

Sure, you could. But.

Slide 10

Slide 10 text

Sure, you could. But. Obsolete model Little documentation No community & support API didn’t age well Prevents best practices

Slide 11

Slide 11 text

Multiplatform What about using Compose?

Slide 12

Slide 12 text

Compose Multiplatform Supports Desktop and iOS and web

Slide 13

Slide 13 text

Supports Desktop (and iOS and web) Compose Multiplatform

Slide 14

Slide 14 text

Supports Desktop (and iOS and web) Works in the IntelliJ Platform Modern and easy to use Why isn’t it already being used? Compose Multiplatform

Slide 15

Slide 15 text

Material Design? Compose Multiplatform

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

Not optimized for desktop Not consistent with IntelliJ Material Design? Compose Multiplatform

Slide 20

Slide 20 text

Introducing Jewel !

Slide 21

Slide 21 text

Jewel is a Compose for Desktop implementation of the IntelliJ New UI design system Int UI. Built on Compose Foundation Limited to desktop for now

Slide 22

Slide 22 text

Jewel is a Compose for Desktop implementation of the IntelliJ New UI design system Int UI. Built on Compose Foundation Limited to desktop for now Check it out!

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

Jewel was born out a hackathon at JetBrains, spurred by the Toolbox team.

Slide 26

Slide 26 text

Jewel has three parts.

Slide 27

Slide 27 text

Jewel has three parts. Core Foundation (components, styling primitives) Int UI theme Standalone theme of the IntelliJ New UI Swing bridge Bridge to the IntelliJ Platform for IDE plugins

Slide 28

Slide 28 text

needs special tricks Running in the IDE

Slide 29

Slide 29 text

The Bridge™

Slide 30

Slide 30 text

How? Mostly reverse engineering

Slide 31

Slide 31 text

How? Not trivial! Mostly reverse engineering

Slide 32

Slide 32 text

How? Not trivial! Mostly reverse engineering Replicate IJP magic

Slide 33

Slide 33 text

How? Not trivial! Mostly reverse engineering Replicate IJP magic Reuse over reimplement

Slide 34

Slide 34 text

How? Not trivial! Mostly reverse engineering Goal: consistency Replicate IJP magic Reuse over reimplement

Slide 35

Slide 35 text

How? Not trivial! Mostly reverse engineering Goal: consistency Replicate IJP magic Reuse over reimplement Specs ! implementation

Slide 36

Slide 36 text

How? Not trivial! Mostly reverse engineering Goal: consistency “Swing compat” mode Replicate IJP magic Reuse over reimplement Specs ! implementation

Slide 37

Slide 37 text

How? Not trivial! Mostly reverse engineering Goal: consistency “Swing compat” mode Replicate IJP magic Reuse over reimplement Specs ! implementation

Slide 38

Slide 38 text

expect breaking changes Whatever Cancel Warning The Jewel library is not prod level yet. Do you still want to use it?

Slide 39

Slide 39 text

expect breaking changes

Slide 40

Slide 40 text

expect breaking changes No API stability yet Immature tooling Missing features

Slide 41

Slide 41 text

Don’t run away yet!

Slide 42

Slide 42 text

Demo time!

Slide 43

Slide 43 text

Looking forward

Slide 44

Slide 44 text

Package Search

Slide 45

Slide 45 text

Studio Bot

Slide 46

Slide 46 text

Android Profilers

Slide 47

Slide 47 text

What’s happening NOW Piloting with several teams Across JetBrains and Google Working with IntelliJ Platform Supporting Jewel and Compose for Desktop

Slide 48

Slide 48 text

What’s happening LATER Focus on core Stabilize API, complete v1 catalog

Slide 49

Slide 49 text

How to get started kotlinlang Slack #jewel channel GitHub github.com/JetBrains/jewel

Slide 50

Slide 50 text

Why Jewel Better DevEx  Better UX Modern language and ecosystem Ability to iterate and debug faster Higher UI fidelity and quality

Slide 51

Slide 51 text

Thank you. Sebastiano Poggi Chris Sinco @[email protected] @[email protected]