Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Flutter 2023 Roadmap @Flutter Forward Extended Korea - 박제창

Flutter 2023 Roadmap @Flutter Forward Extended Korea - 박제창

2023 Flutter Forward Extended Korea
Flutter 2023 Roadmap 박제창
2023년 4월 1일 (토요일)
건국대학교 프라임홀

JaiChangPark

April 01, 2023
Tweet

More Decks by JaiChangPark

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

  3. Dreamus Company
    ● FLO
    ● Iriver
    ● Astell&Kern

    View Slide

  4. View Slide

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

    View Slide

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

    View Slide

  7. 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.

    View Slide

  8. 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.

    View Slide

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

    View Slide

  10. Flaky Tests
    1. Technical debt & team velocity

    View Slide

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

    View Slide

  12. 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

    View Slide

  13. flutter-seoul.com
    Flutter Seoul Discord

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  17. 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
    마이그레이션

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  22. SLSA
    4. Security

    View Slide

  23. 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.

    View Slide

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

    View Slide

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

    View Slide

  26. 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

    View Slide

  27. 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

    View Slide

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

    View Slide

  29. 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~

    View Slide

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

    View Slide

  31. 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.

    View Slide

  32. 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~

    View Slide

  33. 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/#/

    View Slide

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

    View Slide

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

    View Slide

  36. Pixel Shaders
    3D Support
    5. Features

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  43. 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

    View Slide

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

    View Slide

  45. 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

    View Slide

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

    View Slide

  47. 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.

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  51. 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  56. 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

    View Slide

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

    View Slide

  58. 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  62. 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를 위한 오픈소스 호스팅 솔루션이 부재함.
    ■ 서드파티 서비스에 의존하게되는것을 지양

    View Slide

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

    View Slide

  64. Code Push
    8. Non-goals 2023

    View Slide

  65. 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  69. Flutter Web WASM
    flutter.dev/wasm

    View Slide

  70. 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

    View Slide

  71. 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

    View Slide

  72. 잠시만요…

    View Slide

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

    View Slide

  74. ● 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

    View Slide

  75. 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.

    View Slide

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

    View Slide

  77. 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.

    View Slide

  78. THANK YOU!

    View Slide