Slide 1

Slide 1 text

Flutter 2023 Roadmap 박제창, 드림어스컴퍼니

Slide 2

Slide 2 text

박제창 (Dreamwalker) ● Dreamus Company ● Flutter Seoul - Organizer ● GDG Golang Korea - Organizer ● Github: JAICHANGPARK ● Twitter: @jaichangpark 소개

Slide 3

Slide 3 text

Dreamus Company ● FLO ● Iriver ● Astell&Kern

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

Agenda Technical debt and team velocity Performance Quality Security Features Research 1 2 3 4 5 6 Releases 7 Non-goals 8

Slide 6

Slide 6 text

Flutter Roadmap? https://roadmap.sh/flutter

Slide 7

Slide 7 text

Breakthrough graphics performance Seamless integration for web and mobile Early to new and emerging architectures Continued focus on developer experience New directions for Flutter: four themes of ongoing investment Disclaimer: This is a preview of features in development, planned to release over the next 12-24 months.

Slide 8

Slide 8 text

Breakthrough graphics performance Seamless integration for web and mobile Early to new and emerging architectures Continued focus on developer experience New directions for Flutter: four themes of ongoing investment Disclaimer: This is a preview of features in development, planned to release over the next 12-24 months.

Slide 9

Slide 9 text

● 가장 중요하게 생각하는것: 프로젝트의 전반적인 속도를 높이는것. ○ flaky tests와 같은 기술부채 감소 ○ 새로운 사람들이 팀에 합류하여 프로세스를 개선하는것 ○ 생산성을 보다 따르게 높이는것 1. Technical debt & team velocity 기술부채와 팀 속도

Slide 10

Slide 10 text

Flaky Tests 1. Technical debt & team velocity

Slide 11

Slide 11 text

● Velocity 이슈들을 제기하거나 문서화하고 문제를 해결할 수 있는 팀원을 위한 정기 미팅을 시작(진행)할 예정 ● 정기 미팅은 Discord상에서 공지 예정 ○ https://discord.gg/BS8KZyg ○ https://github.com/flutter/flutter/wiki/Chat 1. Technical debt & team velocity 기술부채와 팀 속도

Slide 12

Slide 12 text

1. Technical debt & team velocity Access: 2023-03-27 Access: 2023-03-27 Issues 11,326 Open 68,854 Closed PR 204 Open 42,394 Closed

Slide 13

Slide 13 text

flutter-seoul.com Flutter Seoul Discord

Slide 14

Slide 14 text

● issue backlog 검토 ● 더 이상 사용되지 않거나 실행할 수 없는 issue 종결 ● 나머지 issue의 우선 순위를 지정하기위한 시간할애 1. Technical debt & team velocity 기술부채와 팀 속도

Slide 15

Slide 15 text

1. shader compiler jank를 완벽하게 제거하는것 ○ iOS부터 시작해서 Android와 데스크톱 플랫폼으로 확장 2. Web 성능 측면 ○ WebAssembly(wasm) 지원 3. Multi-threading rendering Flutter 성능 측면 2. Performance

Slide 16

Slide 16 text

1. 플러터 앱 다운로드 사이즈 감소 2. Custom shader의 성능 향상 3. VM 측면 ○ Memory allocation 전략 성능향상 ○ 앱 시작 속도에 대한 성능향상 ○ 반응성에 대한 성능향상 Flutter 성능 측면 2. Performance

Slide 17

Slide 17 text

1. Accessibility (접근성) ○ Flutter 애플리케이션에 쉽게 접근할 수 있도록 지속적 투자 예정 ○ 모든 플랫폼에서 접근성 지원의 품질 개선 2. Documentation (문서화) ○ 버그 수정, 소규모 패치의 형태로 이루어질 예정 품질 3. Quality 3. Platform ○ 빠르게 변화하는 Android, iOS에 대한 지원 ○ iOS: ■ Cupertino Widget + Widget 수 증가 ○ Android: ■ predictive back gesture ■ Android handwriting input ■ Camera플러그인 CameraX API 마이그레이션

Slide 18

Slide 18 text

Android predictive back gesture 3. Quality https://developer.android.com/guide/navigation/predicti ve-back-gesture?hl=ko#dev-option

Slide 19

Slide 19 text

Android predictive back gesture 3. Quality https://github.com/flutter/flutter/issues/109513 Access: 2023-03-27

Slide 20

Slide 20 text

Android handwriting input 3. Quality https://github.com/flutter/flutter/issues/115607 Access: 2023-03-27

Slide 21

Slide 21 text

1. SLSA-3 달성을 목표 ○ 2022년 SLSA-2 달성 2. 2024년에는 SLSA-4를 목표 3. Flutter Package & App 개발자의 보안 동일성 ○ 동일한 수준의 보안을 달성 4. Security 보안과 SLSA(Supply chain Levels for Software Artifacts)

Slide 22

Slide 22 text

SLSA 4. Security

Slide 23

Slide 23 text

SLSA 4. Security SLSA is a set of incrementally adoptable security guidelines, established by industry consensus. The standards set by SLSA are guiding principles for both software producers and consumers: producers can follow the guidelines to make their software more secure, and consumers can make decisions based on a software package’s security posture. SLSA’s four levels are designed to be incremental and actionable, and to protect against specific integrity attacks. SLSA 4 represents the ideal end state, and the lower levels represent milestones with corresponding integrity guarantees.

Slide 24

Slide 24 text

SLSA 4. Security https://opensource.googleblog.com/2023/03/flutter-cocoon-achieves-slsa-level-3.html

Slide 25

Slide 25 text

1. Popularity ○ 이슈의 👍(“thumbs-up”)수가 얼마나 있는지 확인 ○ 우선순위를 정하는데 도움 2. Parity and Portability ○ 1개의 플랫폼에서 기능을 지원한다면, 어느 플랫폼에서도 지원할 수 있는것이 중요 3. Supporting some other effort ○ 예) 성능 향상을 가능하게 하는 새로운 기능 Feature를 선정하는 3가지 동기부여 요소 5. Features

Slide 26

Slide 26 text

1. Custom asset transformers, because they enable some performance improvements. 2. Efficient 2D scrolling widgets (e.g. tables and trees), to improve the performance of applications with this kind of interface. 3. Multiple windows, especially for desktop platforms, because this is a very highly requested feature. 4. Platform Views on macOS and Windows, by popular demand. 5. Drag and drop, also by popular demand. 6. Wireless debugging on iOS, our second-most-requested feature. 7. Custom "flutter create" templates, which makes it much easier for third-parties (e.g. the Flame engine) to bootstrap developers. 8. Supporting element embedding (see also #32329), which allows Flutter content to be added to any standard web
, by popular demand. 5. Features

Slide 27

Slide 27 text

5.2. Efficient 2D scrolling widgets (e.g. tables and trees), to improve the performance of applications with this kind of interface. 5. Features https://github.com/orgs/flutter/projects/32/views/1

Slide 28

Slide 28 text

Preview: Two-dimensional scrolling in Flutter https://youtu.be/UDZ0LPQq-n8

Slide 29

Slide 29 text

5.3. Multiple windows, especially for desktop platforms, because this is a very highly requested feature.aq 5. Features https://github.com/flutter/flutter/issues/30701 2019~

Slide 30

Slide 30 text

Preview: Multiple windows on desktop https://www.youtube.com/watch?v=vtB-teu57vw https://www.youtube.com/watch?v=vtB-teu57vw

Slide 31

Slide 31 text

5.3. Multiple windows, especially for desktop platforms, because this is a very highly requested feature.aq 5. Features https://docs.flutter.dev/release/breaking-changes/window-singleton The window singleton is deprecated In preparation for supporting multiple views and multiple windows, the window singleton has been deprecated. Code previously relying on the window singleton needs to look up the specific view it wants to operate on via the View.of API or interact with the PlatformDispatcher directly.

Slide 32

Slide 32 text

5.5. Drag and drop, also by popular demand. 5. Features https://github.com/flutter/flutter/issues/30719 https://github.com/flutter/flutter/issues/30719#issuecomment-901185947 2019~

Slide 33

Slide 33 text

5.8. Supporting element embedding (see also #32329), which allows Flutter content to be added to any standard web
, by popular demand. 5. Features https://github.com/flutter/flutter/issues/118481 https://flutter-forward-demos.web.app/#/

Slide 34

Slide 34 text

Material 3? 5. Features https://github.com//flutter/flutter/issues/91605 https://flutter.github.io/samples/web/material_3_demo/#/ Access: 2023-03-28

Slide 35

Slide 35 text

Impeller 5. Features Flutter Forward: Impeller side-by-side demo

Slide 36

Slide 36 text

Pixel Shaders 3D Support 5. Features

Slide 37

Slide 37 text

https://youtu.be/goL7tvLQ7Dw?t=4429 https://www.youtube.com/watch?v=vtB-teu57vw

Slide 38

Slide 38 text

GraphX - Fly Dash! Demo https://www.youtube.com/watch?v=T_SkP68BXSY https://www.youtube.com/watch?v=vtB-teu57vw

Slide 39

Slide 39 text

● 1. Adaptive Layout ○ 많은 개발자의 니즈. ○ 인터페이스를 여러번 구현하지 않고 복수의 플랫폼을 지원하는 것 ● 2. New graphics backend ○ 3D를 Flutter Scenes에 통합 ○ 2023년에는 3D 관련 실험/연구를 진행 예정 ○ The low-level dart:ui API 및 새로운 shader 기능개선 내부에서 연구되고 있는것 6. Research

Slide 40

Slide 40 text

● 3. Wide Color Gamut Support ● 4. ICU4C에서 ICU4X로 마이그레이션 ○ Rust-based ICU Backend ● 5. Dart의 새로운 기능을 활용한 Flutter 업데이트 ○ Record & Pattern을 사용가능하도록 API 업데이트 ○ RISC-V 지원하기 위한 toolchain 업데이트 ○ 플러그인을 위한 새로운 FFI 기능 내부에서 연구되고 있는것 6. Research

Slide 41

Slide 41 text

Wide Gamut Color Support 6. Research https://github.com/flutter/flutter/issues/55092 2020~

Slide 42

Slide 42 text

Wide Gamut Color Support 6. Research 2022.02 https://github.com/flutter/engine/pull/39111 ● iOS 먼저 사용해 볼 수 있음. ● Beta 채널 또는 master 채널

Slide 43

Slide 43 text

ICU4X 6. Research ● 모든 플랫폼의 빌드 파이프라인데 Rust언어를 포함하는 것 ● Engine과 Dart FFI 패키지간 Rust 코드를 공유하는 방법 ● 각 패키지들의 바이너리 코드에 대한 tree-shaking 방법 https://icu4x.unicode.org/doc/icu/ https://github.com/unicode-org/icu4x Unicode ICU4X 2022

Slide 44

Slide 44 text

Rust? 6. Research ● 2006년 Mozilla Research의 Graydon Hoare가 시작한 프로젝트에서 시작 ● 2010년 공식 발표 ● https://www.rust-lang.org/ https://www.rust-lang.org/

Slide 45

Slide 45 text

RISC-V 6. Research The ClockworkPi DevTerm R-01, an experimental RISC-V computer, running a Dart console app. https://medium.com/flutter/whats-next-for-flutter-b94ce089f49c

Slide 46

Slide 46 text

● 2023년 중에 4번의 Stable 배포, 12번의 Beta 배포 예정 ● 2023년에는 새로운 기능을 Stable 버전이 아닌 Beta 채널에서 사용할 수 있도록 ○ stable채널에서 기다리기 힘들어요 ○ Beta채널을 이용해보세요~ 7. Releases Flutter 출시계획

Slide 47

Slide 47 text

The road to Dart3 7. Release ● Around January/February 2023: Dart 3 alpha released. ● Around March/April 2023: Dart 3 beta released. ○ This release previews the new features in Dart 3. ● Around mid 2023: Dart 3 stable released. ○ Sound null safety becomes the only supported mode.

Slide 48

Slide 48 text

The road to Dart3 7. Release https://github.com/dart-lang/language/issues/546 2023-03-29

Slide 49

Slide 49 text

🔮 2022년 12월 23년 1월 Flutter Forward Flutter 3.7 (적중) 2023년 4월 23년 5월 10일 Google I/O Flutter 4.0 Dart 3 stable (과연?)

Slide 50

Slide 50 text

● Do you know… ● Flutter Popular Issues? 올해 목표하지 않는것들. 8. Non-goals

Slide 51

Slide 51 text

The list of most popular issues 8. Non-goals Access: 2023-03-27 https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc

Slide 52

Slide 52 text

기술적으로 실행이 불가능하거나 다루기 힘들기 때문

Slide 53

Slide 53 text

● 1. Web의 Hot Reload 기능 ○ 현재 플러터 팀의 모든 Web Compiler 전문가들은 Wasm (WebAssembly)지원을 위한 작업을 진행 중. ● 2. Built-in 지원 ○ Apple Watch ○ Android Wear ○ Automotive (IVI와 같은 자동차 플랫폼) 올해 목표하지 않는것들. 8. Non-goals

Slide 54

Slide 54 text

Hot Reload on web 8. Non-goals https://github.com/flutter/flutter/issues/53041 ● 현재 이 이슈를 같이 작업할 Volunteered 가 없음. ● 장기적인 Web 관련 작업은 wasm에 초점을 맞추고 있기 때문 ● 곧 해결될 것으로 보이지 않음. ● 기술적으로 어렵고 미묘한 문제 2020

Slide 55

Slide 55 text

Built-in System - Automotive 8. Non-goals https://github.com/flutter/flutter/issues/26801 2019

Slide 56

Slide 56 text

Built-in System - Automotive 8. Non-goals ● Apple CarPlay는 Oğuzhan Atalay가 만든 flutter_carplay를 추천 ○ CarPlay API 제어를 위한 Flutter API를 제공 ○ Apple의 API는 템플릿 베이스이다. (Apple's API is template based) ○ Flutter의 가치를 발휘하지 어려움. (렌더링 엔진, 위젯 프레임워크, 플랫폼 중립성 등) ● Android Auto의 경우도 동일 ● Oğuzhan Atalay와 함께 협업하여 작업하거나 새로운 플러그인을 만들기를 권장 ● CarPlay와 Android Auto가 직접적으로 화면에 픽셀을 그리는 방식을 https://github.com/flutter/flutter/issues/26801#issuecomment-1013565542

Slide 57

Slide 57 text

Built-in System - Apple Watch 8. Non-goals https://github.com/flutter/flutter/issues/28901 https://github.com/flutter/flutter/issues/47928 2019

Slide 58

Slide 58 text

Built-in System - watchOS / tvOS 8. Non-goals ● It would involve code changes in the buildroot, and some changes to Dart and Skia ○ if we aren't totally off Skia and onto Impeller by then ● Flutter 엔진에서 일부 리팩토링 작업을 진행중 ○ macOS, iOS 및 tvOS 또는 watchOS와 같은 embedders 사이에서 더 많은 코드를 공유할 수 있도록 개선할 예정 ● Xcode뿐만 아니라 flutter_tool에서도 작동하도록 하기 위해서는 무선 디버깅이 필수적 ○ TV에 USB 테더 옵션이 없음. ● watchOS SDK는 tvOS SDK보다 iOS와 더 다르므로 Flutter 임베더, WKApplication 수명 주기 이벤트 등에서 WatchKit 의미 체계도 구현필요. https://github.com/flutter/flutter/issues/26801#issuecomment-1013565542

Slide 59

Slide 59 text

Built-in System - Android Wear 8. Non-goals https://github.com/flutter/flutter/issues/2057 2016

Slide 60

Slide 60 text

● 3. Code Push 기능 ● 4. Web의 SEO 지원 ● 5. homebrew를 통한 설치 지원 올해 목표하지 않는것들. 8. Non-goals

Slide 61

Slide 61 text

Code Push 8. Non-goals https://github.com/flutter/flutter/issues/14330 2018 https://github.com/eseidelGoogle

Slide 62

Slide 62 text

Code Push 8. Non-goals 2019 ● Modular application delivery ● Dynamic extension loading ● Dynamic patching (2019년 Roadmap에 존재했음.) ○ 1. 스토어 정책 + iOS에서 원하는 퀄리티를 만족하지 못 할거 같음. (“it would be too slow”) ○ 2. 보안 문제 ■ Malware vectors ○ 3. patching applications를 위한 오픈소스 호스팅 솔루션이 부재함. ■ 서드파티 서비스에 의존하게되는것을 지양

Slide 63

Slide 63 text

Code Push 8. Non-goals 2022 ● 2019년 이후에도 내부에서 Research는 계속 진행 ● stores(Google Play, App Store등)의 정책이 엄격해 짐 ○ JS 기반 솔루션이 스토어상에서 환영받고 있지 못함 ○ 상황상..make sense하지 못 한거 같음 ● React Native의 경우 코드 푸시 솔루션을 직접 제공하지 않음 ○ Microsoft에서 패키지를 제공하고 있음 ○ 이슈 데이터베이스에 거절된 앱들에 대한 많은 문제보고가 있음 ● package:rfw와 같은 UI-push 대체 솔루션이 있음. ○ 코드푸시를 대채 하기는 어려움

Slide 64

Slide 64 text

Code Push 8. Non-goals 2023

Slide 65

Slide 65 text

Flutter Web WASM Flutter, Dart, and WASM-GC: A new model for Web applications by Kevin Moore @ Wasm I/O 2023 https://youtu.be/Nkjc9r0WDNo

Slide 66

Slide 66 text

Flutter Web WASM FLUTTER, DART, AND WASM-GC: A NEW MODEL FOR WEB APPLICATIONS

Slide 67

Slide 67 text

Flutter Web WASM FLUTTER, DART, AND WASM-GC: A NEW MODEL FOR WEB APPLICATIONS

Slide 68

Slide 68 text

Flutter Web WASM FLUTTER, DART, AND WASM-GC: A NEW MODEL FOR WEB APPLICATIONS

Slide 69

Slide 69 text

Flutter Web WASM flutter.dev/wasm

Slide 70

Slide 70 text

Let flutter be installable via homebrew 8. Non-goals https://github.com/flutter/flutter/issues/14050 ● 2022 Update ● Latest status here is that nobody working on Flutter's release processes currently has expressed an interest in implementing this. ● 기여 ○ Discord: ○ #hackers-releases 2018 https://namu.wiki/w/%EA%B0%9C%EA%B7%B8%EB%A7%8C%ED%99%94%20%EB%B3%B4%EA%B8%B0%20%EC%A2%8B%E C%9D%80%20%EB%82%A0

Slide 71

Slide 71 text

Summary Breakthrough graphics performance Seamless integration for web and mobile Early to new and emerging architectures Continued focus on developer experience Impeller Shaders for web and mobile 3D support Element embedding JNIgen and FFIgen WebAssembly RISC-V Language features Sound null safety Flutter News Toolkit

Slide 72

Slide 72 text

잠시만요…

Slide 73

Slide 73 text

https://medium.com/flutter/flutter-in-2023-strategy-and-roadmap-60efc8d8b0c7 2023 03. 30

Slide 74

Slide 74 text

● State of the market ○ As of January 2023, there are over 700,000 apps in the Play Store that are built with Flutter, and one in five new apps on the Play Store use Flutter ○ Unlike traditional web frameworks, Flutter looks beyond the DOM and JavaScript to a new generation of Canvas and WebAssembly based APIs. Flutter in 2023: strategy and roadmap

Slide 75

Slide 75 text

We Must ● migrate our ecosystem to null safety without fragmentation ● continue to advance Dart tastefully and carefully ● eradicate jank and other performance impediments with minimal customer effort ● deliver unparalleled performance on all platforms ● reduce or eliminate friction when calling system APIs ● build in supply-chain security without impeding non-Google contributors ● build an ecosystem that is self-sustaining ● maintain and grow our reputation for quality ● win a reputation with design agencies and iOS developers ● close API and package divergences between platforms ● grow the diversity of our community ● support or integrate emerging ways of building UI, such as ML code completion and low-code tools.

Slide 76

Slide 76 text

This makes the developer experience one of the most critical aspects of Dart and Flutter. 2023 strategy

Slide 77

Slide 77 text

we’ll shift our focus over 2023 away from stable releases as the primary vehicle for announcing new features and towards beta releases as the proving ground, as Chrome does.

Slide 78

Slide 78 text

THANK YOU!